Open-source platform to request any SSP like Bidswitch or Xandr.

Bidding Platform logo

Bidding Platform

The project goal is to provide an unique program to contact every SSP without know the differences between all of them.

Why this project?

This comes because we want to have a free and fully open-source solution to allow users to make bids, contact sellers the easiest way.

API

/request endpoint

We expect a JSON body request on the /request endpoint with some values in it.

Legend:

  • Required
  • Not required
  • Preferred
Key Description Value Required
account Define account informations -
account.domain The domain that instanciate the request domain.com
account.name The name you want to set for the domain AwesomeDomain
account.page The page that tries to request the bidding-platform https://www.domain.com/my/page.html
account.pid The unique ID for the website 12345-67890-13579-24680
consent Define different consents -
consent.addtl Refer to the Addtl consent 1~1.2.3.4.5.6.7.8.9
consent.gdpr Refer to the GDPR consent (UE) CPUMr...
consent.us_privacy Refer to the GDPR consent (UE) 1---
currency Array of acepted currencies ["USD","EUR"]
eids Define users informations -
eids.source The user source domain another.com
eids.uids The user identifiers on this domain -
eids.uids[x].id The user id identifier on this domain user_id_1
eids.uids[x].atype The user atype identifier on this domain 1
placements The placements informations -
placements[x].id The placement identifier -
placements[x].bid_id The bid request for this placement -
placements[x].type The bid request for this placement video, banner
placements[x].sizes Authorized sizes for this placement ["640x480"]
placements[x].params Custom parameters for this placement, see the table below to view the required ones depending the type -
placements[x].supply_chain Define the supply chain informations, see the openrtb supply_chain object for more informations -
placements[x].supply_chain.ver Supply chain version 1.0

If your placement is a video type:

Key Description Value Required
placements[x].params.mimes Allowed mime types for the current video placement ["video/mp4"]
placements[x].params.outstream Enable/Disable the outstream false
placements[x].params.api API versions to use [1, 2]
placements[x].params.startdelay Delay before start 0
placements[x].params.protocols Protocols to use [1, 2, 3, 4, 5, 6, 7, 8]
placements[x].params.duration Durations to set the min and the max -
placements[x].params.duration.max Max duration in seconds of the video 1
placements[x].params.duration.min Min duration in seconds of the video 240
placements[x].params.linearity Enable/Disable the linearity 1
placements[x].params.position The video position 1

If your placement is a banner type:

Key Description Value Required
placements[x].params.position The banner position 1

Here is the anonymized payload expected on the /request endpoint.

{
    "account": {
        "domain": "domain.com",
        "name": "YourDomain",
        "page": "https://www.domain.com/my/page.html",
        "pid": "{{ uuid }}"
    },
    "consent": {
        "addtl": "1~1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19",
        "gdpr": "{{ grpd_consent }}",
        "us_privacy": "1---"
    },
    "currency": [
        "USD",
        "EUR"
    ],
    "eids": [
        {
            "source": "another.com",
            "uids": [
                {
                    "id": user_id_1",
                    "atype": 1
                }
            ]
        },
        {
            "source": "foo.com",
            "uids":
            [
                {
                    "id": "user_id_2",
                    "atype": 1,
                    "ext": {
                        "linkType": 2,
                        "abTestingControlGroup": false
                    }
                }
            ]
        },
        {
            "source": "bar.org",
            "uids": [
                {
                    "id": "user_id_3",
                    "atype": 1
                }
            ]
        }
    ],
    "placements": [
        {
            "id": "video_id",
            "bid_id": "my_bid_id",
            "type": "video",
            "sizes": [
                "640x480"
            ],
            "params": {
                "mimes": [
                    "video/mp4"
                ],
                "outstream": false,
                "api": [
                    1,
                    2
                ],
                "startdelay": 0,
                "protocols": [
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8
                ],
                "duration": {
                    "min": 1,
                    "max": 120
                },
                "linearity": 1,
                "position": 1
            }
        }
    ],
    "supply_chain": {
        "ver": "1.0",
        "complete": 1,
        "nodes": [
            {
                "asi": "domain.com",
                "sid": "2434",
                "hp": 1
            }
        ]
    }
}

Configuration

The bidding-platform project comes with it's own configuration file named configuration.yml.

Key Description Value Required
cors CORS headers configuration -
cors.allow_origin CORS allow origin strategy *
connectors Connectors to request -
connectors.{connector_name} The connector to contact bidswitch, xandr
connectors.{connector_name}.base_url Connector base URL https://the.domain.net
connectors.{connector_name}.endpoint Connector endpoint /the_endpoint
file Files configuration -
file.geo Geoip MMDB filepath geoip.mmdb
video Default video configuration -
video.min Minimal default video duration 30s
video.max Maximum default video duration 10s

