Production Report

This report is commonly used for production type feeds to other systems. Due to the complexity of the query, this one is a POST API call, but it is not actually creating anything new inside Naviga Ad, this one is pulling data out, but with too many criteria filters allowed for it to be done as a GET.

POST /api/production/orders

This API call has a parameter for Last Edit so that you can query the system regularly to see what has changed since the last time you asked, which is especially beneficial for production type feeds. No financial details are returned in these results.

None of these fields are specifically required, so I didn't include that column for this report, but it wouldn't be wise to leave it too open or you will get too many results. One or more date fields at least should be used to keep the data set manageable and avoid timeouts.

ProductIDs

This array will allow for one or multiple Product ID's to be queried. Can be omitted to include all products.

ProductionControllerID

Enter the USERID of a Production Controller to limit results for only that production controller

ProductGroupID

If applicable, this may be provided instead of using multiple Product IDs. This will return order lines for products which belong to this product group. It does not look specifically at the Product Group on the Campaign - it could be a reporting Group Technically, neither ProductID nor ProductGroupID are required, but depending on the volume of data you may want to use one so that the query does not timeout.

BreakByMonth

This is a true/false field. Only relevant to digital type ads which are date-range, like your O&O websites. If set to true, this will break multi-month order lines into separate entries. As an example, order ID 12345 will be displayed as 12345.1, 12345.2, etc for as many months as needed in the query (if true). If set to false, 12345 will be displayed as the ID.

StartDate

Start Date and End Date is looking for a date/date range for the issues/run dates on the order line (it is not looking at the campaign date range). In the case of digital products with a date range, it will look to see if it is running during the date range. As an example, if I run the query with this:

Then a campaign line running for the month of February will be returned.

EndDate

(See start date above)

IncludeQuotes

This will look at the campaign status and filter out any lines on a campaign with a status of Q1, Q2, or Q3

OnlyDateBasedProducts

