{
  "openapi": "3.1.0",
  "info": {
    "title": "Didnex publisher API",
    "version": "8.27.0",
    "description": "Public publisher integration and own-workspace API only. Session, membership, role and server-key checks still apply.\n\n8.22: Panel accounts must verify their email when requireEmailVerification is enabled (default true). Unverified sessions can read /api/me, resend verification, recover their password and log out; protected panel APIs return 403 email_verification_required. Public SDK installations do not need a panel account or an email.\n\n8.23: Optional direct delivery uses explicit consent and OS notification permission. Android may poll using JobScheduler (minimum 15 minutes; Doze/network may delay). Direct iOS, React Native and web reception is foreground only. Standard FCM/APNs/Web Push remains available for remote background notifications. No instant or force-stopped delivery is guaranteed.\n\n8.24: Push navigation/actions/variants permit HTTP or HTTPS on any domain. No executable schemes or credentials. SDK origins and receipt endpoints still require trusted HTTPS. Operational tools are role-scoped; sandbox never sends real provider traffic."
  },
  "servers": [
    {
      "url": "/",
      "description": "Same installation origin; use the canonical service origin from /api/platform for SDK configuration."
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "summary": "Database readiness",
        "operationId": "get__api_health",
        "responses": {
          "200": {
            "description": "Database and release migration ready",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "const": "ok"
                    },
                    "version": {
                      "const": "3.0.0"
                    },
                    "database": {
                      "const": true
                    },
                    "schemaReady": {
                      "const": true
                    },
                    "brand": {
                      "const": "Didnex"
                    }
                  },
                  "required": [
                    "status",
                    "version",
                    "database",
                    "schemaReady"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/api/me": {
      "get": {
        "summary": "Own account, workspaces and session-bound CSRF",
        "operationId": "get__api_me",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/api/orgs": {
      "post": {
        "summary": "Register an organization",
        "operationId": "post__api_orgs",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Organization"
              }
            }
          }
        }
      }
    },
    "/api/state": {
      "get": {
        "summary": "Organization data and date-bounded reports",
        "operationId": "get__api_state",
        "responses": {
          "200": {
            "description": "Authenticated scoped state. Monetary integers are milli-IRR. Publisher never receives advertiser cost or network fee. Missing denominators and out-of-scope metrics are null. Today is partial. Other state fields are retained.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "report": {
                      "oneOf": [
                        {
                          "$ref": "#/components/schemas/AnalyticsReport"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "formats": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 90,
              "default": 7
            }
          }
        ]
      }
    },
    "/api/settings": {
      "patch": {
        "summary": "Owner updates organization and optional validated Iranian IBAN",
        "operationId": "patch__api_settings",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "phone": {
                    "type": "string"
                  },
                  "iban": {
                    "type": "string",
                    "pattern": "^IR[0-9]{24}$"
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/assets": {
      "post": {
        "summary": "Register a globally unique site domain or app package with a published store URL; apps need no domain or DNS",
        "operationId": "post__api_assets",
        "responses": {
          "201": {
            "description": "Pending media with type-specific verification. App: manual_review, dnsRequired=false. Site: DNS record name/type/value.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "site",
                        "app"
                      ]
                    },
                    "verification": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "id",
                    "type",
                    "verification"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "asset_already_registered: identity reserved globally; no other owner information is exposed"
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Asset"
              }
            }
          }
        }
      }
    },
    "/api/assets/{id}/verify": {
      "post": {
        "summary": "Verify the exact website ownership TXT using server DNS where available and Cloudflare/Google fallback. Apps use manual review.",
        "operationId": "post__api_assets_id_verify",
        "responses": {
          "200": {
            "description": "Verified exact TXT; admin activation is separate",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verified": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "dns": {
                      "$ref": "#/components/schemas/DnsVerification"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden, including email_verification_required for an unverified panel account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "TXT missing/mismatched, changed asset or app DNS not applicable",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verified": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "dns": {
                      "$ref": "#/components/schemas/DnsVerification"
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "No trustworthy DNS answer or SERVFAIL; not proof that TXT is missing",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verified": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "dns": {
                      "$ref": "#/components/schemas/DnsVerification"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-independent-session-required": true,
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        },
        "description": "Ownership verification does not activate inventory. Server DNS is available in the standalone VPS runtime; other deployments use HTTPS DNS. Resolver outages return 503 instead of a false record-not-found result. Exact name/token changes during a lookup return 409 asset_changed. Existing publisher permissions and rate limits apply.",
        "x-verified-email-required": true
      }
    },
    "/api/units": {
      "post": {
        "summary": "Create ad unit on approved verified inventory",
        "operationId": "post__api_units",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Unit"
              }
            }
          }
        }
      }
    },
    "/api/units/{id}": {
      "patch": {
        "summary": "Pause or resume a publisher unit",
        "operationId": "patch__api_units_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "paused"
                    ]
                  }
                },
                "required": [
                  "status"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/keys": {
      "post": {
        "summary": "Owner creates a server key (plaintext returned once)",
        "operationId": "post__api_keys",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 60
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/keys/{id}": {
      "delete": {
        "summary": "Owner revokes a server key",
        "operationId": "delete__api_keys_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/payouts": {
      "post": {
        "summary": "Reserve confirmed publisher balance for bank payout",
        "operationId": "post__api_payouts",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "amount": {
                    "type": "integer",
                    "description": "Toman; minimum is operator-configured"
                  },
                  "idempotencyKey": {
                    "type": "string",
                    "minLength": 16,
                    "maxLength": 100,
                    "pattern": "^[A-Za-z0-9_-]+$",
                    "description": "Reuse the same key and amount for a safe network retry; different payload returns 409"
                  }
                },
                "required": [
                  "amount"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/invites": {
      "post": {
        "summary": "Owner creates account-ID-bound 7-day invitation",
        "operationId": "post__api_invites",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Invite"
              }
            }
          }
        }
      }
    },
    "/api/invites/accept": {
      "post": {
        "summary": "Accept invitation as the verified invited identity",
        "operationId": "post__api_invites_accept",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string"
                  }
                },
                "required": [
                  "token"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/members/{id}": {
      "delete": {
        "summary": "Owner removes non-owner organization member",
        "operationId": "delete__api_members_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/tickets": {
      "get": {
        "summary": "Read own support and privacy requests",
        "operationId": "get__api_tickets",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ]
      },
      "post": {
        "summary": "Create support or privacy request",
        "operationId": "post__api_tickets",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ticket"
              }
            }
          }
        }
      }
    },
    "/api/uploads": {
      "post": {
        "summary": "Upload validated image/MP4 (maximum 20 MiB)",
        "operationId": "post__api_uploads",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  },
                  "width": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "durationMs": {
                    "type": "integer",
                    "description": "Required for video campaign; max 180000"
                  }
                },
                "required": [
                  "file"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/ad/v1/request": {
      "post": {
        "summary": "Issue contextual ad or HTTP 200 noFill; reserve budget",
        "operationId": "post__ad_v1_request",
        "responses": {
          "200": {
            "description": "Filled creative with signed URLs or noFill",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "PublisherKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdRequest"
              }
            }
          }
        }
      }
    },
    "/ad/v1/event": {
      "get": {
        "summary": "Accept idempotent signed measurement event",
        "operationId": "get__ad_v1_event",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "DeliverySignature": []
          }
        ],
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "impression",
                "click",
                "start",
                "firstQuartile",
                "midpoint",
                "thirdQuartile",
                "complete"
              ]
            }
          }
        ]
      },
      "post": {
        "summary": "Accept idempotent signed measurement event",
        "operationId": "post__ad_v1_event",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "DeliverySignature": []
          }
        ],
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "impression",
                "click",
                "start",
                "firstQuartile",
                "midpoint",
                "thirdQuartile",
                "complete"
              ]
            }
          }
        ]
      }
    },
    "/ad/v1/click": {
      "get": {
        "summary": "Signed non-billing redirect to approved HTTPS destination",
        "operationId": "get__ad_v1_click",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "302": {
            "description": "Approved destination with didnex_click_id"
          }
        },
        "security": [
          {
            "DeliverySignature": []
          }
        ],
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/ad/v1/vast": {
      "get": {
        "summary": "VAST 4.2 for a previously issued video delivery",
        "operationId": "get__ad_v1_vast",
        "responses": {
          "200": {
            "description": "VAST XML with ViewableImpression billing",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "DeliverySignature": []
          }
        ],
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/sellers.json": {
      "get": {
        "summary": "Active verified publisher seller transparency",
        "operationId": "get__sellers.json",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "description": "Active approved publishers. Domain is omitted when no verified website domain is available; app-store hostname is never used as publisher business domain."
      }
    },
    "/ad/v1/telemetry": {
      "post": {
        "summary": "Signed SDK load/error diagnostics; no financial event",
        "operationId": "post__ad_v1_telemetry",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {}
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Telemetry"
              }
            }
          }
        }
      }
    },
    "/ad/v1/experiments/enroll": {
      "post": {
        "summary": "Stable randomized experiment enrollment before exposure",
        "operationId": "post__ad_v1_experiments_enroll",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "AdvertiserKey": []
          },
          {
            "PublisherKey": []
          }
        ],
        "parameters": [
          {
            "name": "X-Didnex-Scope",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "serve"
              ]
            },
            "description": "Publisher serve-key experiment calls require this header; omit for advertiser conversions keys."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentEnrollment"
              }
            }
          }
        }
      }
    },
    "/ad/v1/experiments/outcome": {
      "post": {
        "summary": "Record one primary outcome per enrolled participant in either arm",
        "operationId": "post__ad_v1_experiments_outcome",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "AdvertiserKey": []
          },
          {
            "PublisherKey": []
          }
        ],
        "parameters": [
          {
            "name": "X-Didnex-Scope",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "serve"
              ]
            },
            "description": "Publisher serve-key experiment calls require this header; omit for advertiser conversions keys."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentOutcome"
              }
            }
          }
        }
      }
    },
    "/api/growth/{section}": {
      "get": {
        "summary": "Scoped growth workspace, no invented data",
        "operationId": "get__api_growth_section",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "section",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "commerce",
                "quality",
                "diagnostics",
                "experience",
                "optimizer",
                "studio",
                "market",
                "experiments",
                "integrations"
              ]
            }
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 90,
              "default": 7
            }
          }
        ]
      }
    },
    "/api/growth/appeals": {
      "post": {
        "summary": "Appeal a reviewed reversed earning",
        "operationId": "post__api_growth_appeals",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "deliveryId": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string",
                    "minLength": 10,
                    "maxLength": 2000
                  }
                },
                "required": [
                  "deliveryId",
                  "message"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/growth/diagnostics/{id}": {
      "get": {
        "summary": "Inspect actual unit prerequisites and issue 15-minute no-billing diagnostic token",
        "operationId": "get__api_growth_diagnostics_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Inspect actual unit prerequisites and issue 15-minute no-billing diagnostic token",
        "operationId": "post__api_growth_diagnostics_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/growth/policies/{id}": {
      "put": {
        "summary": "Set enforced per-unit UX and category policy",
        "operationId": "put__api_growth_policies_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnitPolicy"
              }
            }
          }
        }
      }
    },
    "/api/growth/listings": {
      "post": {
        "summary": "Publisher explicitly opts an approved unit into market; admin review required",
        "operationId": "post__api_growth_listings",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketListing"
              }
            }
          }
        }
      }
    },
    "/api/growth/listings/{id}": {
      "patch": {
        "summary": "Pause an owned listing and its new direct deliveries",
        "operationId": "patch__api_growth_listings_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/growth/deals": {
      "post": {
        "summary": "Propose fixed-price, budget-capped direct placement deal",
        "operationId": "post__api_growth_deals",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketDeal"
              }
            }
          }
        }
      }
    },
    "/api/growth/deals/{id}": {
      "patch": {
        "summary": "Publisher accepts/rejects proposal; either party may cancel",
        "operationId": "patch__api_growth_deals_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "accepted",
                      "rejected",
                      "cancelled"
                    ]
                  }
                },
                "required": [
                  "status"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/growth/experiments": {
      "post": {
        "summary": "Pre-register owned campaign/unit experiment and observation window",
        "operationId": "post__api_growth_experiments",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Experiment"
              }
            }
          }
        }
      }
    },
    "/api/growth/experiments/{id}": {
      "patch": {
        "summary": "Start, stop recruitment, or close experiment after all observation windows",
        "operationId": "patch__api_growth_experiments_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "observing",
                      "closed"
                    ]
                  },
                  "completeCohortCapture": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "status"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/ad/v1/reward-sessions": {
      "post": {
        "summary": "Publisher server creates a 15-minute one-delivery reward session",
        "operationId": "post__ad_v1_reward-sessions",
        "responses": {
          "200": {
            "description": "Server-only; Origin header is rejected",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PublisherKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardSession"
              }
            }
          }
        }
      }
    },
    "/ad/v1/rewards/verify": {
      "post": {
        "summary": "Verify charged, non-reversed completed video; replay returns the same unique grant, no app credit is applied here",
        "operationId": "post__ad_v1_rewards_verify",
        "responses": {
          "200": {
            "description": "Server-only; Origin header is rejected",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardReceipt"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PublisherKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardVerify"
              }
            }
          }
        }
      }
    },
    "/ad/v1/rewards/ack": {
      "post": {
        "summary": "Publisher confirms its own atomic reward credit; same reference is idempotent, changed reference conflicts",
        "operationId": "post__ad_v1_rewards_ack",
        "responses": {
          "200": {
            "description": "Server-only; Origin header is rejected",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardReceipt"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PublisherKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardAck"
              }
            }
          }
        }
      }
    },
    "/api/account": {
      "get": {
        "summary": "Own persistent account profile and organizations; independent session required",
        "operationId": "get__api_account",
        "responses": {
          "200": {
            "description": "Own profile only",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "account": {
                      "$ref": "#/components/schemas/AccountProfile"
                    },
                    "organizations": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  },
                  "required": [
                    "account",
                    "organizations"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ]
      },
      "patch": {
        "summary": "Update own app display name, contact phone and preferred activity; cannot change login identity or roles",
        "operationId": "patch__api_account",
        "responses": {
          "200": {
            "description": "Saved app profile",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "account": {
                      "$ref": "#/components/schemas/AccountProfile"
                    }
                  },
                  "required": [
                    "account"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountUpdate"
              }
            }
          }
        }
      }
    },
    "/api/account/register": {
      "post": {
        "summary": "Complete profile and create/reuse canonical owned workspace in one transaction; replay does not add balances",
        "operationId": "post__api_account_register",
        "responses": {
          "201": {
            "description": "Completed account and workspace; money starts at zero",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "orgId": {
                      "type": "string"
                    },
                    "existing": {
                      "type": "boolean"
                    },
                    "account": {
                      "$ref": "#/components/schemas/AccountProfile"
                    }
                  },
                  "required": [
                    "orgId",
                    "existing",
                    "account"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "200": {
            "description": "Existing organization reused"
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountRegistration"
              }
            }
          }
        }
      }
    },
    "/api/auth/config": {
      "get": {
        "summary": "Password policy and actual email/MFA capability",
        "operationId": "get__api_auth_config",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthConfig"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/api/auth/register": {
      "post": {
        "summary": "Create independent account, owned workspace and session atomically; email-only password recovery",
        "operationId": "post__api_auth_register",
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "Secure HttpOnly SameSite=Lax host-only session or expired cookie"
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordRegister"
              }
            }
          }
        },
        "description": "Account, workspace, session, hashed one-use verification token and encrypted email outbox are one transaction. Returns no raw verification token. With mandatory verification, missing mail configuration returns 503 mail_not_configured before creating an account. A successful signup still requires the emailed link before panel access."
      }
    },
    "/api/auth/login": {
      "post": {
        "summary": "Authenticate email/password; rotate session token; generic failure",
        "operationId": "post__api_auth_login",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AuthResult"
                    },
                    {
                      "$ref": "#/components/schemas/MfaChallenge"
                    }
                  ]
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "Secure HttpOnly SameSite=Lax host-only session or expired cookie"
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordLogin"
              }
            }
          }
        }
      }
    },
    "/api/auth/recover": {
      "post": {
        "summary": "Removed password recovery key method; always returns 410 email_recovery_required",
        "operationId": "post__api_auth_recover",
        "responses": {
          "410": {
            "description": "Use /api/security/email-reset-request and /api/security/email-reset"
          }
        },
        "security": []
      }
    },
    "/api/auth/activate": {
      "post": {
        "summary": "Consume operator-issued one-use token; preserve legacy account ID and organizations",
        "operationId": "post__api_auth_activate",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "Secure HttpOnly SameSite=Lax host-only session or expired cookie"
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordActivation"
              }
            }
          }
        }
      }
    },
    "/api/auth/password": {
      "post": {
        "summary": "Verify current password and rotate credentials and sessions; no recovery key is issued",
        "operationId": "post__api_auth_password",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "Secure HttpOnly SameSite=Lax host-only session or expired cookie"
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordChange"
              }
            }
          }
        }
      }
    },
    "/api/auth/logout": {
      "post": {
        "summary": "Revoke current session and expire cookie",
        "operationId": "post__api_auth_logout",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "Secure HttpOnly SameSite=Lax host-only session or expired cookie"
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/auth/logout-all": {
      "post": {
        "summary": "Revoke all own sessions and expire cookie",
        "operationId": "post__api_auth_logout-all",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            },
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                },
                "description": "Secure HttpOnly SameSite=Lax host-only session or expired cookie"
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/auth/sessions": {
      "get": {
        "summary": "List own current valid sessions; no tokens, hashes or raw IPs",
        "operationId": "get__api_auth_sessions",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionList"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "description": "Lists active sessions and rememberedDevices for the current account. Tokens and hashes are omitted. A remembered browser may remain listed while its active session is idle."
      }
    },
    "/api/auth/sessions/{id}": {
      "delete": {
        "summary": "Revoke own session only; clear cookie when revoking current session",
        "operationId": "delete__api_auth_sessions_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/auth/mfa-login": {
      "post": {
        "summary": "Complete a five-minute one-use MFA login challenge",
        "operationId": "post__api_auth_mfa-login",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MfaLogin"
              }
            }
          }
        }
      }
    },
    "/api/security": {
      "get": {
        "summary": "Own MFA, verified email and step-up capability",
        "operationId": "get__api_security",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ]
      }
    },
    "/api/security/step-up": {
      "post": {
        "summary": "Reconfirm password and enabled MFA for ten minutes",
        "operationId": "post__api_security_step-up",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StepUp"
              }
            }
          }
        }
      }
    },
    "/api/security/send-verification": {
      "post": {
        "summary": "Queue an encrypted one-use email verification link",
        "operationId": "post__api_security_send-verification",
        "responses": {
          "200": {
            "description": "Queued or already verified",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "queued": {
                      "type": "boolean"
                    },
                    "alreadyVerified": {
                      "type": "boolean"
                    },
                    "expiresAt": {
                      "type": "integer"
                    },
                    "retryAfterSeconds": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "ok"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        },
        "description": "Available to the signed-in unverified account. Queues a link for the current credential version. A 60-second cooldown and three requests per hour apply; 429 verification_cooldown asks the user to wait. Already verified accounts return alreadyVerified:true. No token is returned."
      }
    },
    "/api/security/verify-email": {
      "post": {
        "summary": "Consume a one-use email verification token",
        "operationId": "post__api_security_verify-email",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "minLength": 64,
                    "maxLength": 64
                  }
                },
                "required": [
                  "token"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "description": "Public same-origin link redemption. One use, finite expiry, current credential version and active account are required. Expired, stale or consumed links return 410. Redeeming in another browser unlocks existing sessions after /api/me is refreshed."
      }
    },
    "/api/security/email-reset-request": {
      "post": {
        "summary": "Generic response; queue a reset link only to the registered address of an active password account; prior email verification not required",
        "operationId": "post__api_security_email-reset-request",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/security/email-reset": {
      "post": {
        "summary": "Reset password; preserve MFA and revoke sessions",
        "operationId": "post__api_security_email-reset",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string"
                  },
                  "newPassword": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 128,
                    "description": "Must satisfy the current administrator minimum from /api/auth/config"
                  },
                  "code": {
                    "type": "string",
                    "pattern": "^[0-9]{6}$"
                  },
                  "backupCode": {
                    "type": "string",
                    "description": "One-use private backup code; alternative to TOTP"
                  }
                },
                "required": [
                  "token",
                  "newPassword"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/security/mfa/setup": {
      "post": {
        "summary": "Create an encrypted pending TOTP secret; recent step-up required",
        "operationId": "post__api_security_mfa_setup",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/security/mfa/enable": {
      "post": {
        "summary": "Confirm TOTP and return eight one-use backup codes once",
        "operationId": "post__api_security_mfa_enable",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "pattern": "^[0-9]{6}$"
                  }
                },
                "required": [
                  "code"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/security/mfa/disable": {
      "post": {
        "summary": "Disable MFA with recent step-up and a fresh proof",
        "operationId": "post__api_security_mfa_disable",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "pattern": "^[0-9]{6}$"
                  },
                  "backupCode": {
                    "type": "string",
                    "description": "One-use private backup code; alternative to TOTP"
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/pro": {
      "get": {
        "summary": "Own organization advanced workspaces",
        "operationId": "get__api_pro",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ]
      }
    },
    "/api/pro/notifications": {
      "post": {
        "summary": "Mark organization notifications read",
        "operationId": "post__api_pro_notifications",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/pro/channels": {
      "post": {
        "summary": "Owner creates verified-email or signed-webhook channel; secret returned once",
        "operationId": "post__api_pro_channels",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "email",
                      "webhook"
                    ]
                  },
                  "destination": {
                    "type": "string"
                  },
                  "revenueUpdates": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "kind"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/pro/channels/{id}": {
      "delete": {
        "summary": "Owner disables a notification channel",
        "operationId": "delete__api_pro_channels_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/pro/rules": {
      "post": {
        "summary": "Create real-data alert with a cooldown",
        "operationId": "post__api_pro_rules",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlertRule"
              }
            }
          }
        }
      }
    },
    "/api/pro/rules/{id}": {
      "delete": {
        "summary": "Delete own alert rule",
        "operationId": "delete__api_pro_rules_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/pro/blocks": {
      "post": {
        "summary": "Publisher blocks an exact campaign, creative, lowercase brand or destination hostname",
        "operationId": "post__api_pro_blocks",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "campaign",
                      "creative",
                      "brand",
                      "domain"
                    ]
                  },
                  "value": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "value"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/pro/blocks/{id}": {
      "delete": {
        "summary": "Remove own publisher block",
        "operationId": "delete__api_pro_blocks_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/pro/house": {
      "post": {
        "summary": "Submit publisher house ad for review; no financial billing",
        "operationId": "post__api_pro_house",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "unitId": {
                    "type": "string"
                  },
                  "creativeId": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 70
                  },
                  "destination": {
                    "type": "string",
                    "format": "uri",
                    "pattern": "^https://"
                  }
                },
                "required": [
                  "unitId",
                  "creativeId",
                  "title",
                  "destination"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/pro/house/{id}": {
      "patch": {
        "summary": "Pause or resume an approved own house ad",
        "operationId": "patch__api_pro_house_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "paused"
                    ]
                  }
                },
                "required": [
                  "status"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/pro/units/{id}": {
      "put": {
        "summary": "Configure own mediation, consent and OM measurement hooks",
        "operationId": "put__api_pro_units_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnitIntegration"
              }
            }
          }
        }
      }
    },
    "/ad/v1/consent": {
      "post": {
        "summary": "Create or replace a unit/session-bound privacy receipt",
        "operationId": "post__ad_v1_consent",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentReceipt"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PublisherKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsentRequest"
              }
            }
          }
        }
      }
    },
    "/ad/v1/revenue": {
      "post": {
        "summary": "Read live signed impression revenue; amount is zero before charge or after reversal",
        "operationId": "post__ad_v1_revenue",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Revenue"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "DeliverySignature": []
          }
        ],
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/ad/v1/report-ad": {
      "post": {
        "summary": "Report issued ad; deduplicated by delivery and reason",
        "operationId": "post__ad_v1_report-ad",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "DeliverySignature": []
          }
        ],
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "reason": {
                    "type": "string",
                    "enum": [
                      "misleading",
                      "inappropriate",
                      "broken",
                      "other"
                    ]
                  },
                  "message": {
                    "type": "string",
                    "maxLength": 1000
                  }
                },
                "required": [
                  "reason"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/ad/v1/measurement-event": {
      "post": {
        "summary": "Record SDK integration telemetry; this is not an independent verification result",
        "operationId": "post__ad_v1_measurement-event",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "DeliverySignature": []
          }
        ],
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "session_start",
                      "loaded",
                      "impression",
                      "finish",
                      "unavailable"
                    ]
                  },
                  "sdkVersion": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "sdkVersion"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/ad/v1/house-event": {
      "post": {
        "summary": "Signed non-wallet house event",
        "operationId": "post__ad_v1_house-event",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "impression",
                "click",
                "start",
                "firstQuartile",
                "midpoint",
                "thirdQuartile",
                "complete"
              ]
            }
          }
        ]
      }
    },
    "/ad/v1/house-click": {
      "get": {
        "summary": "Signed non-wallet house click",
        "operationId": "get__ad_v1_house-click",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/ad/v1/external-event": {
      "post": {
        "summary": "Signed non-wallet external event",
        "operationId": "post__ad_v1_external-event",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "impression",
                "click",
                "start",
                "firstQuartile",
                "midpoint",
                "thirdQuartile",
                "complete"
              ]
            }
          }
        ]
      }
    },
    "/ad/v1/external-click": {
      "get": {
        "summary": "Signed non-wallet external click",
        "operationId": "get__ad_v1_external-click",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/studio": {
      "get": {
        "summary": "Own paginated studio projects, brand kit and declared export diagnostics",
        "operationId": "get__api_studio",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 80
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "archived",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "0",
                "1"
              ],
              "default": "0"
            }
          }
        ]
      }
    },
    "/api/studio/projects": {
      "post": {
        "summary": "Save a one-to-eight-scene project with own image references",
        "operationId": "post__api_studio_projects",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioProjectInput"
              }
            }
          }
        },
        "description": "Total scene duration: 5000–60000 ms. Server validates colors, formats, unique scene IDs and own non-quarantined image references. Scene JSON is data, never executable HTML."
      }
    },
    "/api/studio/projects/{id}": {
      "get": {
        "summary": "Read an own project including archived projects",
        "operationId": "get__api_studio_projects_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StudioProject"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "Update an own project only at the current version; 409 preserves concurrent edits",
        "operationId": "put__api_studio_projects_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioProjectUpdate"
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Reversibly archive or restore an own project with a version check",
        "operationId": "patch__api_studio_projects_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "archived": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "version",
                  "archived"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/studio/brand": {
      "put": {
        "summary": "Create or update own brand colors and logo with a version check",
        "operationId": "put__api_studio_brand",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioBrand"
              }
            }
          }
        }
      }
    },
    "/api/studio/library": {
      "get": {
        "summary": "Search and paginate own creative files, tags and archive state",
        "operationId": "get__api_studio_library",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 80
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "archived",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "0",
                "1"
              ],
              "default": "0"
            }
          }
        ]
      }
    },
    "/api/studio/library/{id}": {
      "patch": {
        "summary": "Rename/tag or reversibly archive own file; cannot change operator quarantine",
        "operationId": "patch__api_studio_library_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 100
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 30
                    },
                    "maxItems": 10
                  },
                  "archived": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/studio/exports": {
      "post": {
        "summary": "Start an own export diagnostic record; data is client reported",
        "operationId": "post__api_studio_exports",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioExportStart"
              }
            }
          }
        }
      }
    },
    "/api/studio/exports/{id}": {
      "patch": {
        "summary": "Update export state; uploaded requires a same-organization matching-format creative",
        "operationId": "patch__api_studio_exports_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioExportUpdate"
              }
            }
          }
        },
        "description": "recording -> rendered/failed/cancelled; rendered -> uploaded/failed/cancelled. Terminal retries are idempotent. Declared export diagnostics do not create paid impressions or financial entries."
      }
    },
    "/api/insights": {
      "get": {
        "summary": "Role-scoped comparison, hourly heatmap, financial/creative/SDK and export insights",
        "operationId": "get__api_insights",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Required for organization reports"
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 90,
              "default": 7
            }
          }
        ],
        "description": "Previous window is immediately adjacent and equal in elapsed duration. Tehran calendar day start. Missing/zero denominators are null. Latency percentiles use nearest rank over at most the last 10000 loaded SDK samples. Session hashes rotate daily and are not unique people. Video completions share the starts-in-window cohort. Conversions count distinct clicked deliveries with a later valid conversion in seven days, observed by asOf. Publisher never receives advertiser spend, conversions, campaign lists or operator data."
      }
    },
    "/ad/v1/audience": {
      "post": {
        "summary": "Register installation, claim/read/spend hosted rewards or consent to publisher push",
        "operationId": "post__ad_v1_audience",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudienceRequest"
              }
            }
          }
        },
        "description": "No publisher backend/login required. Native enrollments require the registered package and reject Origin/Authorization; websites require their exact verified Origin. Except initial register, an installationToken body/header is required, scoped to the active asset. claimReward uniquely credits the hosted installation wallet only after signed completed rewarded delivery. spendReward is atomic and idempotent by externalId. Local token loss can lose access; no automatic multi-device recovery. Subscription requires explicit consent. Inbox is foreground polling, not background OS delivery.\n8.6 growth: action=next, op from x-next-operations and installationToken. sessionId random16..128. Messages page10 with compound cursor {createdAt,id}. preferences version required for writes. Consent is explicit; rewarded claims are separate existing signed endpoints. See /docs/publisher/next-growth for exact input contracts. 8.15 adds pushTags (app_ only, versioned replacement), pushIdentity (signed identityToken), pushLogout and enriched pushReport. These actions require the installation token. 8.15 adds pushTags (app_ only, versioned replacement), pushIdentity (signed identityToken), pushLogout and enriched pushReport. These actions require the installation token. 8.15 adds pushTags (app_ only, versioned replacement), pushIdentity (signed identityToken), pushLogout and enriched pushReport. These actions require the installation token. 8.15 adds pushTags (app_ only, versioned replacement), pushIdentity (signed identityToken), pushLogout and enriched pushReport. These actions require the installation token. 8.15 adds pushTags (app_ only, versioned replacement), pushIdentity (signed identityToken), pushLogout and enriched pushReport. These actions require the installation token. 8.15 adds pushTags (app_ only, versioned replacement), pushIdentity (signed identityToken), pushLogout and enriched pushReport. These actions require the installation token.",
        "x-next-operations": [
          "preferences",
          "config",
          "sessionEvent",
          "event",
          "metrics",
          "pair",
          "pairEvent",
          "offers",
          "messages",
          "readMessage",
          "adActions",
          "coupon",
          "submitLead"
        ]
      }
    },
    "/ad/v1/push-event": {
      "post": {
        "summary": "Record a unique client-reported display/open from a signed push receipt",
        "operationId": "post__ad_v1_push-event",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "receipt": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "delivered",
                      "opened"
                    ]
                  }
                },
                "required": [
                  "receipt",
                  "kind"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/location": {
      "get": {
        "summary": "Read own geo rules and scoped 30-day approximate-IP report",
        "operationId": "get__api_location",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ]
      }
    },
    "/api/location/{kind}/{id}": {
      "put": {
        "summary": "Update owned asset/campaign geo rule; campaign replaces legacy country with ALL",
        "operationId": "put__api_location_kind_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "campaign",
                "asset"
              ]
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rules": {
                    "$ref": "#/components/schemas/LocationRule"
                  }
                },
                "required": [
                  "rules"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/location/preview": {
      "post": {
        "summary": "Nonfinancial approximate location-rule preview",
        "operationId": "post__api_location_preview",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rules": {
                    "$ref": "#/components/schemas/LocationRule"
                  },
                  "location": {
                    "type": "object"
                  }
                },
                "required": [
                  "rules",
                  "location"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/push": {
      "get": {
        "summary": "Own publisher push apps, drafts, subscriptions counts and distinct acceptance/display/open statistics",
        "operationId": "get__api_push",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ]
      }
    },
    "/api/push/apps/{id}": {
      "put": {
        "summary": "Owner with step-up enables an asset push service and encrypted optional FCM credentials",
        "operationId": "put__api_push_apps_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "fcmServiceAccount": {
                    "type": "object",
                    "description": "Official RSA service-account JSON, stored encrypted and never returned"
                  },
                  "clearFcm": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "enabled"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/push/campaigns": {
      "post": {
        "summary": "Create a draft or queue a simple immediate/scheduled push atomically",
        "operationId": "post__api_push_campaigns",
        "responses": {
          "201": {
            "description": "Created draft or queued campaign. This is not a device-delivery receipt.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "draft",
                        "scheduled"
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "status"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "200": {
            "description": "Same requestId and identical content: original campaign, no new send.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "duplicate": {
                      "type": "boolean",
                      "const": true
                    }
                  },
                  "required": [
                    "id",
                    "status",
                    "duplicate"
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "useTemplate": {
                    "type": "boolean",
                    "default": false,
                    "description": "Apply the operator push template to this draft"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 60
                  },
                  "body": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 240
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "pattern": "^https?://",
                    "description": "Optional; blank uses site home/store page. Any domain, no credentials."
                  },
                  "scheduleAt": {
                    "type": "integer"
                  },
                  "expiresAt": {
                    "type": "integer"
                  },
                  "audience": {
                    "type": "object",
                    "description": "Opted-in subscriptions only; platform/topic/language and last-registration country/region/city. No radius.",
                    "properties": {
                      "transport": {
                        "type": "string",
                        "enum": [
                          "all",
                          "standard",
                          "direct"
                        ],
                        "default": "all"
                      }
                    }
                  },
                  "sendMode": {
                    "type": "string",
                    "enum": [
                      "draft",
                      "now",
                      "scheduled"
                    ],
                    "default": "draft",
                    "description": "now and scheduled atomically queue the campaign; omitted preserves legacy draft creation."
                  },
                  "requestId": {
                    "type": "string",
                    "pattern": "^[-a-zA-Z0-9_]{16,100}$",
                    "description": "Reuse with the identical body to retrieve the same submission after a lost response. Different content returns 409."
                  },
                  "ttlHours": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 168,
                    "description": "Defaults to administrator-configured TTL; administrator maximum applies."
                  },
                  "deliveryChannel": {
                    "type": "string",
                    "enum": [
                      "system",
                      "inbox"
                    ],
                    "default": "system",
                    "description": "Use system for OS notifications. inbox is explicit legacy compatibility, never an automatic fallback."
                  },
                  "preventDuplicates": {
                    "type": "boolean",
                    "default": false
                  },
                  "allowDuplicate": {
                    "type": "boolean",
                    "default": false
                  }
                },
                "required": [
                  "assetId",
                  "title",
                  "body"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "description": "Default system delivery targets consented FCM, Web Push and direct subscriptions. Inbox is explicit legacy compatibility. Only signed client receipts count as actual receive/display/open. Provider acceptance applies to FCM/Web Push only. Any HTTP/HTTPS destination domain is allowed; the receipt service remains trusted HTTPS. preventDuplicates=true warns on semantic duplicates, allowDuplicate=true explicitly permits a repeat. Retain requestId for network retries."
      }
    },
    "/api/push/campaigns/{id}": {
      "post": {
        "summary": "Start scheduled fanout or cancel unsent jobs",
        "operationId": "post__api_push_campaigns_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "type": "string",
                    "enum": [
                      "start",
                      "cancel"
                    ]
                  }
                },
                "required": [
                  "action"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "description": " Action duplicate creates an unsent draft with current TTL; it does not send jobs. Action duplicate creates an unsent draft with current TTL; it does not send jobs."
      }
    },
    "/ad/v1/app": {
      "post": {
        "summary": "Direct native app delivery or privacy choice: no publisher backend, login, JWT or API key",
        "operationId": "post__ad_v1_app",
        "responses": {
          "200": {
            "description": "Issued ad, noFill, or privacy receipt. Signed delivery events use the existing URLs.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AdResponse"
                    },
                    {
                      "$ref": "#/components/schemas/ConsentReceipt"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/DirectAppRequest"
                  },
                  {
                    "$ref": "#/components/schemas/DirectAppConsent"
                  }
                ]
              }
            }
          }
        },
        "description": "Native Android/iOS only: Origin and Authorization are rejected. Requires an approved active app/unit and matching public package, not device attestation. Body country is ignored; the host request supplies country. Limited by IP/app and unit/session plus normal serving controls. All nine formats including hosted rewards; rewarded delivery requires a scoped installation token and nonce, registered through /ad/v1/audience. No publisher keys or panel membership are exposed. Hosted balances are installation-scoped through /ad/v1/audience, never publisher financial accounts."
      }
    },
    "/api/platform": {
      "get": {
        "summary": "Public brand, contact, verified service origin and signup flags; no secrets",
        "operationId": "get__api_platform",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/api/automation": {
      "get": {
        "summary": "Own bid, floor, rotation policies and immutable decision evidence",
        "operationId": "get__api_automation",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ]
      }
    },
    "/api/automation/floor": {
      "post": {
        "summary": "Save randomized CPM gross floor policy",
        "operationId": "post__api_automation_floor",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "unitId": {
                    "type": "string"
                  },
                  "minToman": {
                    "type": "integer"
                  },
                  "maxToman": {
                    "type": "integer"
                  },
                  "trialBps": {
                    "type": "integer",
                    "minimum": 1000,
                    "maximum": 5000
                  },
                  "minFillBps": {
                    "type": "integer"
                  },
                  "minSamples": {
                    "type": "integer",
                    "minimum": 200
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "version": {
                    "type": "integer"
                  }
                },
                "required": [
                  "unitId",
                  "minToman",
                  "maxToman"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/automation/evaluate": {
      "post": {
        "summary": "Evaluate due policies without bypassing sample/time limits",
        "operationId": "post__api_automation_evaluate",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/automation/undo": {
      "post": {
        "summary": "Restore last valid change and freeze restored value",
        "operationId": "post__api_automation_undo",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "runId": {
                    "type": "string"
                  }
                },
                "required": [
                  "runId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/audio-assets": {
      "get": {
        "summary": "Owned audio library and scoped Tehran-day delivery-cohort report; SDK-reported playback, no independent listening claim",
        "operationId": "get__api_audio-assets",
        "responses": {
          "200": {
            "description": "files (at most 100), targets (at most 200), compatibility statistics, report with totals/daily/funnel/leaders/platforms/noFillReasons; monetary Milli fields are thousandths of IRR; null ratio without denominator; advertiser requests and fill are null"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "enum": [
                7,
                14,
                30
              ],
              "default": 7
            }
          },
          {
            "name": "targetId",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Owned audio campaign for advertiser, owned audio unit for publisher; omitted means all"
            }
          }
        ]
      },
      "post": {
        "summary": "Upload full validated MP3/PCM WAV, 3-180 seconds",
        "operationId": "post__api_audio-assets",
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  },
                  "transcript": {
                    "type": "string",
                    "maxLength": 5000
                  },
                  "companionId": {
                    "type": "string"
                  }
                },
                "required": [
                  "file"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/integrity-apps": {
      "get": {
        "summary": "Owned app integrity configuration and risk totals; private credentials omitted",
        "operationId": "get__api_integrity-apps",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ]
      },
      "post": {
        "summary": "Step-up app integrity configuration, versioned; Google credential write-only",
        "operationId": "post__api_integrity-apps",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "version": {
                    "type": "integer"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "observe",
                      "enforce_rewarded",
                      "enforce_all"
                    ]
                  },
                  "androidProjectNumber": {
                    "type": "string"
                  },
                  "androidCertificates": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "serviceAccount": {
                    "type": "string",
                    "description": "Private JSON; write-only"
                  },
                  "clearServiceAccount": {
                    "type": "boolean"
                  },
                  "appleAppId": {
                    "type": "string"
                  },
                  "appleEnvironment": {
                    "type": "string",
                    "enum": [
                      "development",
                      "production"
                    ]
                  }
                },
                "required": [
                  "assetId",
                  "mode"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/ad/v1/integrity": {
      "post": {
        "summary": "Native installation-bound challenge/verify; one-use signed ticket",
        "operationId": "post__ad_v1_integrity",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "type": "string",
                    "enum": [
                      "challenge",
                      "verify"
                    ]
                  },
                  "installationToken": {
                    "type": "string"
                  },
                  "unitId": {
                    "type": "string"
                  },
                  "requestNonce": {
                    "type": "string"
                  },
                  "challengeId": {
                    "type": "string"
                  },
                  "integrityToken": {
                    "type": "string"
                  },
                  "keyId": {
                    "type": "string"
                  },
                  "attestation": {
                    "type": "string"
                  },
                  "assertion": {
                    "type": "string"
                  }
                },
                "required": [
                  "action",
                  "installationToken",
                  "unitId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/api/privacy-kit": {
      "get": {
        "summary": "Own feature-specific privacy inventory; review required for whole application",
        "operationId": "get__api_privacy-kit",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "platform",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hosted",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "push",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "integrity",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stories",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/privacy-kit/PrivacyInfo.xcprivacy": {
      "get": {
        "summary": "Own feature-specific privacy inventory; review required for whole application",
        "operationId": "get__api_privacy-kit_PrivacyInfo.xcprivacy",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "platform",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hosted",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "push",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "integrity",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stories",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/assets/{id}": {
      "patch": {
        "summary": "Update an app store URL and send the media for ownership review again",
        "operationId": "patch__api_assets_id",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Organization membership is checked by the server."
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "storeUrl": {
                    "type": "string",
                    "format": "uri",
                    "pattern": "^https://"
                  }
                },
                "required": [
                  "storeUrl"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "description": "Owner/manager in the same publisher organization. A changed URL sets pending and clears verification. Package/domain cannot be changed. Unchanged URL does not change status."
      }
    },
    "/api/playables": {
      "get": {
        "summary": "List own curated playable creatives",
        "operationId": "get__api_playables",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ]
      },
      "post": {
        "summary": "Create a bounded playable template",
        "operationId": "post__api_playables",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlayableInput"
              }
            }
          }
        }
      }
    },
    "/api/media-processing": {
      "get": {
        "summary": "List own adaptive video jobs and live processor readiness",
        "operationId": "get__api_media_processing",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ]
      },
      "post": {
        "summary": "Queue idempotent real three-profile transcoding",
        "operationId": "post__api_media_processing",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted, not completed"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "creativeId": {
                    "type": "string"
                  }
                },
                "required": [
                  "creativeId"
                ]
              }
            }
          }
        }
      }
    },
    "/api/media-processing/{id}/retry": {
      "post": {
        "summary": "Retry own failed video job",
        "operationId": "post__api_media_processing__id__retry",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted, not completed"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": []
              }
            }
          }
        }
      }
    },
    "/api/studio-collaboration/{projectId}": {
      "get": {
        "summary": "Read exact project revision, bounded history, comments and reviews",
        "operationId": "get__api_studio_collaboration__projectId_",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/studio-collaboration/{projectId}/comments": {
      "post": {
        "summary": "Comment on a frame and normalized region",
        "operationId": "post__api_studio_collaboration__projectId__comments",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioComment"
              }
            }
          }
        }
      }
    },
    "/api/studio-collaboration/{projectId}/comments/{id}": {
      "patch": {
        "summary": "Resolve/reopen authorized comment",
        "operationId": "patch__api_studio_collaboration__projectId__comments__id_",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "integer"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "resolved"
                    ]
                  }
                },
                "required": [
                  "version",
                  "status"
                ]
              }
            }
          }
        }
      }
    },
    "/api/studio-collaboration/{projectId}/reviews": {
      "post": {
        "summary": "Independent owner/manager reviews current revision",
        "operationId": "post__api_studio_collaboration__projectId__reviews",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioReview"
              }
            }
          }
        }
      }
    },
    "/api/studio-collaboration/policy": {
      "get": {
        "summary": "Read studio team-review requirement",
        "operationId": "get__api_studio_collaboration_policy",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ]
      },
      "put": {
        "summary": "Owner changes studio review policy",
        "operationId": "put__api_studio_collaboration_policy",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "required": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "required"
                ]
              }
            }
          }
        }
      }
    },
    "/api/reporting": {
      "get": {
        "summary": "Read authorized schedules, own jobs, metrics and mail receipts",
        "operationId": "get__api_reporting",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ]
      }
    },
    "/api/reporting/generate": {
      "post": {
        "summary": "Finance/owner queues a private actual PDF; no automatic email",
        "operationId": "post__api_reporting_generate",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted, not completed"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportInput"
              }
            }
          }
        }
      }
    },
    "/api/reporting/schedules": {
      "post": {
        "summary": "Explicitly select authorized verified financial recipients",
        "operationId": "post__api_reporting_schedules",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "201": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportScheduleInput"
              }
            }
          }
        }
      }
    },
    "/api/reporting/schedules/{id}": {
      "patch": {
        "summary": "CAS pause/enable an authorized report schedule",
        "operationId": "patch__api_reporting_schedules__id_",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "integer"
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "version",
                  "enabled"
                ]
              }
            }
          }
        }
      }
    },
    "/api/reporting/files/{jobId}": {
      "get": {
        "summary": "Download private PDF; current financial membership required",
        "operationId": "get__api_reporting_files__jobId_",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Private PDF",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ]
      }
    },
    "/api/apple-publisher-items": {
      "get": {
        "summary": "Read own publisher App Store item mappings",
        "operationId": "get__api_apple_publisher_items",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ]
      },
      "put": {
        "summary": "Map own app media to its actual App Store item ID",
        "operationId": "put__api_apple_publisher_items",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current organization membership and operation role checked."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "itemId": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,14}$"
                  }
                },
                "required": [
                  "assetId",
                  "itemId"
                ]
              }
            }
          }
        }
      }
    },
    "/ad/v1/playable": {
      "get": {
        "summary": "Signed sandboxed HTML5 delivery; no raw user scripts",
        "operationId": "get__ad_v1_playable",
        "security": [],
        "responses": {
          "200": {
            "description": "Sandboxed nonced template HTML; signature and expiry required",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid bounded input"
          },
          "403": {
            "description": "Permission, consent, origin or independent-review requirement failed"
          },
          "409": {
            "description": "State/version conflict or prerequisite missing"
          },
          "503": {
            "description": "Required connection unavailable"
          }
        },
        "parameters": [
          {
            "name": "d",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sig",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/ad/v1/house-playable": {
      "get": {
        "summary": "Unbilled publisher-owned playable HTML with signed house token",
        "security": [],
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Restricted HTML, never a billable delivery"
          },
          "403": {
            "description": "Invalid signature"
          },
          "410": {
            "description": "Expired token or inactive own creative"
          }
        }
      }
    },
    "/api/playables/{id}/preview": {
      "get": {
        "summary": "Own private playable preview; no ad request, financial reservation or reward",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Private nonced restricted HTML preview"
          },
          "403": {
            "description": "Not a member"
          },
          "404": {
            "description": "Foreign or absent playable"
          }
        }
      }
    },
    "/api/playables/templates/{template}/preview": {
      "get": {
        "summary": "Private template trial without creating a creative, request, wallet reservation or reward",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "template",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "tap_target",
                "memory_pairs",
                "color_match",
                "quick_math",
                "number_order",
                "sequence_memory"
              ]
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Nonced sandboxed HTML",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Sign-in required"
          },
          "403": {
            "description": "Current organization membership required"
          },
          "404": {
            "description": "Unknown template"
          }
        }
      }
    },
    "/api/next/overview": {
      "get": {
        "summary": "overview — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/next/projects": {
      "get": {
        "summary": "Download complete personalized placement project; optional scoped diagnostic session",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "ZIP with local SDK, native configuration, sample entry, PROJECT_INFO.json and file hashes",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "403": {
            "description": "Publisher membership required"
          },
          "404": {
            "description": "Unknown or inaccessible media, placement or diagnostic session"
          },
          "409": {
            "description": "Diagnostic session cancelled or expired"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Publisher organization"
          },
          {
            "name": "assetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Asset in the same organization"
          },
          {
            "name": "platform",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Target SDK platform"
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Active placement; required for diagnostic or proxy project"
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "direct (default) or proxy when supported"
          },
          {
            "name": "proxyUrl",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "HTTPS publisher proxy for optional proxy mode"
          },
          {
            "name": "runId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Active diagnostic session owned by the current user with matching placement, platform and mode. Omit for production."
          }
        ]
      }
    },
    "/api/next/sdk-lab": {
      "get": {
        "summary": "sdk-lab — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/next/devices": {
      "get": {
        "summary": "devices — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "devices — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      },
      "delete": {
        "summary": "devices — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/next/policies": {
      "get": {
        "summary": "policies — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "policies — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/next/opportunities": {
      "get": {
        "summary": "opportunities — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/next/cohorts": {
      "get": {
        "summary": "cohorts — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/next/metrics": {
      "get": {
        "summary": "metrics — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/next/offers": {
      "get": {
        "summary": "offers — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "offers — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      },
      "patch": {
        "summary": "offers — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/next/journeys": {
      "get": {
        "summary": "journeys — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "journeys — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      },
      "patch": {
        "summary": "journeys — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/next/messages": {
      "get": {
        "summary": "messages — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/next/media-health": {
      "get": {
        "summary": "media-health — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "media-health — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      },
      "delete": {
        "summary": "media-health — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/next/studio-batches": {
      "get": {
        "summary": "studio-batches — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "studio-batches — publisher",
        "tags": [
          "Didnex growth 8.6"
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-organization-role": "publisher",
        "responses": {
          "200": {
            "description": "Stored values or report; scoped to current organization",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role or organization scope denied"
          },
          "409": {
            "description": "Version conflict, exhausted capacity or missing prerequisite"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/push-integration": {
      "get": {
        "summary": "راهنمای پوش همان جایگاه از منبع واحد؛ unitId و platform الزامی‌اند",
        "tags": [
          "Release 8.10"
        ],
        "responses": {
          "200": {
            "description": "Successful authenticated response"
          },
          "403": {
            "description": "Role or ownership denied"
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-audiences": [
          "publisher"
        ],
        "parameters": [
          {
            "name": "unitId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "platform",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "transport",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "standard",
                "direct"
              ],
              "default": "standard"
            },
            "description": "Returns the selected canonical guide with the actual unit ID and origin. Validated inventory and membership are required."
          }
        ]
      }
    },
    "/api/style-guards/list": {
      "get": {
        "summary": "فهرست محافظ‌های مجاز؛ ناشر org خودش را می‌فرستد",
        "tags": [
          "Release 8.10"
        ],
        "responses": {
          "200": {
            "description": "Successful authenticated response"
          },
          "403": {
            "description": "Role or ownership denied"
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-audiences": [
          "publisher",
          "admin"
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/style-guards": {
      "post": {
        "summary": "ذخیره محافظ ظاهر با scopeType، scopeId، enabled، minSamples، maxErrorBps و windowMinutes",
        "tags": [
          "Release 8.10"
        ],
        "responses": {
          "200": {
            "description": "Successful authenticated response"
          },
          "403": {
            "description": "Role or ownership denied"
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "x-audiences": [
          "publisher",
          "admin"
        ]
      }
    },
    "/api/supply-health": {
      "get": {
        "summary": "وضعیت رابطه DIRECT همان شبکه در ads.txt/app-ads.txt",
        "tags": [
          "Release 8.10"
        ],
        "responses": {
          "200": {
            "description": "Successful authenticated response"
          },
          "403": {
            "description": "Role or ownership denied"
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-audiences": [
          "publisher"
        ]
      }
    },
    "/api/referrals": {
      "get": {
        "summary": "کد معرفی یا معرف حساب و کمیسیون قطعی",
        "tags": [
          "Release 8.10"
        ],
        "responses": {
          "200": {
            "description": "Successful authenticated response"
          },
          "403": {
            "description": "Role or ownership denied"
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-audiences": [
          "publisher",
          "advertiser"
        ]
      },
      "post": {
        "summary": "مالک ناشر کد می‌سازد؛ مالک تبلیغ‌دهنده code معرف را پیش از اولین پرداخت ثبت می‌کند",
        "tags": [
          "Release 8.10"
        ],
        "responses": {
          "200": {
            "description": "Successful authenticated response"
          },
          "403": {
            "description": "Role or ownership denied"
          }
        },
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "x-audiences": [
          "publisher",
          "advertiser"
        ]
      }
    },
    "/api/push/report": {
      "get": {
        "summary": "Aggregate push creation-cohort report, no endpoints or tokens",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 90,
              "default": 30
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "integer",
              "description": "Unix milliseconds inclusive"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "integer",
              "description": "Unix milliseconds exclusive, maximum range 93 days"
            }
          },
          {
            "name": "assetId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "inbox",
                "fcm",
                "webpush"
              ]
            }
          },
          {
            "name": "platform",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "android",
                "ios",
                "web"
              ]
            }
          },
          {
            "name": "export",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "csv"
              ]
            }
          },
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "Creation cohorts in Asia/Tehran; outcomes current asOf. Provider acceptance excludes Inbox. Display/open receipts are SDK reports. Rates with no denominator are null. Current subscriptions/history ignore campaign filter. CSV capped at 500 campaigns, formula-safe, X-Didnex-Truncated. History begins at collectionStartedAt.",
        "responses": {
          "200": {
            "description": "Summary, daily, channel, campaign, safe error and subscription aggregates",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filters/range"
          },
          "403": {
            "description": "Membership/admin permission required"
          },
          "404": {
            "description": "Unowned media/campaign"
          }
        }
      }
    },
    "/api/server-growth/no-fill": {
      "get": {
        "summary": "Server growth no-fill",
        "description": "Request-time preauction snapshot, 200 recent campaigns, 7-day retention. Publisher aggregated reasons, advertiser own campaigns, admin detail. Does not replay visitor frequency, auction, variants, sequence or races.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      }
    },
    "/api/server-growth/reconciliation": {
      "get": {
        "summary": "Server growth reconciliation",
        "description": "Finance role, read-only. Latest 10000 earnings, ledger account balances and campaign reservations including outcome holds and partner escrow. Completeness explicit.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      }
    },
    "/api/server-growth/sponsorship": {
      "get": {
        "summary": "Server growth sponsorship",
        "description": "Hourly offers coexist with old weekly contracts: 1-168 hours, capacity multiple of 1000, no overlap in one listing, actual CPM impressions only; delivery not guaranteed.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      }
    },
    "/api/server-growth/contacts": {
      "get": {
        "summary": "Server growth contacts",
        "description": "Authenticated installation in one asset only. Default allow for missing identity. Weighted atomic ad/push reservation, not verified human impressions; no fingerprint.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      },
      "post": {
        "summary": "Configure contacts",
        "description": "Authenticated installation in one asset only. Default allow for missing identity. Weighted atomic ad/push reservation, not verified human impressions; no fingerprint.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "version": {
                    "type": "integer"
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "maxPoints": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "adWeight": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10
                  },
                  "pushWeight": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10
                  },
                  "windowMinutes": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10080
                  },
                  "unknownBehavior": {
                    "enum": [
                      "allow",
                      "block"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Saved or idempotent receipt"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Permission, CSRF or step-up required"
          },
          "409": {
            "description": "Version, lifecycle, funding or contract conflict"
          }
        }
      }
    },
    "/api/server-growth/push-safety": {
      "get": {
        "summary": "Server growth push-safety",
        "description": "Provider accepted/failed jobs exclude Inbox. Optout among provider-accepted installations, minimum sample, latched pause and explicit resume.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      },
      "post": {
        "summary": "Configure push-safety",
        "description": "Provider accepted/failed jobs exclude Inbox. Optout among provider-accepted installations, minimum sample, latched pause and explicit resume.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "version": {
                    "type": "integer"
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "resume": {
                    "type": "boolean"
                  },
                  "minSamples": {
                    "type": "integer",
                    "minimum": 20
                  },
                  "maxFailureBps": {
                    "type": "integer",
                    "minimum": 100,
                    "maximum": 10000
                  },
                  "maxOptoutBps": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10000
                  },
                  "windowMinutes": {
                    "type": "integer",
                    "minimum": 5,
                    "maximum": 10080
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Saved or idempotent receipt"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Permission, CSRF or step-up required"
          },
          "409": {
            "description": "Version, lifecycle, funding or contract conflict"
          }
        }
      }
    },
    "/api/server-growth/push-plans": {
      "get": {
        "summary": "Server growth push-plans",
        "description": "Draft only; immutable after start. Zero or 2-4 variants. Stable installation assignment, 0-50% holdout. Existing consented activity only. Fixed-horizon Wilson z=3 nonoverlap winner applies to future assignments. Collapse pending jobs only.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      },
      "post": {
        "summary": "Configure push-plans",
        "description": "Draft only; immutable after start. Zero or 2-4 variants. Stable installation assignment, 0-50% holdout. Existing consented activity only. Fixed-horizon Wilson z=3 nonoverlap winner applies to future assignments. Collapse pending jobs only.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "campaignId": {
                    "type": "string"
                  },
                  "version": {
                    "type": "integer"
                  },
                  "holdoutBps": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 5000
                  },
                  "variants": {
                    "type": "array",
                    "maxItems": 4,
                    "items": {
                      "type": "object",
                      "required": [
                        "title",
                        "body"
                      ],
                      "properties": {
                        "title": {
                          "type": "string"
                        },
                        "body": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        }
                      }
                    }
                  },
                  "timeMode": {
                    "enum": [
                      "fixed",
                      "recent_activity"
                    ]
                  },
                  "collapseKey": {
                    "type": "string",
                    "maxLength": 64
                  },
                  "analysisAt": {
                    "type": "integer"
                  },
                  "returnWindowHours": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 168
                  },
                  "minSamples": {
                    "type": "integer",
                    "minimum": 100
                  },
                  "autoWinner": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Saved or idempotent receipt"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Permission, CSRF or step-up required"
          },
          "409": {
            "description": "Version, lifecycle, funding or contract conflict"
          }
        }
      }
    },
    "/api/server-growth/partners": {
      "get": {
        "summary": "Server growth partners",
        "description": "Publisher finance + step-up. Recipient explicitly accepts; total active share <=10000 bps. Contract snapshotted at delivery. Confirmed publisher revenue only, balanced escrow then active recipient wallet.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      },
      "post": {
        "summary": "Configure partners",
        "description": "Publisher finance + step-up. Recipient explicitly accepts; total active share <=10000 bps. Contract snapshotted at delivery. Confirmed publisher revenue only, balanced escrow then active recipient wallet.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "enum": [
                      "invite",
                      "accept",
                      "revoke"
                    ]
                  },
                  "id": {
                    "type": "string"
                  },
                  "version": {
                    "type": "integer"
                  },
                  "assetId": {
                    "type": "string"
                  },
                  "recipientOrg": {
                    "type": "string"
                  },
                  "bps": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10000
                  },
                  "accepted": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Saved or idempotent receipt"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Permission, CSRF or step-up required"
          },
          "409": {
            "description": "Version, lifecycle, funding or contract conflict"
          }
        }
      }
    },
    "/api/server-growth/ltv": {
      "get": {
        "summary": "Server growth ltv",
        "description": "Consented linked installations, mature 7/30/90 elapsed-day revenue, pending/confirmed separate; 10000 installs/100000 earnings cap, unavailable explicit.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      }
    },
    "/api/server-growth/performance": {
      "get": {
        "summary": "Server growth performance",
        "description": "Optional existing 30-day client samples. No new instrumentation; absent metrics null, not an OS profiler.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Scoped real stored data"
          },
          "403": {
            "description": "Membership/role required"
          }
        }
      }
    },
    "/api/sponsorship/hourly": {
      "post": {
        "summary": "Publisher hourly offer in owned existing listing",
        "description": "Hourly offers coexist with old weekly contracts: 1-168 hours, capacity multiple of 1000, no overlap in one listing, actual CPM impressions only; delivery not guaranteed.",
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "listingId",
                  "startsAt",
                  "durationHours",
                  "capacity"
                ],
                "properties": {
                  "listingId": {
                    "type": "string"
                  },
                  "startsAt": {
                    "type": "integer"
                  },
                  "durationHours": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 168
                  },
                  "capacity": {
                    "type": "integer",
                    "minimum": 1000,
                    "multipleOf": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "403": {
            "description": "Publisher manager required"
          },
          "409": {
            "description": "Overlap/unavailable listing"
          }
        }
      }
    },
    "/api/sdk-version-docs/{id}": {
      "get": {
        "summary": "Immutable documentation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sanitized immutable document"
          },
          "302": {
            "description": "Exact approved catalog package"
          },
          "404": {
            "description": "Unknown or revoked"
          }
        }
      }
    },
    "/api/sdk-approved-release/{id}": {
      "get": {
        "summary": "Approved package redirect",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sanitized immutable document"
          },
          "302": {
            "description": "Exact approved catalog package"
          },
          "404": {
            "description": "Unknown or revoked"
          }
        }
      }
    },
    "/api/email-preferences": {
      "get": {
        "summary": "Read own optional-email preferences",
        "description": "",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "Set own email choices",
        "description": "Optional org query scopes this member only. Global opt-out takes precedence. Auth links and explicitly requested receipts remain mandatory; queued optional messages recheck before delivery.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "integer"
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "categories": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "boolean"
                    }
                  }
                },
                "required": [
                  "version",
                  "enabled",
                  "categories"
                ]
              }
            }
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/traffic-quality": {
      "get": {
        "summary": "Read own revenue-quality decisions",
        "description": "Publisher/advertiser see only their own money. scope=admin requires a platform administrator. Raw IP and installation secrets are not exposed.",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/display-profiles": {
      "get": {
        "summary": "List versioned fixed slot profiles",
        "description": "",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        }
      }
    },
    "/api/registration-profile": {
      "get": {
        "summary": "Read owner registration answers and current form",
        "description": "",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "Update owner custom answers",
        "description": "",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "integer"
                  },
                  "formVersion": {
                    "type": "integer"
                  },
                  "answers": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push-console": {
      "get": {
        "summary": "Push overview",
        "description": "Private stored data. Audience is cursor-paginated (100 rows), with assetId, status, platform and search filters. No provider token or endpoint is returned.",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/push-console/audience": {
      "get": {
        "summary": "Push audience",
        "description": "Private stored data. Audience is cursor-paginated (100 rows), with assetId, status, platform and search filters. No provider token or endpoint is returned.",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/push-console/logs": {
      "get": {
        "summary": "Push logs",
        "description": "Private stored data. Audience is cursor-paginated (100 rows), with assetId, status, platform and search filters. No provider token or endpoint is returned.",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/push-console/segments": {
      "post": {
        "summary": "Push segments",
        "description": "Owner/manager in the same publisher organization. Identity proofs require owner. Preview is bounded and does not send. Tags do not confer financial or panel access.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "version": {
                    "type": "integer"
                  },
                  "rules": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push-console/preview": {
      "post": {
        "summary": "Push preview",
        "description": "Owner/manager in the same publisher organization. Identity proofs require owner. Preview is bounded and does not send. Tags do not confer financial or panel access.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string"
                  },
                  "rules": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push-console/templates": {
      "post": {
        "summary": "Push templates",
        "description": "Owner/manager in the same publisher organization. Identity proofs require owner. Preview is bounded and does not send. Tags do not confer financial or panel access.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "version": {
                    "type": "integer"
                  },
                  "content": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push-console/test-device": {
      "post": {
        "summary": "Push test-device",
        "description": "Owner/manager in the same publisher organization. Identity proofs require owner. Preview is bounded and does not send. Tags do not confer financial or panel access.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "installationId": {
                    "type": "string"
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push-console/identity-proof": {
      "post": {
        "summary": "Push identity-proof",
        "description": "Owner/manager in the same publisher organization. Identity proofs require owner. Preview is bounded and does not send. Tags do not confer financial or panel access.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "installationId": {
                    "type": "string"
                  },
                  "externalId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push-console/server-tags": {
      "post": {
        "summary": "Push server-tags",
        "description": "Owner/manager in the same publisher organization. Identity proofs require owner. Preview is bounded and does not send. Tags do not confer financial or panel access.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "installationId": {
                    "type": "string"
                  },
                  "tags": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "version": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push-console/campaigns/{id}": {
      "post": {
        "summary": "Pause or resume pending push jobs",
        "description": "An in-flight provider request may complete. A paused queue does not retract accepted messages.",
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "responses": {
          "200": {
            "description": "Stored scoped data or successful result"
          },
          "400": {
            "description": "Invalid typed input"
          },
          "403": {
            "description": "Role, CSRF or step-up required"
          },
          "409": {
            "description": "Stale version or lifecycle conflict"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "enum": [
                      "pause",
                      "resume"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ad/v1/push-identity": {
      "post": {
        "summary": "Issue a short-lived publisher identity proof",
        "description": "Server-only Bearer md_ key with explicit scope push, no browser Origin. Authenticate the app user before selecting externalId. Proof is bound to asset and installation and expires after five minutes. Never embed this key in an app.",
        "security": [
          {
            "PublisherKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "installationId",
                  "externalId"
                ],
                "properties": {
                  "installationId": {
                    "type": "string"
                  },
                  "externalId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Private short-lived proof"
          },
          "403": {
            "description": "Wrong scope, origin or asset"
          }
        }
      }
    },
    "/api/connect-public": {
      "get": {
        "operationId": "get__api_connect_public",
        "summary": "Public read-only placement metadata for direct Web/SDK connection",
        "description": "GET and OPTIONS allow cross-origin requests with Access-Control-Allow-Origin: *. No authenticated account state or server secrets are returned. The unit, organization and media must be active; sites must have verified ownership. This endpoint records no delivery, push consent or earnings.",
        "parameters": [
          {
            "name": "unitId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "platform",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "web"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Unit metadata, public SDK package and canonical example"
          },
          "400": {
            "description": "Invalid unit/platform"
          },
          "404": {
            "description": "Inactive, unverified or missing unit"
          }
        }
      },
      "options": {
        "operationId": "options__api_connect_public",
        "summary": "Public metadata preflight",
        "responses": {
          "204": {
            "description": "GET, OPTIONS allowed without credentials"
          }
        }
      }
    },
    "/api/auth/restore": {
      "post": {
        "operationId": "post__api_auth_restore",
        "summary": "Restore an opted-in remembered browser after active-session expiry",
        "description": "Exact same-origin POST JSON {}. Requires the separate HttpOnly __Host-didnex_remember proof. The credential is hashed, rotated atomically with audit, retains its initial absolute expiry and never grants fresh step-up. Invalid, revoked or spent proofs return restored=false without overwriting another successful restore cookie.",
        "security": [
          {
            "RememberCookie": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Restored boolean; successful restoration sets session and rotating remember cookies, never raw credentials in JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "restored": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Invalid Origin or Fetch Metadata"
          },
          "429": {
            "description": "Restore request limit"
          }
        }
      }
    },
    "/api/auth/remember-devices/{id}": {
      "delete": {
        "summary": "Revoke one remembered device belonging to the signed-in account",
        "operationId": "delete__api_auth_remember_devices_id",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Conflict or missing prerequisite",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribution or event time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service configuration required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "Activation token consumed or expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content type required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "SessionCookie": [],
            "PanelCSRF": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "Requires the current session, exact Origin, CSRF and same-origin metadata. A body is not required. Also revokes the linked active session. Foreign IDs disclose no owner information."
      }
    },
    "/ad/v1/push-direct": {
      "post": {
        "tags": [
          "Publisher SDK"
        ],
        "summary": "Poll or revoke one consented direct notification subscription",
        "description": "Use the purpose-scoped directToken returned by subscribePush(provider=direct). It expires after 30 days and is rotated on resubscription. Does not authorize ads, wallets or panel operations. Polling is limited to six calls/minute/subscription. Revocation is idempotent and bypasses poll throttling and administrator pause. Report actual display/open separately with the signed message receipt.",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "token"
                ],
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "Purpose-only directToken; never log it."
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "poll",
                      "unsubscribe"
                    ],
                    "default": "poll"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "messages, transport=direct and backgroundDelivery=false, or unsubscribed=true. OS delivery depends on the client."
          },
          "403": {
            "description": "Invalid/revoked/rotated subscription"
          },
          "409": {
            "description": "Direct service paused"
          },
          "429": {
            "description": "Polling rate exceeded; opt-out remains available"
          }
        }
      }
    },
    "/api/ops/overview": {
      "get": {
        "summary": "Operational tool: overview",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/ops/no-fill": {
      "get": {
        "summary": "Operational tool: no-fill",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/ops/money": {
      "get": {
        "summary": "Operational tool: money",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/ops/floors": {
      "get": {
        "summary": "Operational tool: floors",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Operational tool: floors",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "campaignId": {
                    "type": "string"
                  },
                  "unitId": {
                    "type": "string"
                  },
                  "deliveryId": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "decision": {
                    "type": "string"
                  },
                  "reason": {
                    "type": "string"
                  },
                  "scopeType": {
                    "type": "string"
                  },
                  "scopeId": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  },
                  "action": {
                    "type": "string"
                  },
                  "paymentId": {
                    "type": "string"
                  },
                  "outboxId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "networkLabel": {
                    "type": "string"
                  },
                  "countryLabel": {
                    "type": "string"
                  },
                  "mediaUrl": {
                    "type": "string"
                  },
                  "version": {
                    "type": "number"
                  },
                  "releaseAt": {
                    "type": "number"
                  },
                  "baselineToman": {
                    "type": "number"
                  },
                  "trialToman": {
                    "type": "number"
                  },
                  "trialBps": {
                    "type": "number"
                  },
                  "minSamples": {
                    "type": "number"
                  },
                  "compensationToman": {
                    "type": "number"
                  },
                  "cancel": {
                    "type": "boolean"
                  },
                  "pacing": {
                    "type": "string",
                    "enum": [
                      "asap",
                      "even"
                    ]
                  },
                  "weekdays": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 6
                    }
                  },
                  "hours": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 168
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 23
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/ops/appeals": {
      "get": {
        "summary": "Operational tool: appeals",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Operational tool: appeals",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "campaignId": {
                    "type": "string"
                  },
                  "unitId": {
                    "type": "string"
                  },
                  "deliveryId": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "decision": {
                    "type": "string"
                  },
                  "reason": {
                    "type": "string"
                  },
                  "scopeType": {
                    "type": "string"
                  },
                  "scopeId": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  },
                  "action": {
                    "type": "string"
                  },
                  "paymentId": {
                    "type": "string"
                  },
                  "outboxId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "networkLabel": {
                    "type": "string"
                  },
                  "countryLabel": {
                    "type": "string"
                  },
                  "mediaUrl": {
                    "type": "string"
                  },
                  "version": {
                    "type": "number"
                  },
                  "releaseAt": {
                    "type": "number"
                  },
                  "baselineToman": {
                    "type": "number"
                  },
                  "trialToman": {
                    "type": "number"
                  },
                  "trialBps": {
                    "type": "number"
                  },
                  "minSamples": {
                    "type": "number"
                  },
                  "compensationToman": {
                    "type": "number"
                  },
                  "cancel": {
                    "type": "boolean"
                  },
                  "pacing": {
                    "type": "string",
                    "enum": [
                      "asap",
                      "even"
                    ]
                  },
                  "weekdays": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 6
                    }
                  },
                  "hours": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 168
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 23
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/ops/protections": {
      "get": {
        "summary": "Operational tool: protections",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Operational tool: protections",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "campaignId": {
                    "type": "string"
                  },
                  "unitId": {
                    "type": "string"
                  },
                  "deliveryId": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "decision": {
                    "type": "string"
                  },
                  "reason": {
                    "type": "string"
                  },
                  "scopeType": {
                    "type": "string"
                  },
                  "scopeId": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  },
                  "action": {
                    "type": "string"
                  },
                  "paymentId": {
                    "type": "string"
                  },
                  "outboxId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "networkLabel": {
                    "type": "string"
                  },
                  "countryLabel": {
                    "type": "string"
                  },
                  "mediaUrl": {
                    "type": "string"
                  },
                  "version": {
                    "type": "number"
                  },
                  "releaseAt": {
                    "type": "number"
                  },
                  "baselineToman": {
                    "type": "number"
                  },
                  "trialToman": {
                    "type": "number"
                  },
                  "trialBps": {
                    "type": "number"
                  },
                  "minSamples": {
                    "type": "number"
                  },
                  "compensationToman": {
                    "type": "number"
                  },
                  "cancel": {
                    "type": "boolean"
                  },
                  "pacing": {
                    "type": "string",
                    "enum": [
                      "asap",
                      "even"
                    ]
                  },
                  "weekdays": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 6
                    }
                  },
                  "hours": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 168
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 23
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/ops/push-trace": {
      "get": {
        "summary": "Operational tool: push-trace",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/ops/sandbox": {
      "get": {
        "summary": "Operational tool: sandbox",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "unitId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "Operational tool: sandbox",
        "description": "Authenticated panel with role/ownership checks; verified email according to policy. Mutations require exact Origin and X-Didnex-CSRF. Financial routes require owner/finance; sensitive writes require step-up. Action-specific semantics and limits: OPERATIONS_8_24.md. GET never mutates money.",
        "tags": [
          "Operational tools"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Actual scoped report or committed result"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Invalid input"
          },
          "403": {
            "description": "Role/ownership/step-up required"
          },
          "409": {
            "description": "Stale version, duplicate warning, insufficient funds or incompatible state"
          }
        },
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "campaignId": {
                    "type": "string"
                  },
                  "unitId": {
                    "type": "string"
                  },
                  "deliveryId": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "decision": {
                    "type": "string"
                  },
                  "reason": {
                    "type": "string"
                  },
                  "scopeType": {
                    "type": "string"
                  },
                  "scopeId": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  },
                  "action": {
                    "type": "string"
                  },
                  "paymentId": {
                    "type": "string"
                  },
                  "outboxId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "networkLabel": {
                    "type": "string"
                  },
                  "countryLabel": {
                    "type": "string"
                  },
                  "mediaUrl": {
                    "type": "string"
                  },
                  "version": {
                    "type": "number"
                  },
                  "releaseAt": {
                    "type": "number"
                  },
                  "baselineToman": {
                    "type": "number"
                  },
                  "trialToman": {
                    "type": "number"
                  },
                  "trialBps": {
                    "type": "number"
                  },
                  "minSamples": {
                    "type": "number"
                  },
                  "compensationToman": {
                    "type": "number"
                  },
                  "cancel": {
                    "type": "boolean"
                  },
                  "pacing": {
                    "type": "string",
                    "enum": [
                      "asap",
                      "even"
                    ]
                  },
                  "weekdays": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 6
                    }
                  },
                  "hours": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 168
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 23
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/report-assistant": {
      "get": {
        "summary": "Read own statistical assistance",
        "tags": [
          "Reports"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "description": "Required for organization-scoped reports. Membership is checked.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 90,
              "default": 7
            }
          }
        ],
        "description": "Independent session, verified email according to policy, membership and role scope are enforced. Viewer is read-only. No campaign, budget or financial mutation. GET never calls an external model. POST requires session CSRF; an operator-configured HTTPS provider and outbound allowlist are required. Only aggregate own-scope evidence and the bounded question leave the service. Eight generations per user/hour. Sandbox blocks external generation.",
        "responses": {
          "200": {
            "description": "Scoped report, including evidence and optional generation status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "role",
                    "window",
                    "current",
                    "previous",
                    "findings",
                    "provider",
                    "readOnly",
                    "engine"
                  ],
                  "properties": {
                    "role": {
                      "type": "string",
                      "enum": [
                        "publisher"
                      ]
                    },
                    "window": {
                      "type": "object",
                      "description": "Current and adjacent equal-duration previous windows; Asia/Tehran."
                    },
                    "current": {
                      "type": "object",
                      "description": "Allowlisted aggregate metrics. amountMilli is milli-rial; null is undefined ratio."
                    },
                    "previous": {
                      "type": "object"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "category",
                          "level",
                          "title",
                          "detail",
                          "action",
                          "evidence"
                        ]
                      }
                    },
                    "provider": {
                      "type": "object",
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        },
                        "configured": {
                          "type": "boolean"
                        },
                        "available": {
                          "type": "boolean"
                        }
                      }
                    },
                    "readOnly": {
                      "const": true
                    },
                    "engine": {
                      "const": "explainable_statistics"
                    },
                    "generation": {
                      "type": "object",
                      "description": "Optional explicit POST result: ready with plain text, or unavailable with statistical evidence retained."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid days, question or browser-supplied snapshot"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "CSRF, verified email, membership or role required"
          },
          "405": {
            "description": "Unsupported method"
          },
          "409": {
            "description": "report_ai_not_configured"
          },
          "429": {
            "description": "Generation or panel rate limit"
          }
        }
      },
      "post": {
        "summary": "Explicitly request an AI narrative from own fresh aggregate evidence",
        "tags": [
          "Reports"
        ],
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "org",
            "in": "query",
            "required": true,
            "description": "Required for organization-scoped reports. Membership is checked.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 90,
              "default": 7
            }
          }
        ],
        "description": "Independent session, verified email according to policy, membership and role scope are enforced. Viewer is read-only. No campaign, budget or financial mutation. GET never calls an external model. POST requires session CSRF; an operator-configured HTTPS provider and outbound allowlist are required. Only aggregate own-scope evidence and the bounded question leave the service. Eight generations per user/hour. Sandbox blocks external generation.",
        "responses": {
          "200": {
            "description": "Scoped report, including evidence and optional generation status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "role",
                    "window",
                    "current",
                    "previous",
                    "findings",
                    "provider",
                    "readOnly",
                    "engine"
                  ],
                  "properties": {
                    "role": {
                      "type": "string",
                      "enum": [
                        "publisher"
                      ]
                    },
                    "window": {
                      "type": "object",
                      "description": "Current and adjacent equal-duration previous windows; Asia/Tehran."
                    },
                    "current": {
                      "type": "object",
                      "description": "Allowlisted aggregate metrics. amountMilli is milli-rial; null is undefined ratio."
                    },
                    "previous": {
                      "type": "object"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "category",
                          "level",
                          "title",
                          "detail",
                          "action",
                          "evidence"
                        ]
                      }
                    },
                    "provider": {
                      "type": "object",
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        },
                        "configured": {
                          "type": "boolean"
                        },
                        "available": {
                          "type": "boolean"
                        }
                      }
                    },
                    "readOnly": {
                      "const": true
                    },
                    "engine": {
                      "const": "explainable_statistics"
                    },
                    "generation": {
                      "type": "object",
                      "description": "Optional explicit POST result: ready with plain text, or unavailable with statistical evidence retained."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid days, question or browser-supplied snapshot"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "CSRF, verified email, membership or role required"
          },
          "405": {
            "description": "Unsupported method"
          },
          "409": {
            "description": "report_ai_not_configured"
          },
          "429": {
            "description": "Generation or panel rate limit"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "question": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 600
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "Organization": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "advertiser",
              "publisher"
            ]
          },
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          }
        },
        "required": [
          "type",
          "name"
        ],
        "additionalProperties": false
      },
      "Asset": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/SiteAsset"
          },
          {
            "$ref": "#/components/schemas/AppAsset"
          }
        ]
      },
      "Unit": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "format": {
            "type": "string",
            "enum": [
              "banner",
              "adaptive_banner",
              "native",
              "native_video",
              "video",
              "interstitial",
              "rewarded",
              "rewarded_interstitial",
              "app_open",
              "playable",
              "audio",
              "carousel",
              "poll"
            ]
          },
          "rewardLabel": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "Required for rewarded formats; digital in-app reward label"
          },
          "rewardAmount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000,
            "description": "Required for rewarded formats"
          }
        },
        "required": [
          "assetId",
          "name",
          "format"
        ],
        "additionalProperties": false
      },
      "AdRequest": {
        "type": "object",
        "properties": {
          "unitId": {
            "type": "string"
          },
          "packageName": {
            "type": "string",
            "description": "Registered package for app requests"
          },
          "device": {
            "type": "string",
            "enum": [
              "android",
              "ios"
            ],
            "description": "Required for app"
          },
          "country": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "sessionId": {
            "type": "string",
            "minLength": 16,
            "maxLength": 128,
            "description": "Required for app; Web SDK uses an in-memory page-session nonce."
          },
          "personalized": {
            "const": false,
            "type": "boolean"
          },
          "childDirected": {
            "type": "boolean"
          },
          "diagnosticToken": {
            "type": "string",
            "description": "15-minute owner-issued no-billing diagnostic token"
          },
          "enrollmentToken": {
            "type": "string",
            "description": "Signed enrollment passed on EVERY request for experiment exposure control"
          },
          "installationToken": {
            "type": "string",
            "description": "Private installation capability; never log"
          },
          "requestNonce": {
            "type": "string",
            "minLength": 16,
            "maxLength": 128
          },
          "supportedFormats": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "banner",
                "adaptive_banner",
                "native",
                "native_video",
                "video",
                "interstitial",
                "rewarded",
                "rewarded_interstitial",
                "app_open",
                "playable",
                "audio",
                "carousel",
                "poll"
              ]
            }
          },
          "rewardSessionToken": {
            "type": "string",
            "description": "Server-created token, required for rewarded unit; one delivery per session"
          },
          "formFactor": {
            "type": "string",
            "enum": [
              "mobile",
              "tablet",
              "unknown"
            ],
            "description": "App only; optional = unknown. Forward coarse SDK class via authenticated publisher proxy; not device attestation."
          },
          "ipadOS": {
            "type": "boolean"
          },
          "context": {
            "$ref": "#/components/schemas/AdContext"
          },
          "consentReceipt": {
            "type": "string",
            "description": "Signed receipt bound to this unit and random session"
          },
          "storyConsent": {
            "type": "boolean"
          },
          "integrityTicket": {
            "type": "string",
            "description": "One-use signed proof; bound to installation/unit/nonce"
          },
          "supportedPlayableTemplates": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "tap_target",
                "memory_pairs",
                "color_match",
                "quick_math",
                "number_order",
                "sequence_memory"
              ]
            },
            "maxItems": 6,
            "uniqueItems": true,
            "description": "Omit for legacy tap_target and memory_pairs only. Send supported template IDs to receive new templates. Unsupported creatives never reserve budget."
          }
        },
        "required": [
          "unitId"
        ],
        "additionalProperties": false
      },
      "AdResponse": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string"
          },
          "expiresAt": {
            "type": "integer"
          },
          "format": {
            "type": "string",
            "enum": [
              "banner",
              "adaptive_banner",
              "native",
              "native_video",
              "video",
              "interstitial",
              "rewarded",
              "rewarded_interstitial",
              "app_open",
              "playable",
              "audio",
              "carousel",
              "poll"
            ]
          },
          "title": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "creativeUrl": {
            "type": "string",
            "format": "uri"
          },
          "clickUrl": {
            "type": "string",
            "format": "uri"
          },
          "events": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "uri"
            }
          },
          "vastUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "noFill": {
            "type": "boolean"
          },
          "reason": {
            "type": "string"
          },
          "personalized": {
            "const": false
          },
          "mediaType": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "playable",
              "audio"
            ]
          },
          "placement": {
            "type": "string",
            "enum": [
              "inline",
              "fullscreen"
            ]
          },
          "videoDurationMs": {
            "type": "integer",
            "minimum": 0
          },
          "creativeWidth": {
            "type": "integer",
            "minimum": 0
          },
          "creativeHeight": {
            "type": "integer",
            "minimum": 0
          },
          "reward": {
            "$ref": "#/components/schemas/RewardOffer"
          },
          "cta": {
            "type": "string"
          },
          "policy": {
            "type": "object"
          },
          "telemetry": {
            "type": "object"
          },
          "diagnostic": {
            "type": "boolean"
          },
          "diagnosticToken": {
            "type": "string"
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "deviceContext": {
            "$ref": "#/components/schemas/DeviceContext"
          },
          "servingOrigin": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          "house": {
            "type": "boolean"
          },
          "external": {
            "type": "boolean"
          },
          "billable": {
            "type": "boolean"
          },
          "revenueUrl": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          "reportUrl": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          "deepLink": {
            "type": [
              "string",
              "null"
            ]
          },
          "fallbackUrl": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          "audio": {
            "type": "object",
            "properties": {
              "durationMs": {
                "type": "integer",
                "minimum": 3000,
                "maximum": 180000
              },
              "codec": {
                "type": "string"
              },
              "transcript": {
                "type": "string"
              },
              "companionUrl": {
                "type": "string",
                "format": "uri"
              },
              "autoplay": {
                "const": false
              },
              "backgroundPlayback": {
                "const": false
              }
            },
            "required": [],
            "additionalProperties": false
          },
          "mediaSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdaptiveMediaSource"
            },
            "maxItems": 3
          },
          "appleAttribution": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AppleImpression"
              },
              {
                "type": "null"
              }
            ]
          },
          "playableUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "playableConfig": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PlayableInput"
              },
              {
                "type": "null"
              }
            ]
          },
          "slot": {
            "$ref": "#/components/schemas/SlotContract"
          }
        }
      },
      "Invite": {
        "type": "object",
        "properties": {
          "recipientId": {
            "type": "string",
            "description": "Canonical recipient account ID copied from My Account; required for unverified emails"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Legacy trusted verified accounts only"
          },
          "role": {
            "type": "string",
            "enum": [
              "manager",
              "finance",
              "viewer"
            ]
          }
        },
        "required": [
          "role"
        ],
        "additionalProperties": false
      },
      "Ticket": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "support",
              "privacy"
            ]
          },
          "subject": {
            "type": "string",
            "minLength": 3,
            "maxLength": 100
          },
          "message": {
            "type": "string",
            "minLength": 10,
            "maxLength": 3000
          }
        },
        "required": [
          "type",
          "subject",
          "message"
        ],
        "additionalProperties": false
      },
      "UnitPolicy": {
        "type": "object",
        "properties": {
          "sessionCap": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30
          },
          "minIntervalMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 600000
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 1000,
            "maximum": 15000
          },
          "maxVideoMs": {
            "type": "integer",
            "minimum": 5000,
            "maximum": 180000
          },
          "blockedCategories": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "general",
                "shopping",
                "technology",
                "education",
                "games",
                "entertainment",
                "travel",
                "food",
                "services"
              ]
            },
            "uniqueItems": true
          }
        },
        "required": [
          "sessionCap",
          "minIntervalMs",
          "timeoutMs",
          "maxVideoMs",
          "blockedCategories"
        ],
        "additionalProperties": false
      },
      "Telemetry": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "loaded",
              "error",
              "impression",
              "destroy"
            ]
          },
          "signature": {
            "type": "string",
            "description": "Delivery signature; required for real deliveries"
          },
          "diagnosticToken": {
            "type": "string",
            "description": "Required instead of signature for diagnostic reports"
          },
          "latencyMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60000
          },
          "errorCode": {
            "type": "string",
            "maxLength": 80
          },
          "sdkVersion": {
            "type": "string",
            "maxLength": 30
          }
        },
        "required": [
          "requestId",
          "kind"
        ],
        "additionalProperties": false
      },
      "MarketListing": {
        "type": "object",
        "properties": {
          "unitId": {
            "type": "string"
          },
          "title": {
            "type": "string",
            "minLength": 3,
            "maxLength": 80
          },
          "description": {
            "type": "string",
            "minLength": 10,
            "maxLength": 1500
          },
          "category": {
            "type": "string",
            "enum": [
              "general",
              "shopping",
              "technology",
              "education",
              "games",
              "entertainment",
              "travel",
              "food",
              "services"
            ]
          },
          "model": {
            "type": "string",
            "enum": [
              "CPC",
              "CPM"
            ]
          },
          "minRate": {
            "type": "integer",
            "minimum": 1,
            "description": "Toman"
          },
          "terms": {
            "type": "string",
            "minLength": 10,
            "maxLength": 2000
          }
        },
        "required": [
          "unitId",
          "title",
          "description",
          "category",
          "model",
          "minRate",
          "terms"
        ],
        "additionalProperties": false
      },
      "MarketDeal": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "string"
          },
          "campaignId": {
            "type": "string"
          },
          "rate": {
            "type": "integer",
            "minimum": 1,
            "description": "Toman; cannot be less than listing minimum"
          },
          "budget": {
            "type": "integer",
            "minimum": 1000,
            "description": "Toman; capped by campaign budget"
          },
          "startsAt": {
            "type": "integer",
            "description": "Unix milliseconds; defaults to now"
          },
          "endsAt": {
            "type": "integer",
            "description": "Cannot exceed campaign end"
          }
        },
        "required": [
          "listingId",
          "campaignId",
          "rate",
          "budget",
          "endsAt"
        ],
        "additionalProperties": false
      },
      "Experiment": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 3,
            "maxLength": 80
          },
          "targetId": {
            "type": "string",
            "description": "Owned campaign for advertiser, owned unit for publisher"
          },
          "metric": {
            "type": "string",
            "enum": [
              "purchase",
              "activation",
              "retained_d7"
            ]
          },
          "minPerArm": {
            "type": "integer",
            "minimum": 100,
            "maximum": 1000000,
            "default": 500
          },
          "observationHours": {
            "type": "integer",
            "minimum": 1,
            "maximum": 720,
            "description": "Default 24; retained_d7 requires at least 168"
          }
        },
        "required": [
          "name",
          "targetId",
          "metric"
        ],
        "additionalProperties": false
      },
      "ExperimentEnrollment": {
        "type": "object",
        "properties": {
          "experimentId": {
            "type": "string"
          },
          "subjectToken": {
            "type": "string",
            "minLength": 16,
            "maxLength": 128,
            "description": "Opaque random stable token scoped to experiment; no raw account/contact identifiers"
          },
          "consent": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "experimentId",
          "subjectToken",
          "consent"
        ],
        "additionalProperties": false
      },
      "ExperimentOutcome": {
        "type": "object",
        "properties": {
          "enrollmentToken": {
            "type": "string"
          },
          "externalId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "valueRial": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1000000000000,
            "default": 0
          },
          "observedAt": {
            "type": "integer",
            "description": "Actual event time within subject observation window; default receive time"
          }
        },
        "required": [
          "enrollmentToken",
          "externalId"
        ],
        "additionalProperties": false
      },
      "RewardOffer": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50
          },
          "amount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          }
        },
        "required": [
          "label",
          "amount"
        ],
        "additionalProperties": false
      },
      "RewardSession": {
        "type": "object",
        "properties": {
          "unitId": {
            "type": "string"
          },
          "userRef": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Opaque value derived by authenticated publisher backend, not app-supplied identity"
          },
          "externalId": {
            "type": "string",
            "minLength": 16,
            "maxLength": 100,
            "description": "Unique attempt; same payload replays same session"
          }
        },
        "required": [
          "unitId",
          "userRef",
          "externalId"
        ],
        "additionalProperties": false
      },
      "RewardVerify": {
        "type": "object",
        "properties": {
          "deliveryId": {
            "type": "string"
          },
          "userRef": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "deliveryId",
          "userRef"
        ],
        "additionalProperties": false
      },
      "RewardAck": {
        "type": "object",
        "properties": {
          "grantId": {
            "type": "string"
          },
          "userRef": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "reference": {
            "type": "string",
            "minLength": 1,
            "maxLength": 150
          }
        },
        "required": [
          "grantId",
          "userRef",
          "reference"
        ],
        "additionalProperties": false
      },
      "RewardReceipt": {
        "type": "object",
        "properties": {
          "verified": {
            "const": true,
            "type": "boolean"
          },
          "grantId": {
            "type": "string"
          },
          "deliveryId": {
            "type": "string"
          },
          "reward": {
            "$ref": "#/components/schemas/RewardOffer"
          },
          "verifiedAt": {
            "type": "integer"
          },
          "acknowledged": {
            "type": "boolean"
          }
        },
        "required": [
          "verified",
          "grantId",
          "deliveryId",
          "reward",
          "verifiedAt",
          "acknowledged"
        ],
        "additionalProperties": false
      },
      "RewardSessionResponse": {
        "type": "object",
        "properties": {
          "sessionToken": {
            "type": "string"
          },
          "expiresAt": {
            "type": "integer"
          },
          "reward": {
            "$ref": "#/components/schemas/RewardOffer"
          }
        },
        "required": [
          "sessionToken",
          "expiresAt",
          "reward"
        ],
        "additionalProperties": false
      },
      "AnalyticsRow": {
        "type": "object",
        "properties": {
          "impressions": {
            "type": "integer",
            "minimum": 0
          },
          "clicks": {
            "type": "integer",
            "minimum": 0
          },
          "amountMilli": {
            "type": "integer",
            "minimum": 0
          },
          "publisherRevenueMilli": {
            "type": "integer",
            "minimum": 0
          },
          "networkFeeMilli": {
            "type": "integer",
            "minimum": 0
          },
          "requests": {
            "type": [
              "integer",
              "null"
            ]
          },
          "filled": {
            "type": [
              "integer",
              "null"
            ]
          },
          "conversions": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ctr": {
            "type": [
              "number",
              "null"
            ]
          },
          "ecpmMilli": {
            "type": [
              "number",
              "null"
            ]
          },
          "effectiveCpcMilli": {
            "type": [
              "number",
              "null"
            ]
          },
          "fillRate": {
            "type": [
              "number",
              "null"
            ]
          },
          "day": {
            "type": "string"
          },
          "format": {
            "type": "string",
            "enum": [
              "banner",
              "adaptive_banner",
              "native",
              "native_video",
              "video",
              "interstitial",
              "rewarded",
              "rewarded_interstitial",
              "app_open",
              "playable",
              "audio",
              "carousel",
              "poll"
            ]
          },
          "device": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "platform": {
            "type": "string",
            "enum": [
              "android",
              "ios",
              "windows",
              "macos",
              "linux",
              "other",
              "unknown"
            ]
          },
          "formFactor": {
            "type": "string",
            "enum": [
              "mobile",
              "tablet",
              "desktop",
              "unknown"
            ]
          },
          "inventoryType": {
            "type": "string",
            "enum": [
              "app",
              "site",
              "unknown"
            ]
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "AnalyticsReport": {
        "type": "object",
        "properties": {
          "impressions": {
            "type": "integer",
            "minimum": 0
          },
          "clicks": {
            "type": "integer",
            "minimum": 0
          },
          "amountMilli": {
            "type": "integer",
            "minimum": 0
          },
          "publisherRevenueMilli": {
            "type": "integer",
            "minimum": 0
          },
          "networkFeeMilli": {
            "type": "integer",
            "minimum": 0
          },
          "requests": {
            "type": [
              "integer",
              "null"
            ]
          },
          "filled": {
            "type": [
              "integer",
              "null"
            ]
          },
          "conversions": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ctr": {
            "type": [
              "number",
              "null"
            ]
          },
          "ecpmMilli": {
            "type": [
              "number",
              "null"
            ]
          },
          "effectiveCpcMilli": {
            "type": [
              "number",
              "null"
            ]
          },
          "fillRate": {
            "type": [
              "number",
              "null"
            ]
          },
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90
          },
          "since": {
            "type": "integer"
          },
          "asOf": {
            "type": "integer"
          },
          "timezone": {
            "const": "Asia/Tehran"
          },
          "partialToday": {
            "const": true,
            "type": "boolean"
          },
          "hasData": {
            "type": "boolean"
          },
          "daily": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsRow"
            }
          },
          "byFormat": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsRow"
            }
          },
          "byDevice": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsRow"
            }
          },
          "leaders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsRow"
            }
          },
          "noFillReasons": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "reason": {
                  "type": "string"
                },
                "count": {
                  "type": "integer"
                }
              },
              "required": [
                "reason",
                "count"
              ],
              "additionalProperties": false
            }
          },
          "videoFunnel": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "start",
                    "firstQuartile",
                    "midpoint",
                    "thirdQuartile",
                    "complete"
                  ]
                },
                "count": {
                  "type": "integer"
                }
              },
              "required": [
                "kind",
                "count"
              ],
              "additionalProperties": false
            }
          },
          "rewards": {
            "type": "object",
            "properties": {
              "verified": {
                "type": "integer"
              },
              "applied": {
                "type": "integer"
              }
            },
            "required": [
              "verified",
              "applied"
            ],
            "additionalProperties": false
          },
          "byPlatform": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsRow"
            }
          },
          "byFormFactor": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsRow"
            }
          },
          "byInventory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalyticsRow"
            }
          }
        },
        "required": [
          "impressions",
          "clicks",
          "amountMilli",
          "days",
          "since",
          "asOf",
          "timezone",
          "daily"
        ],
        "additionalProperties": false
      },
      "AccountProfile": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "phone": {
            "type": "string",
            "description": "Optional normalized E.164 contact number; not SMS verified"
          },
          "phoneVerified": {
            "const": false,
            "type": "boolean"
          },
          "intent": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "advertiser",
              "publisher",
              null
            ]
          },
          "completed": {
            "type": "boolean"
          },
          "completedAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "updatedAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "provider": {
            "const": "password"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "emailVerified": {
            "type": "boolean"
          }
        },
        "required": [
          "displayName",
          "phone",
          "phoneVerified",
          "completed",
          "provider",
          "email"
        ],
        "additionalProperties": false
      },
      "AccountUpdate": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "phone": {
            "type": "string",
            "maxLength": 25
          },
          "intent": {
            "type": "string",
            "enum": [
              "advertiser",
              "publisher"
            ]
          }
        },
        "required": [
          "displayName",
          "intent"
        ],
        "additionalProperties": false
      },
      "AccountRegistration": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "phone": {
            "type": "string",
            "maxLength": 25
          },
          "intent": {
            "type": "string",
            "enum": [
              "advertiser",
              "publisher"
            ]
          },
          "organizationName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          }
        },
        "required": [
          "displayName",
          "intent",
          "organizationName"
        ],
        "additionalProperties": false
      },
      "DeviceContext": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "enum": [
              "android",
              "ios",
              "windows",
              "macos",
              "linux",
              "other",
              "unknown"
            ]
          },
          "formFactor": {
            "type": "string",
            "enum": [
              "mobile",
              "tablet",
              "desktop",
              "unknown"
            ]
          },
          "inventoryType": {
            "type": "string",
            "enum": [
              "app",
              "site"
            ]
          }
        },
        "required": [
          "platform",
          "formFactor",
          "inventoryType"
        ],
        "additionalProperties": false
      },
      "PasswordRegister": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "description": "NFC normalized; administrator minimum 8–64 from /api/auth/config; 8–128 Unicode code points, <=512 UTF-8 bytes; do not trim spaces"
          },
          "displayName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "phone": {
            "type": "string",
            "maxLength": 25
          },
          "intent": {
            "type": "string",
            "enum": [
              "advertiser",
              "publisher"
            ]
          },
          "organizationName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "remember": {
            "type": "boolean"
          }
        },
        "required": [
          "email",
          "password",
          "displayName",
          "intent",
          "organizationName"
        ],
        "additionalProperties": false
      },
      "PasswordLogin": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email"
          },
          "password": {
            "type": "string",
            "maxLength": 128
          },
          "remember": {
            "type": "boolean"
          }
        },
        "required": [
          "email",
          "password"
        ],
        "additionalProperties": false
      },
      "PasswordActivation": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "description": "NFC normalized; administrator minimum 8–64 from /api/auth/config; 8–128 Unicode code points, <=512 UTF-8 bytes; do not trim spaces"
          },
          "displayName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          }
        },
        "required": [
          "token",
          "password",
          "displayName"
        ],
        "additionalProperties": false
      },
      "PasswordChange": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string",
            "maxLength": 128
          },
          "newPassword": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "description": "NFC normalized; administrator minimum 8–64 from /api/auth/config; 8–128 Unicode code points, <=512 UTF-8 bytes; do not trim spaces"
          }
        },
        "required": [
          "currentPassword",
          "newPassword"
        ],
        "additionalProperties": false
      },
      "AuthResult": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "orgId": {
            "type": "string"
          },
          "signin": {
            "type": "string"
          },
          "current": {
            "type": "boolean"
          },
          "verificationRequired": {
            "type": "boolean"
          },
          "emailQueued": {
            "type": "boolean"
          }
        },
        "required": [
          "ok"
        ],
        "additionalProperties": false
      },
      "SessionInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "device_label": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "last_seen_at": {
            "type": "integer"
          },
          "expires_at": {
            "type": "integer"
          },
          "current": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "device_label",
          "created_at",
          "last_seen_at",
          "expires_at",
          "current"
        ],
        "additionalProperties": false
      },
      "SessionList": {
        "type": "object",
        "properties": {
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionInfo"
            }
          }
        },
        "required": [
          "sessions"
        ],
        "additionalProperties": false
      },
      "AuthConfig": {
        "type": "object",
        "properties": {
          "provider": {
            "const": "password"
          },
          "passwordMinLength": {
            "type": "integer",
            "minimum": 8,
            "maximum": 64
          },
          "passwordMaxLength": {
            "const": 128
          },
          "recoveryMethod": {
            "const": "email"
          },
          "emailDelivery": {
            "type": "boolean"
          },
          "mfa": {
            "const": "totp"
          },
          "emailVerificationRequired": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "provider",
          "passwordMinLength",
          "passwordMaxLength",
          "recoveryMethod",
          "emailDelivery"
        ],
        "additionalProperties": false
      },
      "SessionUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "name": {
            "type": "string"
          },
          "admin": {
            "type": "boolean"
          },
          "sessionId": {
            "type": "string"
          },
          "authVersion": {
            "type": "integer"
          },
          "emailVerified": {
            "type": "boolean"
          },
          "verificationRequired": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "email",
          "name",
          "admin",
          "sessionId",
          "authVersion",
          "emailVerified"
        ],
        "additionalProperties": false
      },
      "MeResponse": {
        "type": "object",
        "properties": {
          "user": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SessionUser"
              },
              {
                "type": "null"
              }
            ]
          },
          "account": {
            "$ref": "#/components/schemas/AccountProfile"
          },
          "orgs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "csrf": {
            "type": "string"
          },
          "provider": {
            "const": "password"
          },
          "signin": {
            "type": "string"
          },
          "register": {
            "type": "string"
          },
          "recover": {
            "type": "string"
          }
        },
        "required": [
          "user"
        ],
        "additionalProperties": false
      },
      "AdContext": {
        "type": "object",
        "properties": {
          "topics": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 50
            },
            "maxItems": 20
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 50
            },
            "maxItems": 30
          },
          "language": {
            "type": "string",
            "enum": [
              "fa",
              "en",
              "ar",
              "tr"
            ],
            "default": "fa"
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "MfaChallenge": {
        "type": "object",
        "properties": {
          "mfaRequired": {
            "const": true
          },
          "challenge": {
            "type": "string",
            "minLength": 64,
            "maxLength": 64
          }
        },
        "required": [
          "mfaRequired",
          "challenge"
        ],
        "additionalProperties": false
      },
      "MfaLogin": {
        "type": "object",
        "properties": {
          "challenge": {
            "type": "string",
            "minLength": 64,
            "maxLength": 64
          },
          "code": {
            "type": "string",
            "pattern": "^[0-9]{6}$"
          },
          "backupCode": {
            "type": "string",
            "description": "One-use private backup code; alternative to TOTP"
          }
        },
        "required": [
          "challenge"
        ],
        "additionalProperties": false
      },
      "StepUp": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "format": "password"
          },
          "code": {
            "type": "string",
            "pattern": "^[0-9]{6}$"
          },
          "backupCode": {
            "type": "string",
            "description": "One-use private backup code; alternative to TOTP"
          }
        },
        "required": [
          "password"
        ],
        "additionalProperties": false
      },
      "ConsentChoices": {
        "type": "object",
        "properties": {
          "externalAds": {
            "type": "boolean"
          },
          "analytics": {
            "type": "boolean"
          },
          "personalization": {
            "const": false
          },
          "tcString": {
            "type": "string",
            "maxLength": 4096
          },
          "gppString": {
            "type": "string",
            "maxLength": 4096
          }
        },
        "required": [
          "externalAds",
          "analytics"
        ],
        "additionalProperties": false
      },
      "ConsentRequest": {
        "type": "object",
        "properties": {
          "unitId": {
            "type": "string"
          },
          "packageName": {
            "type": "string",
            "description": "App requests: registered package, sent only by the publisher server"
          },
          "sessionId": {
            "type": "string",
            "minLength": 16,
            "maxLength": 128
          },
          "choices": {
            "$ref": "#/components/schemas/ConsentChoices"
          },
          "policyVersion": {
            "type": "string",
            "default": "1"
          }
        },
        "required": [
          "unitId",
          "sessionId",
          "choices"
        ],
        "additionalProperties": false
      },
      "ConsentReceipt": {
        "type": "object",
        "properties": {
          "receipt": {
            "type": "string"
          },
          "choices": {
            "$ref": "#/components/schemas/ConsentChoices"
          },
          "policyVersion": {
            "type": "string"
          },
          "expiresAt": {
            "type": "integer"
          }
        },
        "required": [
          "receipt",
          "choices",
          "policyVersion",
          "expiresAt"
        ],
        "additionalProperties": false
      },
      "Revenue": {
        "type": "object",
        "properties": {
          "deliveryId": {
            "type": "string"
          },
          "currency": {
            "const": "IRR"
          },
          "amountRial": {
            "type": "number"
          },
          "estimatedRial": {
            "type": "number"
          },
          "status": {
            "type": "string",
            "enum": [
              "reserved",
              "released",
              "pending",
              "confirmed",
              "reversed"
            ]
          },
          "precision": {
            "type": "string",
            "enum": [
              "estimated",
              "final",
              "reversed"
            ]
          },
          "model": {
            "type": "string",
            "enum": [
              "CPC",
              "CPM"
            ]
          }
        },
        "required": [
          "deliveryId",
          "currency",
          "amountRial",
          "estimatedRial",
          "status",
          "precision",
          "model"
        ],
        "additionalProperties": false
      },
      "UnitIntegration": {
        "type": "object",
        "properties": {
          "strategy": {
            "type": "string",
            "enum": [
              "internal_first",
              "external_first",
              "bidding"
            ]
          },
          "floorRial": {
            "type": "integer",
            "minimum": 0,
            "description": "Partner CPM floor, IRR"
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "additionalProperties": false
            },
            "maxItems": 3
          },
          "consentRequired": {
            "type": "boolean"
          },
          "privacyUrl": {
            "type": "string"
          },
          "policyVersion": {
            "type": "string"
          },
          "measurementEnabled": {
            "type": "boolean"
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "AlertRule": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "metric": {
            "type": "string",
            "enum": [
              "low_balance",
              "no_fill_rate",
              "sdk_errors",
              "budget_remaining",
              "revenue_drop"
            ]
          },
          "threshold": {
            "type": "integer",
            "minimum": 0
          },
          "windowMinutes": {
            "type": "integer",
            "minimum": 15,
            "maximum": 1440,
            "default": 60
          },
          "cooldownMinutes": {
            "type": "integer",
            "minimum": 15,
            "maximum": 10080,
            "default": 60
          },
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "metric",
          "threshold"
        ],
        "additionalProperties": false
      },
      "StudioScene": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "title": {
            "type": "string",
            "minLength": 2,
            "maxLength": 70
          },
          "subtitle": {
            "type": "string",
            "maxLength": 140
          },
          "cta": {
            "type": "string",
            "maxLength": 30
          },
          "durationMs": {
            "type": "integer",
            "minimum": 1000,
            "maximum": 15000
          },
          "background": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "foreground": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "accent": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "layout": {
            "type": "string",
            "enum": [
              "spotlight",
              "minimal",
              "split"
            ]
          },
          "animation": {
            "type": "string",
            "enum": [
              "fade",
              "slide",
              "zoom",
              "none"
            ]
          },
          "imageId": {
            "type": "string",
            "description": "Optional own image creative ID"
          },
          "fit": {
            "type": "string",
            "enum": [
              "contain",
              "cover"
            ]
          }
        },
        "required": [
          "id",
          "title",
          "durationMs",
          "background",
          "foreground",
          "accent",
          "layout",
          "animation"
        ],
        "additionalProperties": false
      },
      "StudioDocument": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "ratio": {
            "type": "string",
            "enum": [
              "portrait",
              "square",
              "landscape",
              "feed",
              "banner"
            ]
          },
          "brandName": {
            "type": "string",
            "maxLength": 60
          },
          "logoId": {
            "type": "string",
            "description": "Optional own image creative ID"
          },
          "scenes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StudioScene"
            },
            "minItems": 1,
            "maxItems": 8
          }
        },
        "required": [
          "version",
          "ratio",
          "scenes"
        ],
        "additionalProperties": false
      },
      "StudioProjectInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "document": {
            "$ref": "#/components/schemas/StudioDocument"
          }
        },
        "required": [
          "name",
          "document"
        ],
        "additionalProperties": false
      },
      "StudioProjectUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "document": {
            "$ref": "#/components/schemas/StudioDocument"
          }
        },
        "required": [
          "name",
          "version",
          "document"
        ],
        "additionalProperties": false
      },
      "StudioProject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "document": {
            "$ref": "#/components/schemas/StudioDocument"
          },
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "updated_at": {
            "type": "integer"
          },
          "archived_at": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "document",
          "version"
        ],
        "additionalProperties": false
      },
      "StudioBrand": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 60
          },
          "colors": {
            "type": "object",
            "properties": {
              "background": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "foreground": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "accent": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              }
            },
            "required": [
              "background",
              "foreground",
              "accent"
            ],
            "additionalProperties": false
          },
          "logoId": {
            "type": "string"
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "description": "0 creates a kit; later edits require the current version"
          }
        },
        "required": [
          "name",
          "colors",
          "version"
        ],
        "additionalProperties": false
      },
      "StudioExportStart": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string"
          },
          "format": {
            "type": "string",
            "enum": [
              "image/jpeg",
              "video/mp4",
              "video/webm"
            ]
          },
          "width": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1920
          },
          "height": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1920
          },
          "durationMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60000
          }
        },
        "required": [
          "format",
          "width",
          "height",
          "durationMs"
        ],
        "additionalProperties": false
      },
      "StudioExportUpdate": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "rendered",
              "uploaded",
              "failed",
              "cancelled"
            ]
          },
          "format": {
            "type": "string",
            "enum": [
              "image/jpeg",
              "video/mp4",
              "video/webm"
            ]
          },
          "creativeId": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20971520
          },
          "elapsedMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 300000
          },
          "errorCode": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,80}$"
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false
      },
      "SiteAsset": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "category": {
            "type": "string",
            "minLength": 2,
            "maxLength": 40
          },
          "language": {
            "type": "string",
            "enum": [
              "fa",
              "en",
              "ar",
              "tr"
            ],
            "default": "fa"
          },
          "type": {
            "const": "site"
          },
          "domain": {
            "type": "string",
            "description": "Public website hostname. DNS TXT ownership required."
          }
        },
        "required": [
          "type",
          "name",
          "category",
          "domain"
        ],
        "additionalProperties": false
      },
      "AppAsset": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "category": {
            "type": "string",
            "minLength": 2,
            "maxLength": 40
          },
          "language": {
            "type": "string",
            "enum": [
              "fa",
              "en",
              "ar",
              "tr"
            ],
            "default": "fa"
          },
          "type": {
            "const": "app"
          },
          "packageName": {
            "type": "string",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z0-9_]+)+$"
          },
          "storeUrl": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://",
            "description": "Required HTTPS published app store page; Google Play, Bazaar and Myket package identifiers must match. Link alone does not prove ownership."
          }
        },
        "required": [
          "type",
          "name",
          "category",
          "packageName",
          "storeUrl"
        ],
        "additionalProperties": false
      },
      "LocationRule": {
        "type": "object",
        "properties": {
          "includeCountries": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string"
            }
          },
          "excludeCountries": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string"
            }
          },
          "includeRegions": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string"
            }
          },
          "excludeRegions": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string"
            }
          },
          "includeCities": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string"
            }
          },
          "excludeCities": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "string"
            }
          },
          "radius": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "latitude": {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90
                  },
                  "longitude": {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  },
                  "km": {
                    "type": "number",
                    "minimum": 0.5,
                    "maximum": 1000
                  }
                },
                "required": [
                  "latitude",
                  "longitude",
                  "km"
                ],
                "additionalProperties": false
              }
            ]
          },
          "unknown": {
            "type": "string",
            "enum": [
              "exclude",
              "allow"
            ],
            "default": "exclude"
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "AudienceRequest": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "register",
              "claimReward",
              "balance",
              "spendReward",
              "revokeInstallation",
              "pushConfig",
              "subscribePush",
              "unsubscribePush",
              "inbox",
              "pushProfile",
              "pushTags",
              "pushIdentity",
              "pushLogout",
              "directInbox"
            ]
          },
          "unitId": {
            "type": "string"
          },
          "assetId": {
            "type": "string"
          },
          "packageName": {
            "type": "string"
          },
          "device": {
            "type": "string",
            "enum": [
              "android",
              "ios"
            ]
          },
          "installationToken": {
            "type": "string",
            "description": "Private asset-bound installation bearer; required except initial register. Never a publisher API key or global user identity."
          },
          "deliveryId": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "maxLength": 50
          },
          "amount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "externalId": {
            "type": "string",
            "minLength": 16,
            "maxLength": 100
          },
          "provider": {
            "type": "string",
            "enum": [
              "fcm",
              "webpush",
              "direct",
              "inbox"
            ],
            "description": "direct needs no Firebase credentials. inbox is explicit legacy in-app compatibility."
          },
          "token": {
            "type": "string",
            "description": "FCM device token; consent and configured provider required"
          },
          "subscription": {
            "type": "object"
          },
          "consent": {
            "type": "boolean"
          },
          "topics": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "type": "string",
              "maxLength": 40
            }
          },
          "language": {
            "type": "string",
            "maxLength": 20
          },
          "consentVersion": {
            "type": "string",
            "maxLength": 40
          },
          "tags": {
            "type": "object",
            "maxProperties": 30,
            "additionalProperties": {
              "type": "string",
              "maxLength": 200
            }
          },
          "version": {
            "type": "integer"
          },
          "identityToken": {
            "type": "string"
          },
          "actionId": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "required": [
          "action"
        ],
        "additionalProperties": false
      },
      "DirectAppRequest": {
        "type": "object",
        "properties": {
          "unitId": {
            "type": "string"
          },
          "packageName": {
            "type": "string",
            "description": "Public registered app package; not proof of authentic installation"
          },
          "device": {
            "type": "string",
            "enum": [
              "android",
              "ios"
            ]
          },
          "sessionId": {
            "type": "string",
            "minLength": 16,
            "maxLength": 128,
            "description": "Required for app; Web SDK uses an in-memory page-session nonce."
          },
          "personalized": {
            "const": false,
            "type": "boolean"
          },
          "childDirected": {
            "type": "boolean"
          },
          "diagnosticToken": {
            "type": "string",
            "description": "15-minute owner-issued no-billing diagnostic token"
          },
          "enrollmentToken": {
            "type": "string",
            "description": "Signed enrollment passed on EVERY request for experiment exposure control"
          },
          "installationToken": {
            "type": "string",
            "description": "SDK-managed hosted installation token; required for rewarded delivery"
          },
          "requestNonce": {
            "type": "string",
            "minLength": 16,
            "maxLength": 100
          },
          "supportedFormats": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "banner",
                "adaptive_banner",
                "native",
                "native_video",
                "video",
                "interstitial",
                "rewarded",
                "rewarded_interstitial",
                "app_open",
                "playable",
                "carousel",
                "poll"
              ]
            },
            "maxItems": 9,
            "description": "Omitted = legacy banner/native/video. Unsupported unit returns noFill without reservation."
          },
          "formFactor": {
            "type": "string",
            "enum": [
              "mobile",
              "tablet",
              "unknown"
            ],
            "description": "App only; optional = unknown. Forward coarse SDK class via authenticated publisher proxy; not device attestation."
          },
          "ipadOS": {
            "type": "boolean"
          },
          "context": {
            "$ref": "#/components/schemas/AdContext"
          },
          "consentReceipt": {
            "type": "string",
            "description": "Signed receipt bound to this unit and random session"
          },
          "action": {
            "type": "string",
            "enum": [
              "requestAd"
            ]
          },
          "rewarded": {
            "type": "boolean"
          },
          "supportedPlayableTemplates": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "tap_target",
                "memory_pairs",
                "color_match",
                "quick_math",
                "number_order",
                "sequence_memory"
              ]
            },
            "maxItems": 6,
            "uniqueItems": true,
            "description": "Omit for legacy tap_target and memory_pairs only. Send supported template IDs to receive new templates. Unsupported creatives never reserve budget."
          }
        },
        "required": [
          "unitId",
          "packageName",
          "device",
          "sessionId"
        ],
        "additionalProperties": false
      },
      "DirectAppConsent": {
        "type": "object",
        "properties": {
          "unitId": {
            "type": "string"
          },
          "packageName": {
            "type": "string",
            "description": "App requests: registered package, sent only by the publisher server"
          },
          "sessionId": {
            "type": "string",
            "minLength": 16,
            "maxLength": 128
          },
          "choices": {
            "$ref": "#/components/schemas/ConsentChoices"
          },
          "policyVersion": {
            "type": "string",
            "default": "1"
          },
          "action": {
            "type": "string",
            "const": "consent"
          },
          "device": {
            "type": "string",
            "enum": [
              "android",
              "ios"
            ]
          },
          "formFactor": {
            "type": "string",
            "enum": [
              "mobile",
              "tablet",
              "unknown"
            ]
          }
        },
        "required": [
          "action",
          "unitId",
          "packageName",
          "device",
          "sessionId",
          "choices"
        ],
        "additionalProperties": false
      },
      "AdaptiveMediaSource": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "mime": {
            "const": "video/mp4"
          },
          "quality": {
            "type": "string",
            "enum": [
              "360p",
              "540p",
              "720p"
            ]
          },
          "width": {
            "type": "integer"
          },
          "height": {
            "type": "integer"
          },
          "bitrate": {
            "type": "integer"
          },
          "bytes": {
            "type": "integer"
          }
        },
        "required": [
          "url",
          "mime",
          "quality",
          "width",
          "height",
          "bitrate",
          "bytes"
        ]
      },
      "ReportScheduleInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "cadence": {
            "type": "string",
            "enum": [
              "daily",
              "weekly"
            ]
          },
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "impressions",
                "clicks",
                "amountMilli",
                "ctr",
                "requests",
                "filled",
                "fillRate",
                "conversions",
                "customers"
              ]
            },
            "minItems": 1,
            "maxItems": 9,
            "uniqueItems": true
          },
          "recipientIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true
          },
          "confirmEmailDelivery": {
            "const": true
          }
        },
        "required": [
          "name",
          "cadence",
          "days",
          "recipientIds",
          "confirmEmailDelivery"
        ]
      },
      "ReportInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "impressions",
                "clicks",
                "amountMilli",
                "ctr",
                "requests",
                "filled",
                "fillRate",
                "conversions",
                "customers"
              ]
            },
            "minItems": 1,
            "maxItems": 9,
            "uniqueItems": true
          }
        },
        "required": [
          "name",
          "days"
        ]
      },
      "FinancialApprovalPending": {
        "type": "object",
        "properties": {
          "approvalRequired": {
            "const": true
          },
          "id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "approvalRequired",
          "id",
          "message"
        ]
      },
      "AppleImpression": {
        "type": "object",
        "properties": {
          "compactJWS": {
            "type": "string",
            "description": "Signed network ES256 impression. Never contains the private key."
          },
          "impressionId": {
            "type": "string",
            "format": "uuid"
          },
          "advertisedItemId": {
            "type": "string"
          },
          "networkIdentifier": {
            "type": "string"
          },
          "expiresAt": {
            "type": "integer"
          }
        },
        "required": [
          "compactJWS",
          "expiresAt"
        ]
      },
      "StudioComment": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "timeMs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60000
          },
          "x": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "y": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "message": {
            "type": "string",
            "minLength": 2,
            "maxLength": 1500
          },
          "assigneeId": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "timeMs",
          "x",
          "y",
          "message"
        ]
      },
      "StudioReview": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "decision": {
            "type": "string",
            "enum": [
              "approved",
              "changes_requested"
            ]
          },
          "message": {
            "type": "string",
            "maxLength": 500
          }
        },
        "required": [
          "version",
          "decision"
        ]
      },
      "PlayableInput": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string",
            "enum": [
              "tap_target",
              "memory_pairs",
              "color_match",
              "quick_math",
              "number_order",
              "sequence_memory"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 2,
            "maxLength": 70
          },
          "instruction": {
            "type": "string",
            "minLength": 2,
            "maxLength": 140
          },
          "durationSeconds": {
            "type": "integer",
            "minimum": 5,
            "maximum": 30
          },
          "target": {
            "type": "integer",
            "minimum": 2,
            "maximum": 20
          },
          "background": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "accent": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          }
        },
        "required": [
          "template",
          "title",
          "instruction"
        ]
      },
      "SlotContract": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "profile": {
            "type": "string"
          },
          "width": {
            "type": "integer"
          },
          "height": {
            "type": "integer"
          },
          "mediaAspectRatio": {
            "type": "number"
          },
          "footerDp": {
            "type": "integer"
          },
          "fit": {
            "const": "contain"
          },
          "emptyBehavior": {
            "const": "collapse"
          },
          "geometrySource": {
            "const": "placement"
          }
        }
      },
      "DnsLookup": {
        "type": "object",
        "required": [
          "resolver",
          "status",
          "matched",
          "recordCount",
          "ttlSeconds"
        ],
        "properties": {
          "resolver": {
            "type": "string",
            "enum": [
              "server",
              "cloudflare",
              "google"
            ]
          },
          "status": {
            "type": "string"
          },
          "matched": {
            "type": "boolean"
          },
          "recordCount": {
            "type": "integer",
            "minimum": 0
          },
          "ttlSeconds": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "dnsStatus": {
            "type": "integer"
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 5
          }
        }
      },
      "DnsVerification": {
        "type": "object",
        "required": [
          "verified",
          "name",
          "type",
          "value",
          "checkedAt",
          "reason",
          "retryAfterSeconds",
          "lookups"
        ],
        "properties": {
          "verified": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "const": "TXT"
          },
          "value": {
            "type": "string"
          },
          "checkedAt": {
            "type": "integer",
            "description": "UTC Unix milliseconds"
          },
          "reason": {
            "type": "string",
            "enum": [
              "verified",
              "value_mismatch",
              "not_found",
              "dns_failure",
              "resolver_unavailable"
            ]
          },
          "retryAfterSeconds": {
            "type": "integer",
            "minimum": 0,
            "description": "Cache-informed suggestion; not a propagation guarantee"
          },
          "lookups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DnsLookup"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "SessionCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "__Host-didnex_session",
        "description": "Independent opaque server session. Never use hosting identity headers. Default 12h absolute/2h idle; remember 30d/1d idle. New-session lifetimes are configurable by the operator."
      },
      "PanelCSRF": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Didnex-CSRF",
        "description": "Session-bound daily CSRF from /api/me, independent cookie and exact Origin required."
      },
      "PublisherKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Publisher server-only md_ key with serve scope; required only for the legacy server app request and secure rewards; never embed in apps."
      },
      "AdvertiserKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Advertiser server-only md_ key with conversions scope."
      },
      "DeliverySignature": {
        "type": "apiKey",
        "in": "query",
        "name": "sig",
        "description": "Opaque HMAC from issued delivery; bound to delivery ID and expiry."
      },
      "JobsKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Operator JOBS_SECRET; fixed maintenance operations only"
      },
      "RememberCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "__Host-didnex_remember",
        "description": "HttpOnly Secure rotating browser credential; never embed in code or store in localStorage."
      }
    }
  }
}