Supported providers

At the moment this tool only support Bitswitch and Xandr integrations. In a near future we plan to add more providers.

Run the project

git clone https://github.com/darkweak/bidding-platform
cd bidding-platform
make setup

Or extract manually the geoip.tar.gz file to get the geoip.mmdb maxmind database file and copy the configuration.sample.yml file into configuration.yml.

After that you would be able to run the command below to start the project.

go run main.go

Coming soon...

Similar Resources

CDN for Open Source, Non-commercial CDN management

CDN for Open Source, Non-commercial CDN management

CDN Control Official Website: https://cluckcdn.buzz Documentation (Traditional Chinese): https://cluckcdn.buzz/docs/ 简体中文 README: README_CN.md Please

Dec 20, 2021

Headscale - An open source, self-hosted implementation of the Tailscale control server

Headscale - An open source, self-hosted implementation of the Tailscale control server

Dec 29, 2022

Apache Traffic Control is an Open Source implementation of a Content Delivery Network

Apache Traffic Control Apache Traffic Control is an Open Source implementation of a Content Delivery Network. Documentation Intro CDN Basics Traffic C

Jan 6, 2023

mysshw - a free and open source ssh cli client soft.

mysshw install go version = 1.16.* use go get go get -u github.com/cnphpbb/mysshw go version = 1.17.* use go install go install github.com/cnphpbb/

Dec 16, 2021

gRelay is an open source project written in Go that provides the circuit break pattern with a relay idea behind.

gRelay is an open source project written in Go that provides the circuit break pattern with a relay idea behind.

gRELAY gRelay is an open source project written in Go that provides: Circuit Break ✔️ Circuit Break + Relay ✔️ Concurrecny Safe ✔️ Getting start Insta

Sep 30, 2022

An open source Pusher server implementation compatible with Pusher client libraries written in Go

Try browsing the code on Sourcegraph! IPÊ An open source Pusher server implementation compatible with Pusher client libraries written in Go. Why I wro

Aug 27, 2022

Hybridnet is an open source container networking solution, integrated with Kubernetes and used officially by following well-known PaaS platforms

Hybridnet What is Hybridnet? Hybridnet is an open source container networking solution, integrated with Kubernetes and used officially by following we

Jan 4, 2023

Openp2p - an open source, free, and lightweight P2P sharing network

Openp2p - an open source, free, and lightweight P2P sharing network

It is an open source, free, and lightweight P2P sharing network. As long as any device joins in, you can access them anywhere

Dec 31, 2022

Scout is a standalone open source software solution for DIY video security.

Scout is a standalone open source software solution for DIY video security.

scout Scout is a standalone open source software solution for DIY video security. https://www.jonoton-innovation.com Features No monthly fees! Easy In

Oct 25, 2022
Request: a HTTP request library for Go with interfaces and mocks for unit tests

Requester Request is a HTTP request library for Go with interfaces and mocks for

Jan 10, 2022
Uses the Finger user information protocol to open a TCP connection that makes a request to a Finger server

Finger Client This client uses the Finger user information protocol to open a TCP connection that makes a request to a Finger server. Build and Run Ru

Oct 7, 2021
Microservice on IPv4: 3000 port without database. Upon request, returns the source JSON in the desired format
Microservice on IPv4: 3000 port without database. Upon request, returns the source JSON in the desired format

?? Этапы V1.0 Микросервис на IPv4:3000 порту без базы данных. По запросу возвращ

Dec 22, 2021
Open Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator
Open Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator

Trickster is an HTTP reverse proxy/cache for http applications and a dashboard query accelerator for time series databases. Learn more below, and chec

Jan 2, 2023
Open source 5G core network base on 3GPP R15
Open source 5G core network base on 3GPP R15

What is free5GC The free5GC is an open-source project for 5th generation (5G) mobile core networks. The ultimate goal of this project is to implement

Jan 4, 2023
Open Source Continuous File Synchronization
Open Source Continuous File Synchronization

Goals Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers. We strive to fulfill the goals belo

Dec 31, 2022
Squzy - is a high-performance open-source monitoring, incident and alert system written in Golang with Bazel and love.

Squzy - opensource monitoring, incident and alerting system About Squzy - is a high-performance open-source monitoring and alerting system written in

Dec 12, 2022
Project Kebe is the open-source Snap Store implementation.

Introduction Kebe intends to be a full replacement for the Snap Store. Quickstart Once you have an environment setup (for instance using https://githu

Nov 9, 2022