If set to true, only items with an issue date will be returned. (This would filter out any product types which are "Standard Product or Group Product" in product setup:

SpecificIssueDate

Instead of sending in a Start Date and End Date above which is the same date, plus indicating that only date based products are desired, just this single parameter could be sent in with a specific issue date and the same result would be returned with fewer parameters required.

UseControllerFromProduct

This one is not a filter parameter, but rather controlling which Production Controller is passed in the data returned. Production Controller can be assigned at the Product Group and/or the Product. If this is true, it will look at the Product for the Controller, if this is false it will look at the Product Group.

RepIDs

This is a filter looking at the Order Rep on the line

OnlyReturnNavigaPlanOrders

This will filter for only orders which would go to Naviga Plan. Setting this to true would typically filter out any eNewsletter products that would otherwise get picked up in something issue date based. It would also exclude Inserts or other Ad Type that is configured to not go to Plan.

ArtistID

If the Order line has a material attached, and that material has an artist assigned, then this will act as a filter to only include orders for that artist. Artists are set up in Naviga In Setup -> Artwork Workflow Setup -> Artists Setup. The artist ID is their email address from setup.

ReturnLinerAds

This is a true/false field. Enter True to also include Liners. If omitted, liner ads will NOT be included.

UpdatedSinceDateTime

This is looking at the History of Changes screen on a campaign. It can be used in conjunction with the two "SkipChanges" parameters below, or it can be used on it's own. Formatting for this field will look like this:

The above means that I would want to return anything that has changed since 1:25 pm on Jan 20, 2026. If the below "SkipChanges" parameters are included the items might be further filtered to exclude certain types of changes, for example, if the campaign was updated with billing or tearsheet information, it is unlikely to be desirable to re-output to a production system, but if it is Issue Data (which includes size changes & additional issues added) - that would be very important to send to a production system.

DeletedFlag

This is looking for line items which have been deleted. Options for this string field are: ALL - Includes both deleted lines and active lines DELETED - Includes only deleted lines ACTIVE - Includes only lines which have not been deleted If nothing is sent in this parameter, ACTIVE will be returned.

RunByMaterialDueDate

This is a true false field. If set to true, the start and end date range on the query above will be looking at the material due date and not the run dates. The material due date in the results is this field:

ProductsInGroup

This is an array of Product Groups. It can be used in place of the single product group. In both of these product group filters, the query results are returning line items of products which belong to the product group. The campaign does not have to be booked for the group.

FieldsToSkipChanges

This is looking at the History of Changes screen on a campaign, and specifically the Field(s) Changed Column. The parameters to fill in here would be an exact match to what is in that column (case sensitive). And it works in conjunction with the UpdatedSinceDateTime parameter above. Please see below for an example.

StatusesToSkipChanges

This is looking at the History of Changes screen on a campaign, and specifically the New Value Column. The statuses expected here are the Campaign Status ID's, so Q1, Q2, IS, etc. And it works in conjunction with the UpdatedSinceDateTime parameter above. Please see below for an example.

This screenshot shows several examples of the fields which get changed on a campaign:

These are the fields which would be added to the array FieldsToSkipChanges if you want to ignore those changes.

chevron-rightThese are ALL available Line Level field changeshashtag

Actual R.O.N. Sites

Expected Creative - Mater Size

Month Data

Ad Type Id

Expected Creative - Native Media Orientation

Order Reps.

Ad Unit

Expected Creative - Native Media Orientation

Original Reps.

Billing

Expected Creative - Sizes

Page Number

Cancel Status

Expected Creative - Targeting Rule IDs

Page Position

Classified Category

Expected Creative - Targeting Rule IDs

Page Priority

Classified Tree Id

GAM End Time

Page Quadrant

CO-OP Details

GAM Excluded Ad Units

Position

Color Code

GAM Included Ad Units

Position Guaranteed

Contract Id

GAM Start Time

Price Adjustments

Creative Type

Google Line ID

Product Id

Credits

Internal Comment

Production Form

Dimensions

Issue Data

Rate

End Date

Issue Material

Reallocation Line

Est. Amount

Issue Material Status

Requested Page Number

Est. Qty

Line Desc.

Section

Est. R.O.N. Sites

Master Size

Space Holder Id

Expected Creative - Ad Unit Frequency Cap

Material Status

Split Order

Expected Creative - AMP Only Y/N

Materials / Creatives

Start Date

Expected Creative - Count

Meta Data

User Defined fields

chevron-rightThese are ALL available Campaign Level field changeshashtag

Advertiser Id

Internal Notes

Pre-Payment

Agency

Invoice Comments

Production Contacts

Agency Pct%

Journal Entries

Production Controller

Billing Schedule

Linked Jobs

Revenue Budgets

Brand Id

Marketing Campaign

Run until Cancel Ind.

CO-OP Details

Order Contact

Self Service Approval Ind.

Confirmation Comments

Order Reps.

Self Service Email

Confirmed Date

Original Reps.

Self Service Phone

Contract Id

Override Address

Space Holder Indicator

Discount Pct%

Override Advertiser Address

Start Date

End Date

Override Billing Contact

Status Code

Exhibition Orders

Override Territory

Tearsheet Contacts

Expense Budgets

P.O. Number

Terms Code

Industry Code

For the array StatusesToSkipChanges, here is an example of a simple campaign history to illustrate:

Note that the campaign line was created at 10:33 and at 10:49, the status was changed to R1.

Passing this payload in, which is saying to return results which have been timestamped since 10:30, not including R1 changes:

That will still return my order line because changes HAVE happened to this order line since 10:30, which were not a change to R1. So it isn't looking at the fact that my campaign is currently in R1 status - it is looking for the change to R1 being in the time specified

If I changed the time to 10:40, then this campaign will not be returned because the only thing that has happened since 10:40 is the change to R1 status, and I have said to ignore that change.

Was this helpful?