The jobticket endpoint is an extension to radixPreflight. This endpoint allows to submit a jobticket (JSON) along with optional processing instructions.
Using this endpoints does not require the need to have prepared preflight profiles for checking and fixing.
A common use case is the preflighting of a print job against the job ticket information. The needed checks and fixups get generated automatically. In addition, certain checks and fixups can get applied for certain products (for example based on the uploaded product type).
The result is the processed PDF file along with various types of reports as well as an preview (all optional).
as calibrateFlow was replaced by radixAPI, we implemented this endpoint as legacy endpoint with the route:
POST /api/v1/workflows/legacy/jobticket/byLink
BODY application/json
JSON payload based on jobticket schema
For authentication, please see the documentation of radixAPI v1.
Use the the id of the returned reponse to get the status of the triggered workflow (former: task)
Deprecated: If you require the reponse in the legacy object model, use the query parameter showLegacy=true when performing a GET /api/v1/workflows/:id?showLegacy=true
This endpoint supports the methode byLink or byUpload
Create a new jobticket call
POST https://ppadev.calibrate.at/api/JobTickets/byLink
BODY application/json
JSON payload based on jobticket schema
or
POST https://ppadev.calibrate.at/api/JobTickets/byUpload
BODY form-data
form-data.task JSON payload
form-data.<fileid_1> binary
form-data.<fileid_2> binary
…
to trigger a preflight and corrections setup based on PDF, a minimum job ticket JSON looks like this. The file gets fetched from its S3 storage, the result is pushed to the defined S3 storage folder. The default preflight setup is for print ready PDF files with no special quality requirements.
{"ticket": {
"customAttributes": {
"printingMethod": "4C-druck"
},
"productList": [{
"isRoot": true,
"intent": {
"layoutIntent": {
"sides": "oneSided",
"spreadType": "singlePage",
"pages": 2,
"dimensions": [
300,
162
],
"bleed": 3
}
}
}],
"resourceList": [
{
"id": "inputfile",
"direction": "input",
"usage": "original",
"resourceVars": {
"uri": "s3://calibrateflow-demo/Testfiles/Flyer_A4.pdf"
}
}
]
}}
This is an optional element and is only required for special rules that need to get defined based on custom Attributes.
Example: name of PDF or industry standard a PDF file shall adher to.
List of product parts defining the parts intents. The required product ticket object is defined further down in this documentation.
This collection defines the required input file and output destination (optional).
Note: Only one input and one output item is currently supported.
the response is the same as when calling the task endpoint:
{
"name": "PortalTask",
"description": "Generated by JobTicketService",
"status": "waiting",
"completed": false,
"result": {},
"container": "5c8527d2ff80260057855dc5",
"callback": {
"url": "http://customer.callback.at"
},
"id": "5c8527d2d975bd0057399a18",
"processes": [
{
"processId": "portalPreflight",
"name": "profile",
"priority": 100,
"data": {
"reports": [
{
"type": "TEMPLATE",
"templatePath": {
"base": "$common",
"name": "Overview_STD"
},
"name": "$originalName_übersicht.pdf"
},
{
"type": "XML",
"id": "5c8527d2ff80260057855dc1"
}
],
"variables": [
{
"userPath": "/root/data/common/masterprofile/"
},
{
"homePath": "/root/data/common/masterprofile/",
"id": "5c8527d2ff80260057855dc4"
},
{
"pdf_t_b_template": "{\"id\":\"Portalworkflow\",\"base\":[],\"type\":\"standard\",\"name\":\"PDF/X-ready V1.4 requirements\",\"checks\":[{\"id\":\"iccBasedCmykOverprintOpm1\"},{\"id\":\"fontNameNotUtf8\"},{\"id\":\"fontNameWrongMasking\"},{\"id\":\"oiMissing\"},{\"id\":\"spotcolorNameNotUtf8\"},{\"id\":\"bppGt8\"},{\"id\":\"alternateImagePrinting\"},{\"id\":\"trueTypeEncodingInvalid\"},{\"id\":\"trueTypeDifferenceStandardEncoding\"},{\"id\":\"moreThanOneEncodingTrueType\"},{\"id\":\"cidGt\"},{\"id\":\"trappedKeyNotSet\",\"severity\":3},{\"id\":\"isEncrypted\",\"severity\":3},{\"id\":\"OutputIntentwithoutProfil\",\"severity\":3},{\"id\":\"OutputIntentMissing\",\"severity\":3},{\"id\":\"noPdfX\",\"severity\":3},{\"id\":\"interactiveFormfields\",\"severity\":3},{\"id\":\"deviceRgbTextLineart\",\"severity\":3},{\"id\":\"deviceRgbImage\",\"severity\":3},{\"id\":\"lzwCompression\",\"severity\":3},{\"id\":\"annotations\",\"severity\":3},{\"id\":\"fontWidthUnequal\",\"severity\":3},{\"id\":\"postscriptEmbedded\",\"severity\":3},{\"id\":\"transferCurve\",\"severity\":3},{\"id\":\"opi\",\"severity\":3},{\"id\":\"damaged\",\"severity\":3},{\"id\":\"security\",\"severity\":3},{\"id\":\"missingGlyph\",\"severity\":3},{\"id\":\"missingFont\",\"severity\":3},{\"id\":\"userScreeningSetting\",\"severity\":3},{\"id\":\"x\",\"name\":{\"en_US\":\"PDF/X Checks\",\"de_DE\":\"PDF/X Prüfungen\"},\"description\":{\"en_US\":\"all PDF/X relate4d checks, but not for a specific PDF/X-version\",\"de_DE\":\"alle PDF/X releavten Prüfungen, ausgenommen der spezifischen Prüfungen der einzelnen PDF/X Versionen\"}},{\"id\":\"alternateColorSpaceNotDevice\"},{\"id\":\"jpeg2000Used\"},{\"id\":\"iccBasedRgbTextLineart\",\"severity\":3},{\"id\":\"pageScaling\",\"severity\":3},{\"id\":\"calGrayTextLineart\",\"severity\":3},{\"id\":\"iccBasedGrayTextLineart\",\"severity\":3},{\"id\":\"iccBasedCmykTextLineart\",\"severity\":3},{\"id\":\"calGrayImage\",\"severity\":3},{\"id\":\"iccBasedGrayImage\",\"severity\":3},{\"id\":\"iccBasedCmykImage\",\"severity\":3},{\"id\":\"calRgbTextLineart\",\"severity\":3},{\"id\":\"labImage\",\"severity\":3},{\"id\":\"calRgbImage\",\"severity\":3},{\"id\":\"iccBasedRgbImage\",\"severity\":3},{\"id\":\"optionalContent\",\"severity\":3},{\"id\":\"transparencyUsed\",\"severity\":3},{\"id\":\"pdfVersionGt\",\"severity\":3,\"variables\":[{\"key\":\"version\",\"value\":1.4}]},{\"id\":\"x1a\"},{\"id\":\"fontInvalid\"},{\"id\":\"imageInvalid\"},{\"id\":\"oiMissingIcc\"},{\"id\":\"blendingCsCmykSoftmask\",\"severity\":3},{\"id\":\"oiPucv3\",\"severity\":1},{\"id\":\"oiPucNp\",\"severity\":1},{\"id\":\"oiPucv2\",\"severity\":1},{\"id\":\"oiPcv3\",\"severity\":1},{\"id\":\"oiPc330Np\",\"severity\":1},{\"id\":\"oiIcv2\",\"severity\":1},{\"id\":\"oiPc300Np\",\"severity\":1},{\"id\":\"oiIcv2300\",\"severity\":1},{\"id\":\"oiPxrUnknown\",\"severity\":2,\"variables\":[{\"key\":\"knowCustomOis\",\"value\":\"\"}]},{\"id\":\"oiPxrSheetfedUsDeprecated\",\"severity\":2},{\"id\":\"oiPxrSheetfedEciDeprecated\",\"severity\":2},{\"id\":\"oiPxrDeprecated\",\"severity\":2},{\"id\":\"oiPxrSheetfedOutdated\",\"severity\":2},{\"id\":\"oiPxrSheetfedUs\",\"severity\":1},{\"id\":\"oiPxrSheetfedEci\",\"severity\":1},{\"id\":\"oiPxrLargeGamut\",\"severity\":2},{\"id\":\"CropBoxNeMediaBox\",\"severity\":2},{\"id\":\"resolutionSingleImageLevel2\",\"severity\":1,\"variables\":[{\"key\":\"minRes\",\"value\":\"299.5\"},{\"key\":\"maxRes\",\"value\":\"449.5\"}]},{\"id\":\"resolutionSingleImageLevel1\",\"severity\":2,\"variables\":[{\"key\":\"minRes\",\"value\":\"299.5\"}]},{\"id\":\"BlackKonlyKnockoutLteFillText\",\"severity\":1,\"variables\":[{\"key\":\"size\",\"value\":\"11.94\"}]},{\"id\":\"spotColorsIdenticalAltanate\",\"severity\":3},{\"id\":\"deviceGrayOverprintStroke\",\"severity\":2},{\"id\":\"deviceGrayOverprintFill\",\"severity\":2},{\"id\":\"deviceGrayBlackOverprintLteStrokeText\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"11.94\"}]},{\"id\":\"deviceGrayBlackOverprintLteFillText\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"11.94\"}]},{\"id\":\"deviceGrayBlackKnockoutLteStrokeText\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"11.94\"}]},{\"id\":\"deviceGrayBlackKnockoutLteFillText\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"11.94\"}]},{\"id\":\"deviceGrayBlackOverprintGtStrokeText\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"11.95\"}]},{\"id\":\"deviceGrayBlackOverprintGtFillText\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"11.95\"}]},{\"id\":\"BlackKonlyKnockoutLteStrokeLineart\",\"severity\":2,\"variables\":[{\"key\":\"width\",\"value\":\"1.9994\"}]},{\"id\":\"deviceGrayBlackOverprintLteStrokeLineart\",\"severity\":2,\"variables\":[{\"key\":\"width\",\"value\":\"1.9994\"}]},{\"id\":\"deviceGrayBlackKnockoutLteStrokeLineart\",\"severity\":2,\"variables\":[{\"key\":\"width\",\"value\":\"1.9994\"}]},{\"id\":\"deviceGrayBlackOverprintGtStrokeLineart\",\"severity\":2,\"variables\":[{\"key\":\"width\",\"value\":\"1.9995\"}]},{\"id\":\"deviceGrayBlackOverprintFillLineart\",\"severity\":2},{\"id\":\"seperationAll\",\"severity\":2},{\"id\":\"minLineWidthSingleColor100pzt\",\"severity\":2,\"variables\":[{\"key\":\"width\",\"value\":\"0.124\"}]},{\"id\":\"minLineMultiColor\",\"severity\":2,\"variables\":[{\"key\":\"width\",\"value\":\"0.25\"}]},{\"id\":\"minTextSizeSingleColor\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"5\"}]},{\"id\":\"minTextSizeMultiColor\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":\"8\"}]},{\"id\":\"zeroPtLines\",\"severity\":2},{\"id\":\"rotation\",\"severity\":3},{\"id\":\"orientationUnequal\",\"severity\":3},{\"id\":\"richBlackTextLineartFill\",\"severity\":2},{\"id\":\"richBlackTextLineartStroke\",\"severity\":2},{\"id\":\"sizeOrientationUnequal\",\"severity\":2},{\"id\":\"Text400PztStroke\",\"severity\":2},{\"id\":\"Lineart400PztStroke\",\"severity\":2},{\"id\":\"Text400PztFill\",\"severity\":2},{\"id\":\"separatedBlackTextFill\",\"severity\":2},{\"id\":\"blendingCsCmyk\",\"severity\":3},{\"id\":\"Lineart400PztFill\",\"severity\":2},{\"id\":\"strokeTac\",\"severity\":2,\"variables\":[{\"key\":\"less\",\"value\":320}]},{\"id\":\"fillTac\",\"severity\":2,\"variables\":[{\"key\":\"less\",\"value\":320}]},{\"id\":\"whiteLineartStrokeOverprint\",\"severity\":2},{\"id\":\"whiteLineartFillOverprint\",\"severity\":2},{\"id\":\"whiteTextStrokeOverprint\",\"severity\":3},{\"id\":\"whiteTextFillOverprint\",\"severity\":3},{\"id\":\"BlackKonly100przKnockoutLteStrokeLineart\",\"severity\":2,\"variables\":[{\"key\":\"less\",\"value\":2}]},{\"id\":\"BlackKonly100przKnockoutLteFillText\",\"severity\":2,\"variables\":[{\"key\":\"size\",\"value\":12}]},{\"id\":\"spotcolorUsed\",\"severity\":1},{\"id\":\"tacAbove\",\"severity\":2,\"variables\":[{\"key\":\"maxTac\",\"value\":320},{\"key\":\"maxTacAperture\",\"value\":15}]},{\"id\":\"resolutionBitmapLevel3\",\"severity\":1,\"variables\":[{\"key\":\"maxRes\",\"value\":3600}]},{\"id\":\"resolutionBitmapLevel2\",\"severity\":1,\"variables\":[{\"key\":\"minRes\",\"value\":550},{\"key\":\"maxRes\",\"value\":800}]},{\"id\":\"resolutionBitmapLevel1\",\"severity\":2,\"variables\":[{\"key\":\"minRes\",\"value\":550}]},{\"id\":\"resolutionHalftoneLevel3\",\"severity\":1,\"variables\":[{\"key\":\"maxRes\",\"value\":750}]},{\"id\":\"resolutionHalftoneLevel2\",\"severity\":1,\"variables\":[{\"key\":\"minRes\",\"value\":200},{\"key\":\"maxRes\",\"value\":300}]},{\"id\":\"resolutionHalftoneLevel1\",\"severity\":2,\"variables\":[{\"key\":\"minRes\",\"value\":200}]},{\"id\":\"emptyPage\",\"severity\":1},{\"id\":\"spotCount\",\"severity\":2,\"variables\":[{\"key\":\"number\",\"value\":3}]},{\"id\":\"xReady\"},{\"id\":\"labTextLineart\",\"severity\":3}],\"fixups\":[]}",
"id": "5c8527d2ff80260057855dc2"
},
{
"template": "Portalworkflow",
"id": "5c8527d2ff80260057855dc3"
}
],
"options": [
"novariables",
"uncompressimg"
],
"arguments": [
{
"language": "de"
}
],
"id": "portalPreflight",
"profilePath": {
"base": "$common",
"name": "data/calibrate_masterProfile.kfpx"
}
},
"completed": false,
"status": "Waiting",
"result": {},
"children": [],
"resourceRefs": [
"inputfile"
],
"id": "5c8527d2d975bd0057399a19",
"taskId": "5c8527d2d975bd0057399a18"
}
],
"resources": [
{
"resourceId": "inputfile",
"name": "Flyer_A4.pdf",
"originalFilename": "Flyer_A4.pdf",
"direction": "input",
"pathType": "file",
"uri": "s3://calibrateflow-demo/Testfiles/Flyer_A4.pdf",
"usage": "original",
"container": "5c8527d2ff80260057855dc5",
"mimeType": "application/pdf",
"internalUrl": "https://ppa.calibrate.at/api/Containers/5c8527d2ff80260057855dc5/download/Flyer_A4.pdf",
"destinationUrl": "",
"size": 2361140,
"id": "5c8527d2d975bd0057399a1a",
"taskId": "5c8527d2d975bd0057399a18"
}
]
}
If the preflight process is know to the calling client, it is possible to pass this information as processList object:
"processList": [
{
"id": "portalPreflight",
"type":"preflight",
"processVars": {
"do": true,
"engine": "pdfTB",
"template":{
"id" : "Portalworkflow",
"base": [
"pdfxready_classic_checks"
]
}
}
}
It is further possible, to add additional check and fixups with variables.
As of now, the type of reports that are required have to be defined in a separate JSON file that can only be configured by calibrate staff. This will change in the near future.
This endpoint also supports uri definitions using Amazon S3 storage. For this to work, an AWS Key and secret must be defined (done by the calibrate staff).
Example: "uri": "s3://calibrateflow-demo/Testfiles/Flyer_A4.pdf"
If the destination files shall also get stored on S3 using a specific folder (which must exist), add the following object to the resourceList collection:
{
"id": "outputfile",
"direction": "output",
"usage": "processed",
"pathType": "folder",
"resourceVars": {
"uri": "s3://calibrate-test/generated/"
}
}
The product ticket property allows to define a product by intents, which represent the required product. This includes number of pages, size of printed sheets (open format), allowed separations and alike.
When working with a job ticket and the named features are activated for checking and fixing, the PDF gets modified and checked agains these intents. The named features are either defined globally or inidiviually by jobTicket call.
A ticket can defined a single product part, like FlatWork, Cover or Brochure. For Multipart products, three product tickets are required, like Book (isRoot = true), Cover and Body. The root ticket shall define the binding intent for the whole product. The other two parts shall define the binding intent required for that part.
{
"productType": "",
"productTypeDetails": "",
"descriptiveName": "",
"isRoot": true,
"amount": 0
"id": "",
"intent": {
"layoutIntent": {},
"colorIntent": {},
"mediaIntent": {},
"bindingIntent": {},
"foldingIntent": {}
}
}
JSON based job ticket, close to xJDF. Those have to be defined as ticket object in the template. A job ticket is required by certain functions. Like checkLayoutIntent or centerTrimBox.
required (enum):
optional (string)
a more descriptive name of the product part
optional (string)
a more descriptive name of the product
optional (integer)
defines the requires printed quantity - no needed for checking
optional (boolean)
defines the root part for multipart tickets if the the first part in the collection is not the root part.
optional (string)
defines a unique id for this product part
{
"sides": "OneSided",
"spreadType": "SinglePage",
"pages": 2,
"dimensions": [
300,
100
],
"finishedDimensions": [
300,
100
],
"bleed": 3 // integer or collection l, b, r ,t
}
required (collection of two floats)
Dimension of the printed product (open) before folding, without bleed. First value defines the width, the second value defines the height.
NOTE:
required (collection of two floats)
Dimension of the final printed product (closed) after folding. First value defines the width, the second value defines the height.
NOTE: For folded products (and some covers), this value differes from the values of dimensions if spreadType is Spread
required (integer)
Number of created surfaces. Hence, this value can only be a multiple of 2.
NOTE:
required (float)
Defines the requires bleed.
Note: if checking of bleed is ordered, the values of spreadType and pages deare used to decide if bleed is checked on both sides, left and right, or only one on the outer side side (for multipage products like booklet or books).
required (enum)
Defines the sides of the subtrate surface to be printed on (also refered to as simplex ot duplex printing).
One of the following Values
required (enum)
One of the following Values
Note
If a product is required to be produced as spread and also gets delivered as spread, like folded products, a value of Spread shall be used and dimensions shall define the spread's size.
"colorIntent": {
"surfaceColorFront": {
"colorsUsed": [
"Cyan",
"Magenta",
"Yellow",
"Black",
"Spot1"
],
"printStandard": "FOGRA51"
},
"surfaceColorBack": {
"colorsUsed": [
"Black"
],
"printStandard": "FOGRA52"
}
}
Defines both surfaces of a printed product sheet. If not defined, the all separations are allowed.
Collection of strings representing the expected separations. All colors except Cyan, Magenta, Yellow and Black are considered as Spot colors.
If spot colors are allowed, but their name is unknown, use the placeholdername Spot1 (Spot2, …)
If no separations are defined, this side of the surface will be treaded as required empty pages (if layoutIntent.sides = TwoSidedHeadToHead)
Spot colors used for processing steps will be supported in future versions. However, they are treated as regular printing colors at the moment.
Defines the used printing standard based on the characterisation data. It is used to define the destination profile for any color conversion.
If no printStandard is defined but a color conversion is requires, a default will be used based on the colorconversion defaults (FOGRA39).
optional (enum) - Default: FOGRA39
Defines the substrate to be printed on.
"mediaIntent": {
"isoPaperSubstrate": "PS1",
"backIsoPaperSubstrate": "PS2",
"mediaType": "Paper",
"thickness": 94,
"weight": 115
}
required (enum)
optional (enum) - Default: PS1
only, if different from isoPaperSubstrate
optional (number)
Paper thickness in microns
optional (number)
Paper weight in g/m
Defines the binding for this product. Only required, if product is bound and if folding marks and spine marks shall be drawn (by the named feature createLegend)
"bindingIntent": {
"bindingType": "SaddleStitch",
"bindingOrder": "Collect",
"bindingSide": "Left"
}
required (enum) - Default: None
optional (enum) - Default: Left
optional (enum) - Default: None
Defines the folding of the product. Only required, if product is folded and if folding marks shall be drawn (by the named feature createLegend)
"foldingIntent": {
"foldCatalog": "F4-2",
"foldingDetails": "left"
}
optional (string) - Default: F2-1 (not folded)
In the future, the full JDF folding catalog will get supported
It is posible to define a custom fold scheme catalog value.
Example: right angle half fold
{
"foldCatalog": "d1/2_+d1/2"
}
optional (string) - Default: left
Allows to defined the start of the fold (left or front) and any required travel values (size reduction for inner folds)
Example: portrait Trifold with 3pt travel (inner page is reduced by 3pt)
{
"foldCatalog": "d1/3_d1/3",
"foldingDetails": "front_3_0"
}