openapi: 3.0.1
info:
  title: Manage API
  description: This is a Publisher Manage API
  version: 1.0.0
tags:
- name: status
  description: Status checking for kubernetes probe
- name: applications
  description: Application associated operations
- name: placements
  description: Placement associated opertations
- name: sdks
  description: SDK release notes associated operations
- name: auths
  description: Authenticate the publisher self-serve API token
paths:
  /errors:
    get:
      tags:
      - responders
      operationId: error
      responses:
        default:
          description: got error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /accounts/me:
    get:
      tags:
      - accounts
      summary: get the account by Id
      operationId: getAccountByID
      responses:
        200:
          description: Account match the ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
      security:
      - notHasSource:
        - mediation
    patch:
      tags:
      - accounts
      summary: edit the account by Id
      operationId: editAccountByID
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountEdit'
        required: true
      responses:
        200:
          description: Account match the ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
      security:
      - hasAccess:
        - modify_account_settings
        hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
      x-codegen-request-body-name: account
  /applications:
    get:
      tags:
      - applications
      summary: get a list of applications
      operationId: getApplications
      parameters:
      - name: id
        in: query
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            pattern: ^[0-9|a-f]{24}$
            type: string
      - name: per_page
        in: query
        schema:
          type: integer
          x-go-type: int64
      - name: page
        in: query
        schema:
          type: integer
          x-go-type: int64
      - name: search
        in: query
        allowEmptyValue: true
        schema:
          type: string
      - name: platform
        in: query
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            minLength: 1
            type: string
            enum:
            - ios
            - android
            - windows
            - amazon
      - name: noPlacementCount
        in: query
        schema:
          type: boolean
      responses:
        200:
          description: Application is correctly created.
          headers:
            Access-Control-Expose-Headers:
              schema:
                type: string
                default: Link,Vungle-Auth-Token,Vungle-Pagination-Page,Vungle-Pagination-Pages,Vungle-Pagination-Per-Page,Vungle-Pagination-Total,Vungle-Request-ID
            Vungle-Pagination-Total:
              schema:
                type: integer
                x-go-type: int64
            Vungle-Pagination-Per-Page:
              schema:
                type: integer
                x-go-type: int64
            Vungle-Pagination-Page:
              schema:
                type: integer
                x-go-type: int64
            Vungle-Pagination-Pages:
              schema:
                type: integer
                x-go-type: int64
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApplicationCompact'
      security:
      - notHasSource:
        - mediation
    post:
      tags:
      - applications
      summary: create a new application
      description: |
        By passing the application store info, and platform info, create a new Application, and the whole Application structure will be returned
      operationId: createApplication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationCreate'
        required: true
      responses:
        200:
          description: Application is correctly created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
      security:
      - hasAccess:
        - modify_apps
        hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
      x-codegen-request-body-name: application
  /applications/{id}:
    get:
      tags:
      - applications
      summary: get an existing application by ID.
      operationId: getApplicationByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      responses:
        200:
          description: Application is correctly returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
      security:
      - hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
    patch:
      tags:
      - applications
      summary: edit an existing application
      description: |
        By passing the ApplicationEdit payload, you can update the application, and the whole Application structure will be returned
      operationId: editApplicationByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationEdit'
        required: true
      responses:
        200:
          description: Application is correctly updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
      security:
      - hasAccess:
        - modify_apps
        notHasSource:
        - mediation
      x-codegen-request-body-name: application
  /applications/s2secret:
    get:
      tags:
      - applications
      summary: generate a new s2secret
      operationId: generateSecret
      responses:
        200:
          description: Application server to server secret key is correctly returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  s2sSecret:
                    type: string
        default:
          description: bad input parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /applications/count:
    get:
      tags:
      - applications
      summary: get the application count
      operationId: getAppCount
      parameters:
      - name: marketId
        in: query
        required: true
        schema:
          type: string
      - name: platform
        in: query
        schema:
          type: string
          enum:
          - ios
          - android
          - windows
          - amazon
      - name: deleted
        in: query
        schema:
          type: boolean
      responses:
        200:
          description: Application count.
          content:
            application/json:
              schema:
                type: integer
      security:
      - hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
  /users:
    get:
      tags:
      - users
      summary: get a list of users
      operationId: getUsers
      parameters:
      - name: search
        in: query
        schema:
          type: string
      - name: per_page
        in: query
        schema:
          type: integer
          x-go-type: int64
      - name: id
        in: query
        style: form
        explode: false
        x-go-type-skip-optional-pointer: true
        schema:
          uniqueItems: true
          type: array
          items:
            pattern: ^[0-9|a-f]{24}$
            type: string
      - name: page
        in: query
        schema:
          type: integer
          x-go-type: int64
      responses:
        200:
          description: Users match the search key word.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
        default:
          description: got error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
  /users/{id}:
    get:
      tags:
      - users
      summary: get the user by ID
      operationId: getUserByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      responses:
        200:
          description: User match the ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        default:
          description: got error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
    post:
      tags:
      - users
      summary: edit the user by ID
      operationId: editUserByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserEdit'
        required: true
      responses:
        200:
          description: User match the ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        default:
          description: got error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - hasAccess:
        - modify_users
        hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
      x-codegen-request-body-name: user
    delete:
      tags:
      - users
      summary: delete the user by ID
      operationId: deleteUserByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      responses:
        200:
          description: User match the ID.
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
      security:
      - hasAccess:
        - modify_users
        hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
  /placements:
    get:
      tags:
      - placements
      summary: get a list of placements
      operationId: getPlacements
      parameters:
      - name: id
        in: query
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            pattern: ^[0-9|a-f]{24}$
            type: string
      - name: application
        in: query
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            pattern: ^[0-9|a-f]{24}$
            type: string
      - name: search
        in: query
        schema:
          type: string
      - name: archived
        in: query
        schema:
          type: boolean
      - name: per_page
        in: query
        schema:
          type: integer
          x-go-type: int64
      - name: page
        in: query
        schema:
          type: integer
          x-go-type: int64
      responses:
        200:
          description: Placement is correctly created.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PlacementCompact'
        default:
          description: bad input parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
    post:
      tags:
      - placements
      summary: create a new placement
      operationId: createPlacement
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlacementCreate'
        required: true
      responses:
        200:
          description: Application is correctly created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Placement'
        default:
          description: bad input parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - hasAccess:
        - modify_placement
        hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
      x-codegen-request-body-name: placement
  /placements/{id}:
    get:
      tags:
      - placements
      summary: get an existing placement by ID.
      operationId: getPlacementByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      responses:
        200:
          description: Placement is correctly returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Placement'
      security:
      - hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
    post:
      tags:
      - placements
      summary: initialize default placement
      operationId: recreatePlacementByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlacementCreate'
        required: true
      responses:
        200:
          description: Placement is correctly recreated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Placement'
      security:
      - hasAccess:
        - modify_placement
        hasSDK:
        - "2023-11-29"
        notHasSource:
        - mediation
      x-codegen-request-body-name: placement
    patch:
      tags:
      - placements
      summary: edit an existing placement
      operationId: editPlacementByID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          pattern: ^[0-9|a-f]{24}$
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlacementEdit'
        required: true
      responses:
        200:
          description: Placement is correctly created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Placement'
      security:
      - hasAccess:
        - modify_placement
        hasSDK:
        - "2023-11-29"
      x-codegen-request-body-name: placement
