Entities
Users read-only a single person's access to Outbrain services. Users have permissions on one or more Marketer accounts. Users cannot be managed via this API and must be created with the help of your Outbrain contact.
Marketers read-only Marketers are representatives of Outbrain customers. A single Marketer may control campaigns for more than one end-buyer.Marketers cannot be created via the API and must be created via the site or by an Outbrain Account Manager.
PromotedLink describes a single piece of promoted content
Campaign Campaigns contain many PromotedLinks and define Budget, targeting, cpc, etc. Campaign settings apply to the PromotedLinks contained in a specific Campaign.
My note
As far as I can see, Campaign does not contain PromotedLinks. It is relational. PromotedLink has foreign key the CampaignId. So in order to get the PromotedLinks' collection of a Campaign, a query is required. Campaign itself is a hierarchical JSON document which contains arrays of various reference objects. In C#, Campaign is a class with lists or arrays of other classes, representing the reference objects. The most complicate is the Targeting Object a container for many Platform targeting objects. Other important objects are the Segment, the GeoLocation, etc. So in order to represent in C# the Campaign object, a master class and many other classes should be created.
Budgets A single Budget may be shared among Campaigns. For convenience, Budget objects are often embedded inside the Campaign objects
Performance Reporting A multitude of reporting endpoints that allow you to retrieve Metrics objects at various levels of granularity.
My note
Many different classes should be created for each endpoint, containers of Metrics objects. Documentation is not so clear.
I spent sometime on how to find the reporting per PromotedLink.
Another problem also is that there is a time limit in requests-queries. So in order to testing it thoroughly, I think a temporary application maybe is needed to query the endpoints in specific intervals and store the responses to be used for further testing.
In order to create a Campaign's dublication, should create the reference objects and call the retrieve-a-single-campaign. Maybe should call some other endpoints for detailed information about the reference objects.