components:
  schemas:
    Account:
      type: object
      properties:
        id:
          pattern: ^[0-9|a-f]{24}$
          type: string
          x-go-type-skip-optional-pointer: true
        name:
          pattern: ^(\S.*\S|\S)*$
          type: string
          x-go-type-skip-optional-pointer: true
        type:
          type: string
          x-go-type-skip-optional-pointer: true
        contact:
          $ref: '#/components/schemas/AccountContact'
          x-go-type-skip-optional-pointer: true
        address:
          $ref: '#/components/schemas/AccountAddress'
          x-go-type-skip-optional-pointer: true
        sdkTermsAgreement:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/SDKTermsAgreement'
        billingEntity:
          type: string
        accountAppBlacklist:
          uniqueItems: true
          type: array
          items:
            type: string
        legitimateInterest:
          type: boolean
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
        adMarketIdBlacklist:
          $ref: '#/components/schemas/AccountMarketIdBlacklist'
        features:
          uniqueItems: true
          type: array
          items:
            type: string
          x-go-type-skip-optional-pointer: true
        pubDomains:
          uniqueItems: true
          type: array
          description: Used for storing publisher domains.
          items:
            minLength: 1
            type: string
    AccountMarketIdBlacklist:
      type: object
      properties:
        ios:
          uniqueItems: true
          type: array
          items:
            minLength: 1
            type: string
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
        amazon:
          uniqueItems: true
          type: array
          items:
            minLength: 1
            type: string
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
        android:
          uniqueItems: true
          type: array
          items:
            minLength: 1
            type: string
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
        windows:
          uniqueItems: true
          type: array
          items:
            minLength: 1
            type: string
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
    AccountEdit:
      type: object
      properties:
        name:
          pattern: ^(\S.*\S|\S)*$
          type: string
          x-go-type-skip-optional-pointer: true
        contact:
          $ref: '#/components/schemas/AccountContact'
        address:
          $ref: '#/components/schemas/AccountAddress'
        billingEntity:
          type: string
          nullable: true
          enum:
            - SG
            - US
        legitimateInterest:
          type: boolean
          nullable: true
        adMarketIdBlacklist:
          $ref: '#/components/schemas/AccountMarketIdBlacklist'
        pubDomains:
          uniqueItems: true
          type: array
          description: Used for storing publisher domains.
          items:
            minLength: 1
            type: string
    AccountAddress:
      type: object
      properties:
        city:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
        country:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
        postal:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
        line1:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
        line2:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
        state:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
    AccountContact:
      type: object
      properties:
        email:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
        name:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
        phone:
          type: string
          nullable: true
          x-go-type-skip-optional-pointer: true
    Platform:
      minLength: 1
      type: string
      enum:
        - ios
        - android
        - windows
        - amazon
    StoreInfo:
      required:
      - category
      - id
      type: object
      properties:
        id:
          minLength: 1
          type: string
        category:
          minLength: 1
          type: string
        isPaid:
          type: boolean
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
        isManual:
          type: boolean
          nullable: true
          x-omitempty: false
        url:
          type: string
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
        thumbnail:
          type: string
          format: url
          x-go-type-skip-optional-pointer: true
          x-omitempty: false
    ApplicationCreate:
      required:
      - isCoppa
      - name
      - platform
      type: object
      properties:
        platform:
          $ref: '#/components/schemas/Platform'
        name:
          minLength: 1
          pattern: ^(\S.*\S|\S)*$
          type: string
        store:
          $ref: '#/components/schemas/StoreInfo'
        isCoppa:
          type: boolean
    ApplicationCompact:
      allOf:
      - $ref: '#/components/schemas/ApplicationCreate'
      - required:
        - id
        type: object
        properties:
          id:
            pattern: ^[0-9|a-f]{24}$
            type: string
            description: a bson ID.
            example: 520d751489e451af34000028
          vungleAppId:
            type: string
            description: store ID.
            x-go-type-skip-optional-pointer: true
          owner:
            type: string
            x-go-type-skip-optional-pointer: true
          placement_count:
            type: integer
            x-go-type: int64
            x-go-type-skip-optional-pointer: true
          status:
            minLength: 1
            type: string
            x-go-type-skip-optional-pointer: true
          mutable:
            type: boolean
            nullable: true
          domain:
            type: string
            nullable: true
          deleted:
            type: boolean
            x-go-type-skip-optional-pointer: true
    Application:
      allOf:
      - $ref: '#/components/schemas/ApplicationCompact'
      - required:
        - tagFilters
        type: object
        properties:
          forceView:
            $ref: '#/components/schemas/ApplicationForceView'
          minOsVer:
            type: string
            x-nullable: true
            x-omitempty: true
            pattern: ^(\d+\.)?(\d+\.)?(\d+)$
          maxVideoLength:
            maximum: 6E+1
            minimum: -1
            type: integer
            x-go-type: int64
          connection:
            minLength: 1
            type: string
            x-go-type-skip-optional-pointer: true
          callbackURL:
            type: string
            x-go-type-skip-optional-pointer: true
          marketIdFilters:
            $ref: '#/components/schemas/ApplicationMarketIDFilters'
          tagFilters:
            $ref: '#/components/schemas/ApplicationTagFilters'
          s2sSecret:
            type: string
            x-go-type-skip-optional-pointer: true
          isTestDevicesEnabled:
            type: boolean
            nullable: true
            default: true
          testDevices:
            type: array
            x-go-type-skip-optional-pointer: true
            x-omitempty: false
            items:
              $ref: '#/components/schemas/ApplicationTestDevices'
          defaultPlacement:
            pattern: ^[0-9|a-f]{24}$
            type: string
            x-go-type-skip-optional-pointer: true
            description: default placement bson ID.
          placementLimit:
            $ref: '#/components/schemas/PlacementLimit'
          flatCPMCap:
            $ref: '#/components/schemas/FlatCPMCap'
          flatCPMCapNoneFullscreen:
            $ref: '#/components/schemas/FlatCPMCap'
          flatCPMCapNativePlacement:
            $ref: '#/components/schemas/FlatCPMCap'
    PlacementLimit:
      type: object
      properties:
        total:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          x-go-type: int64
          nullable: true
        active:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          x-go-type: int64
          nullable: true
    ApplicationEdit:
      type: object
      properties:
        mutable:
          type: boolean
          description: This filed is used to identify whether the app is generated
            by the ApplicationCompact.
          nullable: true
        name:
          minLength: 1
          pattern: ^(\S.*\S|\S)*$
          type: string
          nullable: true
        store:
          $ref: '#/components/schemas/StoreInfo'
        isCoppa:
          type: boolean
          nullable: true
          x-omitempty: false
        forceView:
          $ref: '#/components/schemas/ApplicationForceViewEdit'
        minOs:
          type: number
          x-go-type: float64
          nullable: true
        minOsVer:
          type: string
          x-nullable: true
          x-omitempty: true
          pattern: ^(\d+\.)?(\d+\.)?(\d+)$
        maxVideoLength:
          maximum: 6E+1
          minimum: -1
          type: integer
          x-go-type: int64
          nullable: true
        _maxVideoLength:
          type: boolean
          nullable: true
          x-go-name: DeleteMaxVideoLength
        connection:
          minLength: 1
          type: string
          nullable: true
        callbackURL:
          type: string
          nullable: true
        tagFilters:
          $ref: '#/components/schemas/ApplicationTagFilters'
        marketIDFilters:
          $ref: '#/components/schemas/ApplicationMarketIDFilters'
        s2sSecret:
          type: string
        status:
          minLength: 1
          type: string
          enum:
            - active
            - inactive
            - test
        isTestDevicesEnabled:
          type: boolean
          nullable: true
          default: true
        testDevices:
          type: array
          nullable: true
          x-go-type-skip-optional-pointer: true
          items:
            $ref: '#/components/schemas/ApplicationTestDevices'
        deleted:
          type: boolean
          nullable: true
    ApplicationTestDevices:
      required:
      - id
      - name
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    ApplicationMarketIDFilters:
      type: object
      properties:
        blacklist:
          uniqueItems: true
          type: array
          nullable: true
          items:
            type: string
    ApplicationTagFilters:
      type: object
      properties:
        blacklist:
          uniqueItems: true
          type: array
          nullable: true
          items:
            type: string
    ApplicationForceView:
      type: object
      properties:
        rewarded:
          type: boolean
          x-omitempty: false
          x-go-type-skip-optional-pointer: true
        nonRewarded:
          type: boolean
          x-omitempty: false
          x-go-type-skip-optional-pointer: true
    ApplicationForceViewEdit:
      type: object
      properties:
        rewarded:
          type: boolean
          x-omitempty: false
        nonRewarded:
          type: boolean
          x-omitempty: false
    PlacementCompact:
      required:
      - name
      - type
      type: object
      properties:
        application:
          $ref: '#/components/schemas/ApplicationCompact'
        name:
          minLength: 1
          pattern: ^(\S.*\S|\S)*$
          type: string
        type:
          minLength: 1
          type: string
        allowEndCards:
          type: boolean
          x-omitempty: false
          x-go-type-skip-optional-pointer: true
        isSkippable:
          type: boolean
          nullable: true
        referenceID:
          type: string
          x-go-type-skip-optional-pointer: true
        id:
          pattern: ^[0-9|a-f]{24}$
          type: string
          description: a bson ID.
          example: 520d751489e451af34000028
          x-go-type-skip-optional-pointer: true
        status:
          minLength: 1
          type: string
          x-go-type-skip-optional-pointer: true
        mutable:
          type: boolean
          nullable: true
        isHBParticipation:
          type: boolean
          description: In-App Bidding setting.
          x-omitempty: false
          x-go-type-skip-optional-pointer: true
        archived:
          type: boolean
          x-omitempty: true
          x-go-type-skip-optional-pointer: true
    Placement:
      allOf:
      - $ref: '#/components/schemas/PlacementCompact'
      - type: object
        properties:
          videoOrientationOverride:
            minLength: 1
            type: string
            x-go-type-skip-optional-pointer: true
          isFlatCPMEnabled:
            type: boolean
            x-omitempty: false
            x-go-type-skip-optional-pointer: true
          flatCPMCd:
            type: string
            format: date-time
            x-omitempty: true
          flatCPMCap:
            $ref: '#/components/schemas/FlatCPMCap'
          cpmFloor:
            $ref: '#/components/schemas/CPMFloor'
          flatCPM:
            $ref: '#/components/schemas/FlatCPM'
          banner:
            $ref: '#/components/schemas/Banner'
    FlatCPM:
      type: object
      properties:
        default:
          minimum: 0
          type: number
          x-go-type: float64
          nullable: true
        geo:
          type: object
          x-go-type-skip-optional-pointer: true
          additionalProperties:
            minimum: 0
            x-go-type: float64
            type: number
            nullable: true
    CPMFloor:
      type: object
      properties:
        default:
          type: number
          x-go-type: float64
          nullable: true
        geo:
          type: object
          x-go-type-skip-optional-pointer: true
          additionalProperties:
            type: number
            x-go-type: float64
            nullable: true
    Banner:
      type: object
      properties:
        adRefreshDuration:
          maximum: 240
          minimum: 10
          type: integer
          nullable: true
          x-go-type: int64
        isRefreshEnabled:
          type: boolean
          nullable: true
    FlatCPMCap:
      type: object
      properties:
        default:
          type: number
          x-go-type: float64
          nullable: true
        geo:
          type: object
          x-go-type-skip-optional-pointer: true
          additionalProperties:
            type: number
            x-go-type: float64
    PlacementCreate:
      allOf:
      - $ref: '#/components/schemas/PlacementCpmInfo'
      - required:
        - application
        - name
        - type
        type: object
        properties:
          application:
            pattern: ^[0-9|a-f]{24}$
            type: string
          name:
            type: string
          type:
            minLength: 1
            type: string
            enum:
            - interstitial
            - mrec
            - rewarded
            - banner
            - native
          allowEndCards:
            type: boolean
            x-go-type-skip-optional-pointer: true
          isSkippable:
            type: boolean
            nullable: true
          banner:
            $ref: '#/components/schemas/Banner'
          isHBParticipation:
            type: boolean
            x-omitempty: false
            x-go-type-skip-optional-pointer: true
    PlacementCpmInfo:
      type: object
      properties:
        cpmFloor:
          $ref: '#/components/schemas/CPMFloor'
        flatCPM:
          $ref: '#/components/schemas/FlatCPM'
        isFlatCPMEnabled:
          type: boolean
          nullable: true
          x-omitempty: true
    PlacementEdit:
      allOf:
      - $ref: '#/components/schemas/PlacementCpmInfo'
      - type: object
        properties:
          mutable:
            type: boolean
            description: This filed is used to identify whether the placement is generated
              by the PlacementCompact.
            nullable: true
          name:
            minLength: 1
            pattern: ^(\S.*\S|\S)*$
            type: string
            nullable: true
          allowEndCards:
            type: boolean
            nullable: true
            x-omitempty: false
          isSkippable:
            type: boolean
            nullable: true
          _isSkippable:
            type: boolean
            nullable: true
            x-go-name: DeleteIsSkippable
          archived:
            type: boolean
            nullable: true
          videoOrientationOverride:
            minLength: 1
            type: string
            nullable: true
          status:
            minLength: 1
            type: string
            enum:
              - active
              - inactive
            nullable: true
          banner:
            $ref: '#/components/schemas/Banner'
          isHBParticipation:
            type: boolean
            description: In-App Bidding setting.
            nullable: true
    UserEdit:
      type: object
      properties:
        avatar:
          type: string
          x-go-type-skip-optional-pointer: true
          nullable: true
        role:
          type: string
          x-go-type-skip-optional-pointer: true
        name:
          type: string
          x-go-type-skip-optional-pointer: true
        secret_key:
          type: string
          x-go-type-skip-optional-pointer: true
          nullable: true
        secretToken:
          type: string
          x-go-type-skip-optional-pointer: true
          nullable: true
    User:
      required:
      - id
      - account
      - email
      type: object
      properties:
        id:
          pattern: ^[0-9|a-f]{24}$
          type: string
        account:
          pattern: ^[0-9|a-f]{24}$
          type: string
        role:
          minLength: 1
          type: string
          x-go-type-skip-optional-pointer: true
        name:
          pattern: ^(\S.*\S|\S)*$
          type: string
          x-go-type-skip-optional-pointer: true
        email:
          type: string
        status:
          minLength: 1
          type: string
          x-go-type-skip-optional-pointer: true
        secret_key:
          type: string
          x-omitempty: true
          x-go-type-skip-optional-pointer: true
        secretToken:
          type: string
          x-go-type-skip-optional-pointer: true
        avatar:
          type: string
          x-go-type-skip-optional-pointer: true
    StoreInfoUnit:
      type: object
      properties:
        id:
          type: string
          x-go-type-skip-optional-pointer: true
        name:
          type: string
          x-go-type-skip-optional-pointer: true
        company:
          type: string
          x-go-type-skip-optional-pointer: true
        thumbnail:
          type: string
          x-go-type-skip-optional-pointer: true
        category:
          type: string
          x-go-type-skip-optional-pointer: true
    Error:
      type: object
      properties:
        message:
          type: string
      x-go-type: types.Error
      x-go-type-import:
        path: github.com/Vungle/slydell/models
