Objectif Lune PlanetPress Connect - 1.7 Instruction Manual

REST API Cookbook with Working Examples
Version:1.7.1
REST API Cookbook with Working Examples Version 1.7.1 Last Revision:2017-10-30
Objectif Lune, Inc. 2030 Pie-IX, Suite 500 Montréal, QC, Canada, H1V 2C8
+1 (514) 875-5863
www.objectiflune.com
All trademarks displayed are the property of their respective owners.
© Objectif Lune, Inc. 1994-2017. All rights reserved. No part of this documentation may be reproduced, transmitted or distributed outside of Objectif Lune Inc. by any means whatsoever without the express written permission of Objectif Lune Inc. Objectif Lune Inc. disclaims responsibility for any errors and omissions in this documentation and accepts no responsibility for damages arising from such inconsistencies or their further consequences of any kind. Objectif Lune Inc. reserves the right to alter the information contained in this documentation without notice.
Page 4

Table of Contents

Table of Contents 5
Welcome to the PlanetPress Connect REST API Cookbook 11
Technical Overview 12
Workflow & Workflow Processes 13
Data Mapping 14 Content Creation 15 Job Creation 16 Output Creation 17
All-In-One 18 Input Files 20 Data Entities 21
Data Set & Data Record Entities 21
Content Set & Content Item Entities 22
Job Set & Job Entities 23 Workflow Operations 25
Asynchronous Operations 25
Synchronous Operations 26 JSON Structures 27
Common Structures 27
Specific Structures 30
Working Examples 65
Getting Started 66
Requirements & Installation 67
Structure of the Working Examples 69
HTML Input Placeholders & Multiple Value Fields 71
Display of Working Example Results 72
Using the Working Examples with Server Security 74 Server Security & Authentication 75
Authenticating with the Server 76 Working with the File Store 80
Uploading a Data File to the File Store 81
Uploading a Data Mapping Configuration to the File Store 87
Uploading a Design Template to the File Store 93
Page 5
Uploading a Job Creation Preset to the File Store 99
Uploading an Output Creation Preset to the File Store 105 Working with the Entity Services 111
Finding Specific Data Entities in the Server 112
Finding all the Data Sets in the Server 144
Finding the Data Records in a Data Set 147
Finding all the Content Sets in the Server 151
Finding the Content Items in a Content Set 154
Finding all the Job Sets in the Server 158
Finding the Jobs in a Job Set 161 Working with the Workflow Services 164
Running a Data Mapping Operation 165
Running a Data Mapping Operation (Using JSON) 172
Running a Data Mapping Operation for PDF/VT File (to Data Set) 179
Running a Data Mapping Operation for PDF/VT File (to Content Set) 186
Running a Content Creation Operation for Print 193
Running a Content Creation Operation for Print By Data Record (Using JSON) 200
Running a Content Creation Operation for Email By Data Record (Using JSON) 207
Creating Content for Web By Data Record 218
Creating Content for Web By Data Record (Using JSON) 224
Running a Job Creation Operation (Using JSON) 230
Running an Output Creation Operation 237
Running an Output Creation Operation (Using JSON) 245
Running an Output Creation Operation By Job (Using JSON) 253
Running an All-In-One Operation (Using JSON) 261
REST API Reference 277
Authentication Service 282
Service Handshake 283
Authenticate/Login to Server 284
Service Version 286 Content Creation Service 287
Service Handshake 288
Process Content Creation 289
Process Content Creation (By Data Record) (JSON) 291
Create Preview PDF 293
Create Preview PDF (JSON) 295
Create Preview PDF (By Data Record) 297
Page 6
Get All Operations 299
Get Progress of Operation 300
Get Result of Operation 302
Cancel an Operation 304
Service Version 305 Content Item Entity Service 306
Service Handshake 307
Get Data Record for Content Item 308
Get Content Item Properties 310
Update Content Item Properties 312
Update Multiple Content Item Properties 314
Service Version 316 Content Set Entity Service 317
Get All Content Set Entities 318
Get Content Items for Content Set 319
Get Page Details for Content Set 321
Delete Content Set Entity 323
Get Content Set Properties 325
Update Content Set Properties 327
Service Version 329 Data Record Entity Service 330
Service Handshake 331
Add Data Records 332
Get Data Record Values 334
Update Data Record Values 336
Get Data Record Properties 338
Update Data Record Properties 340
Get Multiple Data Record Values 342
Update Multiple Data Record Values 344
Update Multiple Data Record Properties 346
Service Version 348 Data Set Entity Service 349
Get All Data Set Entities 350
Get Data Records for Data Set 351
Delete Data Set Entity 352
Get Data Set Properties 354
Update Data Set Properties 356
Page 7
Service Version 358 Data Mapping Service 359
Service Handshake 360
Process Data Mapping 361
Process Data Mapping (JSON) 363
Process Data Mapping (PDF/VT to Data Set) 366
Process Data Mapping (PDF/VT to Content Set) 368
Get All Operations 370
Get Progress of Operation 371
Get Result of Operation 373
Cancel an Operation 375
Service Version 376 Document Entity Service 377
Service Handshake 378
Get Document Metadata Properties 379
Update Document Metadata Properties 381
Service Version 383 Document Set Entity Service 384
Service Handshake 385
Get Documents for Document Set 386
Get Document Set Metadata Properties 388
Update Document Set Metadata Properties 390
Service Version 392 Content Creation (Email) Service 393
Service Handshake 394
Process Content Creation (By Data Record) (JSON) 395
Get All Operations 397
Get Progress of Operation 398
Get Result of Operation 400
Cancel an Operation 402
Service Version 404 Entity Service 405
Service Handshake 406
Find Data Entity 407
Service Version 409 File Store Service 410
Service Handshake 411
Page 8
Download Managed File or Directory 412
Delete Managed File or Directory 414
Upload Data Mapping Configuration 416
Upload Job Creation Preset 418
Upload Data File 420
Upload Design Template 422
Upload Output Creation Preset 424
Service Version 426 Content Creation (HTML) Service 427
Service Handshake 428
Process Content Creation (By Data Record) 429
Process Content Creation (By Data Record) (JSON) 431
Get Template Resource 433
Service Version 435 Job Creation Service 436
Service Handshake 437
Process Job Creation 438
Process Job Creation (JSON) 440
Process Job Creation (JSON Job Set Structure) 442
Get All Operations 444
Get Progress of Operation 445
Get Result of Operation 447
Cancel an Operation 449
Service Version 450 Job Entity Service 451
Service Handshake 452
Get Content Items for Job 453
Get Job Segments for Job 455
Get Job Metadata Properties 456
Update Job Metadata Properties 458
Get Job Properties 460
Update Job Properties 462
Update Multiple Job Properties 464
Service Version 465 Job Segment Entity Service 466
Service Handshake 467
Get Document Sets for Job Segment 468
Page 9
Get Job Segment Metadata Properties 470
Update Job Segment Metadata Properties 472
Service Version 474 Job Set Entity Service 475
Get All Job Set Entities 476
Get Jobs for Job Set 477
Delete Job Set Entity 478
Get Job Set Metadata Properties 480
Update Job Set Metadata Properties 482
Get Job Set Properties 484
Update Job Set Properties 486
Service Version 488 Output Creation Service 489
Service Handshake 490
Process Output Creation 491
Process Output Creation (JSON) 493
Process Output Creation (By Job) (JSON) 495
Get All Operations 497
Get Progress of Operation 498
Get Result of Operation 500
Get Result of Operation (as Text) 502
Cancel an Operation 504
Service Version 505 All-In-One Service 506
Service Handshake 507
Process All-In-One (JSON) 508
Process All-In-One (Adhoc Data) 510
Get All Operations 514
Get Progress of Operation 515
Get Result of Operation 517
Get Result of Operation (as Text) 519
Cancel an Operation 521
Service Version 522
Copyright Information 523
Legal Notices and Acknowledgments 524
Page 10

Welcome to the PlanetPress Connect REST API Cookbook

This guide is aimed at technically experienced users who wish to learn and use the REST API available in PlanetPress Connect version 1.7.1.
The PlanetPress Connect REST API consists of many services that expose access to a number of areas including workflow, data entity management and file store operations.
These services can be used to perform various interactions with the PlanetPress Connect server such as:
l Upload & Manage Data Files, Data Mapping Configurations & Design Templates in File
Store
l Create, Manage & Find Data Entities internal to the PlanetPress Connect Server
l Create & Monitor Processing Operations within the Workflow
The REST API also supports added security to restrict unauthorized access to the services.
This guide is broken down into three sections:
l Technical Overview - Overview of the concepts and structures used in PlanetPress
Connect and the REST API
l Working Examples - Working examples of the PlanetPress Connect REST API in action
(HTML5 & JavaScript/jQuery)
l REST API Reference - A complete reference to the PlanetPress Connect REST API &
Services
It is recommended that the technical overview section be read first, followed by the working examples, using the REST API reference for greater detail on implementing any specific example.
Page 11

Technical Overview

This section provides an overview of the concepts and structures used within PlanetPress Connect and the REST API.
l Workflow & Workflow Processes
l Input Files
l Data Entities
l Workflow Operations
l JSON Structures
Page 12

Workflow & Workflow Processes

The primary workflow in PlanetPress Connect consists of four major processes that each require a number of inputs, and once executed, produce a particular form of output. These processes are: data mapping, content creation, job creation and output creation.
There is an additional workflow process, named All-In-One, which embodies all four major workflow processes in a singular process.
The following diagram illustrates the primary workflow in PlanetPress Connect:
Typically an individual workflow process (shown above in blue) will take one or more input files as input (shown above in green), and will produce either intermediary output in the form of a data entity (shown above in red), or final output in the form of print, web, or email based content (depending on the context of the content produced) (shown above in yellow).
Input files to a workflow process include files such as data files, data mapping configurations
and design templates. In most cases an input file needs to be uploaded to the server file store before it can be used in a workflow process. A file that has been uploaded to the file store is known as a managed file, and managed files can be referenced via a unique identifier or name.
A data entity is simply a structured data artefact, produced as a result of an instance of a workflow process known as a workflow operation. Data entities are stored internally to the server and can also be referenced via a unique identifier.
Where a certain process depends on the output of the process before it, the data entity or entities produced by the earlier process are used as an input to that process.
Page 13

Data Mapping

The data mapping process involves taking a data file or source, applying a data mapping configuration to it, and producing a structured set of data or data records (a data set). This process can also produce a data set or content set from a PDF/VTfile using its internal meta data instead of a data mapping configuration.
The following diagram illustrates the default workflow for the data mapping process:
The following diagram illustrates the alternative workflow for the data mapping process when using PDF/VT data files specifically:
Page 14

Content Creation

The content creation process involves taking either a data set or one or more data records (from a data set), combining them with a suitable design template, and producing one or more sets of content (content sets). If the content is for the Email or Web context then output can be produced at this stage.
The following diagram illustrates the workflow for the content creation process:
Page 15

Job Creation

The job creation process involves taking one or more content sets and applying a job creation preset for organizing, sorting and grouping them into a set of logical jobs (a job set). This includes the application of data filtering and finishing options.
The following diagram illustrates the workflow for the job creation process:
Page 16

Output Creation

The output creation process involves taking either a job set or one or more jobs (from a job set), applying an output creation preset, and producing the print output (Print context).
The following diagram illustrates the workflow for the output creation process:
Page 17

All-In-One

The All-In-One process embodies all four major workflow processes (data mapping, content
creation, job creation and output creation) in a singular process. It can be configured to run one
or more of the four processes, as long as the processes specified result in a logical sequence or workflow.
Depending on it's configuration, the All-In-One process can produce either a data set, content sets, a job set or print output (Print context).
The following diagram illustrates the potential inputs, outputs and workflows for the All-In-One process:
The following table lists the available processes, input combinations and expected outputs for the All-In-One process:
Page 18
Processes Input Combination Expected
Output
Data Mapping Only Data File + Data Mapping Configuration Data Set
Data Mapping + Content Creation
Content Creation Only Data Records + Design Template Content Set(s)
Data Mapping + Content Creation + Job Creation
Content Creation + Job Creation
Content Creation + Job Creation + Output Creation
Output Creation Only Jobs + Output Creation Preset Print Output
Data File + Data Mapping Configuration + Design Template
Data File + Data Mapping Configuration + Design Template
Data Records + Design Template Job Set
Data Records + Design Template + Output Creation Preset
Content Set(s)
Job Set
Print Output
Data Mapping + Content Creation + Job Creation + Output Creation
Data Mapping + Content Creation + Job Creation + Output Creation
Data File + Data Mapping Configuration + Design Template + Output Creation Preset
Data File + Data Mapping Configuration + Design Template + Job Creation Preset + Output Creation Preset
Print Output
Print Output
Page 19

Input Files

Input files are used as input to a specific workflow process. The following table lists the types of input files used in the PlanetPress Connect workflow:
Name Relevant Workflow
File Name Examples
Process
Data File Data Mapping l Promo-EN-10.csv
l Promo-EN-10000.csv
l PDFVT-Data.pdf
Data Mapping Configuration
Data Mapping l Promo-EN.OL-datamapper
l Transact-EN.OL-
datamapper
Design Template Content Creation l letter-ol.OL-template
l invoice-ol-transpromo.OL-
template
Job Creation Preset Job Creation l Promo-EN-JC-Config.OL-
jobpreset
Output Creation Preset Output Creation l FX4112_Hold_Config.OL-
outputpreset
l Promo-EN-OC-Config.OL-
outputpreset
Page 20

Data Entities

There are many data entity types used by PlanetPress Connect, but not all data entities can be accessed through the REST API. The main data entities to be aware of when working with the API are:
l Data Sets
l Data Records
l Content Sets
l Content Items
l Job Sets
l Jobs

Data Set & Data Record Entities

The data set is the artefact produced by a data mapping operation. It holds the data that was mapped out of the input data file. A data mapping operation produces a single data set, which contains as many data records as there are documents.
Each data record contains a collection of data values. The data records in the data set form the master record, or document record, which typically contains document recipient information. The master record can also contain a collection of data tables, which form the detail records that hold data such as invoice line items.
Each data table contains a collection of data records, where each data record contains a collection of data values and a collection of data tables, and so on.
Page 21
The following diagram illustrates the basic relationship between these entities in the context of the data mapping process:
The data set and data record entities (shown above in blue) are accessible via the Data Set
Entity and Data Record Entity services.

Content Set & Content Item Entities

The content set is the artefact produced by a content creation operation. It holds all the pages that were produced by the operation. A content creation operation produces one or more content sets, which contain as many content items as there were data records given at the start of the operation.
Because the data records used may have different data set owners, a content set cannot be linked to a single data set, but rather content items are linked to data records. A content item is further divided into content sections and content pages.
The following diagram illustrates the basic relationship between these entities in the context of the content creation process:
Page 22
The content set and content item entities (shown above in blue) are accessible via the Content
Set Entity and Content Item Entity services.

Job Set & Job Entities

The job set is the artefact produced by a job creation operation. It consists of a hierarchical structure that divides documents into various structures and it basically decides which documents are to be printed and in what order.
A job creation operation creates a single job set which contains a series of containers where every level contains one or more of the next level down: jobs, job segments, document sets, documents and document pages. The last level in the chain, the document pages, contains a single content item. Hence, at the job creation level, a document may consist of one or more content items.
The following diagram illustrates the basic relationship between these entities in the context of the job creation process:
The job set and job entities (shown above in blue) are accessible via the Job Set Entity and
Job Entity services. The job segment, document set and document entities (also shown above
in blue) are accessible via the Job Segment Entity, Document Set Entity and Document Entity services.
In summary, the following diagram illustrates the basic relationship between all data entities in
Page 23
the overall context of the primary workflow in PlanetPress Connect:
Page 24

Workflow Operations

Each individual process in the overall workflow can potentially be a long running operation.
Accordingly, there are two types of workflow operations possible in the PlanetPress Connect REST API:
l Asynchronous – the operation is initiated, monitored, and the result returned using
multiple requests (Default)
l Synchronous – the operation is initiated and the result returned using a single request

Asynchronous Operations

Asynchronous workflow operations require the submission of an initial HTTP request to initiate the operation. Then additional requests are required to monitor progress and retrieve the final result. All the required detail is included in the HTTP response headers of the initial request, including the URIs that should be used for further processing.
A successful request will return a response that will include the headers listed in the following table:
Header Description
operationId The unique id of the operation being processed
Link Contains multiple link headers which provide details on which URI to use to
retrieve further information on the operation:
l Header with rel="progress" - The URL to use to check the progress of
the operation
l Header with rel="result" - The URL to use to retrieve the result of the
operation
l Header with rel="cancel" - The URL to use to cancel the operation
A request made to the progress URI during processing will return a progress percentage value of 0 to 100, and finally the value of ‘done’ once the operation has completed.
Page 25
A request made to the cancel URI during processing will immediately cancel the operation.
A request made to the result URI after processing has completed will return the final result of the operation.
This is the default workflow operation type, and this approach is used across most workflow based services as demonstrated in the Working with the Workflow Services page of the
Working Examples section.

Synchronous Operations

Synchronous workflow operations initiate the operation and retrieve the final result in a single request.
There are no additional operation related headers returned, and there is no option to either monitor progress or cancel a running operation.
This approach is only used by specific methods found in the All-In-One workflow service.
Page 26

JSON Structures

The PlanetPress Connect REST API uses various JSON structures to describe certain inputs and outputs to resource methods.
These structures can be broken down into the following categories:
l Common - Structures that are commonly used throughout the REST API
l Specific - Structures that are used by a specific resource method or service in the REST
API

Common Structures

Common JSON structures used in the PlanetPress Connect REST API include the following:
JSON Identifier
Describes an identifier for a single data entity or managed file in PlanetPress Connect.
The structure consists of an object with a single name/value pair:
l identifier - the data entity or managed file identifier (type of number)
Example:
{
"identifier": 12345
}
JSON Identifier (Named)
Describes a named identifier for a single managed file in PlanetPress Connect.
The structure consists of an object with a single name/value pair:
l identifier - the managed file named identifier (type of string)
Example:
{
"identifier": "Promo-EN-1000.csv"
Page 27
}
JSON Identifier List
Describes a list of identifiers for multiple data entities in PlanetPress Connect.
The structure consists of an object with a single name/value pair:
l identifiers - an array of data entity identifiers (type of number)
Example:
{
"identifiers": [ 12345, 23456, 34567 ]
}
JSON Name/Value List (Properties Only)
Describes a list of properties (each as a name/value pair).
The structure consists of an array of objects each with the following name/value pairs:
l name - the name of the property (type of string)
l value - the value of the property (type of string)
Example:
[
{
"name": "start",
"value": "2015-01-01 00:00:00T-0500" }, {
"name": "end",
"value": "2015-12-31 23:59:59T-0500" }
]
JSON Name/Value List
Describes a list of properties (each as a name/value pair) for a data entity of a specific ID.
The structure consists of an object with the following name/value pairs:
Page 28
l id - the data entity identifier (type of number)
l properties - the data entity properties, consisting of an array of objects each with the
following name/value pairs:
l name - the name of the property (type of string)
l value - the value of the property (type of string)
Example:
{
"id": 12345, "properties": [
{
"name": "start",
"value": "2015-01-01 00:00:00T-0500" }, {
"name": "end",
"value": "2015-12-31 23:59:59T-0500" }
]
}
JSON Name/Value Lists
Describes multiple lists of properties (as name/value pairs) for data entities of a specific ID.
The structure consists of an array of JSON Name/Value List structure objects.
Example:
[
{
"id": 12345, "properties": [
{
"name": "start",
"value": "2015-01-01 00:00:00T-0500" }, {
"name": "end",
"value": "2015-12-31 23:59:59T-0500"
Page 29
}
] }, {
"id": 23456,
"properties": [
{
"name": "start",
"value": "2015-01-01 00:00:00T-0500" }, {
"name": "end",
"value": "2015-12-31 23:59:59T-0500" }
]
}
]

Specific Structures

Specific JSON structures used in the PlanetPress Connect REST API include the following:
JSON Identifier (with createOnly flag)
Describes an identifier for a single job set entity, along with additional parameters used specifically in an output creation operation.
The structure consists of an object with the following name/value pairs:
l identifier - the job set entity identifier (type of number)
l createOnly - flag to specify if output is to be only created in the server and not sent to it's
final destination (type of boolean)
Example:
{
"identifier": 12345, "createOnly": true
}
Page 30
JSON Identifier List (with createOnly flag)
Tip
A data record entity (in the record data table) can contain one or more data tables that each contain one or more data record entities (nested data record entities).
A nested data record entity can itself contain one or more data tables that each contain one or more nested data record entities, and so on for potentially multiple levels of nested data tables and data record entities.
A data record entity that contains a data table of nested data record entities is considered to be the parent of the data record entities contained in that data table (which are considered to be the children).
See the Data Entities page of the Technical Overview section for further detail on data set and data record entities.
Describes a list of identifiers for multiple job entities, along with additional parameters used specifically in an output creation operation.
The structure consists of an object with the following name/value pairs:
l identifiers - an array of job entity identifiers (type of number)
l createOnly - flag to specify if output is to be only created in the server and not sent to it's
final destination (type of boolean)
Example:
{
"identifiers": [ 12345, 23456, 34567 ], "createOnly": true
}
JSON Record Content List
Describes a list of data fields (as name/value pairs), nested data records (if any), along with a number of additional properties for a data record entity of a specific ID.
The structure consists of an object with the following name/value pairs:
Page 31
l id - the data record entity identifier (type of number)
l fields - a list of data fields in the data record entity, consisting of an array of objects
each with the following name/value pairs:
l name - the name of the data field (type of string)
l value - the value of the data field (type of string)
l records - a list of any nested data record entities, consisting of an array of objects each
with the following name/value pairs:
l id - the data record entity identifier (type of number)
l table - the data record entity data table name (type of string)
l parentrecordid - the data record entity identifier of parent entity (type of number)
l fields - a list of data fields in the data record entity, consisting of an array of
objects each with the following name/value pairs:
l name - the name of the data field (type of string)
l value - the value of the data field (type of string)
Specific to data record entities that are children of a data set entity (data record entities in the
record data table), two additional name/value pairs are included:
l table - the data record entity data table name (value of record) (type of string)
l datasetid - the data set entity identifier of parent entity (type of number)
Specific to nested data record entities that are children of a data record entity, two additional name/value pairs are included:
l table - the data record entity data table name (type of string)
l parentrecordid - the data record entity identifier of parent entity (type of number)
Examples:
{
"id": 12345, "table": "record", "datasetid": 34567, "fields":[
{
"name": "ID", "value": "CU00048376"
Page 32
}, {
"name": "Gender", "value": "M."
}, {
"name": "FirstName", "value": "Benjamin"
}, {
"name": "LastName", "value": "Verret"
}
]
}
{
"id": 45678, "table": "detail", "parentrecordid": 23456, "fields": [
{
"name": "ItemNumber", "value": "PSM002"
}, {
"name": "ItemDesc", "value": "PSM Production (unlimited)"
}, {
"name": "ItemUnitPrice", "value": "495.00"
}, {
"name": "ItemOrdered", "value": "2"
}, {
"name": "ItemTotal", "value": "990.00"
}
]
}
Page 33
{
"id": 23456, "table": "record", "datasetid": 12345, "fields": [
{
"name": "ID", "value": "CU00048376"
}, {
"name": "Date", "value": "2012-03-29T13:00Z"
}, {
"name": "DueDate", "value": "2012-04-28T14:00Z"
}, {
"name": "InvNumber", "value": "INV9441991"
}, {
"name": "Gender", "value": "M."
}, {
"name": "FirstName", "value": "Benjamin"
}, {
"name": "LastName", "value": "Verret"
} {
"name": "TotalOrdered", "value": "3"
}, {
"name": "InvSubTotal", "value": "1485.00"
}, {
"name": "InvTaxTotal",
Page 34
"value": "111.38"
}, {
"name": "InvTotal", "value": "1596.38"
} ], "records": [
{
"id": 45678, "table": "detail", "parentrecordid": 23456, "fields": [
] }, {
"id": 45679,
"table": "detail",
"parentrecordid": 23456,
"fields": [
{
"name": "ItemNumber",
"value": "PSM002" }, {
"name": "ItemDesc",
"value": "PSM Production (unlimited)" }, {
"name": "ItemUnitPrice",
"value": "495.00" }, {
"name": "ItemOrdered",
"value": "2" }, {
"name": "ItemTotal",
"value": "990.00" }
{
"name": "ItemNumber",
"value": "PSM005"
Page 35
}, {
"name": "ItemDesc",
"value": "Upgrade (Starter to Web)" }, {
"name": "ItemUnitPrice",
"value": "495.00" }, {
"name": "ItemOrdered",
"value": "1" } {
"name": "ItemTotal",
"value": "495.00" }
]
}
]
}
JSON Record Content Lists
Describes multiple lists of data field values (as name/value pairs), nested data records (if any), along with a number of additional properties for data record entities of a specific ID.
The structure consists of an array of JSON Record Content List structure objects.
Example:
[
{
"id": 45678, "table": "detail", "parentrecordid": 23456, "fields": [
{
"name": "ItemNumber", "value": "PSM002"
}, {
"name": "ItemDesc",
Page 36
}, {
}
"value": "PSM Production (unlimited)"
}, {
"name": "ItemUnitPrice", "value": "495.00"
}, {
"name": "ItemOrdered", "value": "2"
}, {
"name": "ItemTotal", "value": "990.00"
}
]
"id": 45679, "table": "detail", "parentrecordid": 23456, "fields": [
{
"name": "ItemNumber", "value": "PSM005"
}, {
"name": "ItemDesc", "value": "Upgrade (Starter to Web)"
}, {
"name": "ItemUnitPrice", "value": "495.00"
}, {
"name": "ItemOrdered", "value": "1"
} {
"name": "ItemTotal", "value": "495.00"
}
]
Page 37
]
JSON Record Content List (Fields Only)
Describes a list of data field values (as name/value pairs) for a data record, used to update an existing data record entity of a specific ID.
The structure consists of an object with the following name/value pairs:
l id - the data record entity identifier (type of number)
l fields - a list of data fields in the data record entity, consisting of an array of objects
each with the following name/value pairs:
l name - the name of the data field (type of string)
l value - the value of the data field (type of string)
Example:
{
"id": 12345, "fields": [
{
"name": "FirstName",
"value": "Benjamin" }, {
"name": "LastName",
"value": "Verret" }
]
}
JSON Record Content Lists (Fields Only)
Describes multiple lists of data field values (as name/value pairs) for a data record, used to update existing data record entities of a specific ID.
The structure consists of an array of JSON Record Content List (Fields Only) structure objects.
Example:
[
{
"id": 12345,
Page 38
"fields": [
{
"name": "FirstName",
"value": "Benjamin" }, {
"name": "LastName",
"value": "Verret" }
] }, {
"id": 23456,
"fields": [
{
"name": "FirstName",
"value": "Dianne" }, {
"name": "LastName",
"value": "Straka" }
]
}
]
JSON New Record List
Describes a list of new data records (and their data field values (as name/value pairs)) to be added as data record entities to either an existing data set or data record entity of a specific ID.
The structure consists of an object with the following name/value pairs:
l records - a list of the new data records to be added, consisting of an array of objects
each with the following name/value pairs:
l fields - a list of data fields for the data record, consisting of an array of objects
each with the following name/value pairs:
l name - the name of the data field (type of string)
l value - the value of the data field (type of string)
Page 39
Specific to the adding of data records to the record data table of an existing data set entity, an additional name/value pair is included:
l datasetid - the data set entity identifier of parent entity (type of number)
Specific to the adding of nested data records to a data table of an existing data record entity, two additional name/value pairs are included:
l recordid - the data record entity identifier of parent entity (type of number)
l table - the data record entity data table name (type of string)
Examples:
{
"datasetid": 12345, "records": [
{
"fields": [
{
"name": "ID",
"value": "CU00048376" }, {
"name": "Gender",
"value": "M." }, {
"name": "FirstName",
"value": "Benjamin" }, {
"name": "LastName",
"value": "Verret" }
] }, {
"fields":[
{
"name": "ID", "value": "CU01499303"
},
Page 40
{
"name": "Gender",
"value": "Miss" }, {
"name": "FirstName",
"value": "Dianne" }, {
"name": "LastName",
"value": "Straka" }
]
}
]
}
{
"recordid": 12345, "table": "detail", "records": [
{
"fields": [
{
"name": "ItemNumber",
"value": "PSM002" }, {
"name": "ItemDesc",
"value": "PSM Production (unlimited)" }, {
"name": "ItemUnitPrice",
"value": "495.00" }, {
"name": "ItemOrdered",
"value": "2" }, {
"name": "ItemTotal",
"value": "990.00" }
Page 41
] }, {
"fields": [
{
"name": "ItemNumber",
"value": "PSM005" }, {
"name": "ItemDesc",
"value": "Upgrade (Starter to Web)" }, {
"name": "ItemUnitPrice",
"value": "495.00" }, {
"name": "ItemOrdered",
"value": "1" }, {
"name": "ItemTotal",
"value": "495.00" }
]
}
]
}
JSON New Record Lists
Describes multiple lists of new data records (and their data field values (as name/value pairs)) to be added as data record entities to either existing data set or data record entities of a specific ID.
The structure consists of an array of JSON New Record List structure objects.
Example:
[
{
"datasetid": 12345, "records": [
Page 42
}, {
{
"fields": [
{
"name": "ID",
"value": "CU00048376" }, {
"name": "Gender",
"value": "M." }, {
"name": "FirstName",
"value": "Benjamin" }, {
"name": "LastName",
"value": "Verret" }
] }, {
"fields": [
{
"name": "ID",
"value": "CU01499303" }, {
"name": "Gender",
"value": "Miss" }, {
"name": "FirstName",
"value": "Dianne" }, {
"name": "LastName",
"value": "Straka" }
]
}
]
Page 43
"recordid": 12345, "table": "detail", "records": [
{
"fields": [
{
"name": "ItemNumber",
"value": "PSM002" }, {
"name": "ItemDesc",
"value": "PSM Production (unlimited)" }, {
"name": "ItemUnitPrice",
"value": "495.00" }, {
"name": "ItemOrdered",
"value": "2" }, {
"name": "ItemTotal",
"value": "990.00" }
] }, {
"fields": [
{
"name": "ItemNumber",
"value": "PSM005" }, {
"name": "ItemDesc",
"value": "Upgrade (Starter to Web)" }, {
"name": "ItemUnitPrice",
"value": "495.00" }, {
"name": "ItemOrdered",
Page 44
"value": "1" }, {
"name": "ItemTotal",
"value": "495.00" }
]
}
]
}
]
JSON Content Item Identifier List
Describes a list of content item/data record entity identifier pairs (as name/value pairs) for a specific content set entity.
The structure consists of an object with the following name/value pairs:
l identifiers - the data entity identifier pairs, consisting of an array of objects each with
the following name/value pairs:
Example:
{
"identifiers": [
]
}
l item - the content item entity identifier (type of number)
l record - the data record entity identifier (type of number)
{
"item": 12345,
"record": 54321 }, {
"item": 23456,
"record": 65432 }, {
"item": 34567,
"record": 76543 }
Page 45
JSON Data Record Identifier
Describes a single data record entity identifier for a specific content item entity.
The structure consists of an object with a single name/value pair:
l record - the data record entity identifier (type of number)
Example:
{
"record": 12345
}
JSON Identifier List (with Email Parameters)
Describes a list of identifiers for multiple data entities (specifically data record entities), along with additional parameters used specifically in an content creation operation for email.
The structure consists of an object with the following name/value pairs:
l identifiers - an array of data record entity identifiers (type of number)
l host - the network address or name of the SMTP mail server through which emails will be
sent (type of string)
l user - the user name to authenticate with (if using authentication) (type of string)
l password - the password to authenticate with (if using authentication) (type of string)
l sender - the email address to be shown as the sender in the email output (type of string)
l useAuth - parameter to specify if authentication is to be used with the mail server (type of
boolean)
l useStartTLS - parameter to specify if Transport Layer Security (TLS) is to be used when
sending emails (type of boolean)
l useSender - parameter to specify if the sender address will be used as the receiver
address for all emails in the output (type of boolean)
l attachWebPage - parameter to specify if a single HTML web page (with embedded
resources) of the Web context should also be created and attached to the email output (type of boolean)
l attachPdfPage - parameter to specify if a PDF of the Print context should also be created
and attached to the email output (type of boolean)
Page 46
Example:
{
"identifiers": [
12345, 23456
], "host": "mail.company.com", "user": "johns", "password": "password5", "sender": "john.smith@company.com", "useAuth": true, "useStartTLS": false, "useSender": true, "attachWebPage": true, "attachPdfPage": true
}
JSON HTML Parameters List
Describes a list of parameters used specifically in the creation of web content.
The structure consists of an object with the following name/value pairs:
l section - the section within the Web context of the template to use (type of string)
l inline - the inline mode to be used in the creation of content (value of either NONE, CSS or
ALL) (type of string)
Example:
{
"section": "Section 1", "inline": "ALL"
}
JSON Job Set Structure
Describes a job set entity structure including the arrangement of job, job segment, document set, document and content item entities (including the specification of content item identifiers). Used specifically in a job creation operation.
The structure consists of an object with the following name/value pairs:
Page 47
l jobs - the job entities within the job set, consisting of an array of objects each with the
following name/value pairs:
l segments - the job segment entities within a job, consisting of an array of objects
each with the following name/value pairs:
l documentsets - the document set entities within a job segment, consisting of
an array of objects each with the following name/value pairs:
l documents - the document entities within a document set, consisting of
an array of objects each with the following name/value pairs:
l documentpages - the document pages within a document,
consisting of an array of objects each with a single name/value pair:
l contentitem - the identifier of the content item entity within a
document page (type of number)
Example:
{
"jobs": [
{
"segments": [
{
"documentsets": [
{
"documents": [
{
"documentpages": [
{
"contentitem": 111 }, {
"contentitem": 222 }
] }, {
"documentpages": [
{
"contentitem": 456
}
]
Page 48
}
]
}
]
}
] }, {
"segments": [
{
"documentsets": [
{
"documents": [
{
"documentpages": [
{
"contentitem": 789
}
]
}
]
}
]
}
] }
]
}
JSON All-In-One Configuration
Describes the configuration of an All-In-One operation as a series of name/value pairs representing the processes (data mapping, content creation, job creation and output creation) to be completed as part of the overall operation. The value in each pair contains the parameters for that specific process.
The structure is variable, allowing for configurations containing one or more specific processes (as name/value pairs), as long as the processes specified result in a logical sequence or workflow. Used specifically with the All-In-One service.
The structure consists of an object with the following name/value pairs:
Page 49
l datamining - data mapping configuration parameters, consisting of an object with the
following name/value pairs:
l identifier - the managed file identifier (type of number) or named identifier (type of
string) of the data file
l config - the managed file identifier (type of number) or named identifier (type of
string) of the data mapping configuration
l contentcreation - content creation configuration parameters, consisting of an object with
the following name/value pairs:
l identifiers - an array of data record entity identifiers (type of number) (optional for
configurations containing data mapping parameters)
l config - the managed file identifier (type of number) or named identifier (type of
string) of the input design template
l jobcreation - job creation configuration parameters, consisting of an object with the
following name/value pairs:
l config - the managed file identifier (type of number) or named identifier (type of
string) of the job creation preset (optional)
l outputcreation - output creation configuration parameters, consisting of an object with
the following name/value pairs:
l identifiers - an array of job entity identifiers (type of number) (optional for
configurations containing content creation parameters)
l config - the managed file identifier (type of number) or named identifier (type of
string) of the output creation preset
l createOnly - flag to specify if output is to be only created in the server and not sent
to it's final destination (type of boolean)
Specific to the use of all processes (and their parameters), an additional name/value pair can be added to restrict the print output to a set of specific records in the input data:
l printRange - print range configuration parameters, consisting of an object with a single
name/value pair:
l printRange - the range of records in the data file to output (type of string).
Page 50
Examples:
{
"datamining": {
}, "contentcreation": {
}, "jobcreation": {
}, "outputcreation": {
}, "printRange": {
}
}
"identifier": "Promo-EN-1000.csv", "config": "Promo-EN.OL-datamapper"
"config": "letter-ol.OL-template"
"config": "4567"
"config": "5678", "createOnly": true
"printRange": "1-3, 6, 10"
{
"contentcreation": {
"identifiers": [
34567,
34568 ], "config": "letter-ol.OL-template"
}, "jobcreation": {}, "outputcreation": {
"config": 5678, "createOnly": false
}
}
Page 51
{
"datamining": {
"identifier": 12345, "config": 23456
}
}
JSON Page Details Summary
Describes a summary of the page details for a specific content set entity.
Page details include the number of pages per media type, along with media specific properties including the name, size, width and height. Used specifically with the Content Set Entity service.
The structure consists of an object with the following name/value pairs:
l pages - a list of the total pages per media, consisting of an array of objects each with the
following name/value pairs:
Example:
{
"pages": [
l count - the number of pages using the specific media (type of number)
l media - media specific properties, consisting of an object with the following
name/value pairs:
l name - the name of the media (type of string)
l size - the size of the media (type of string)
l width - the width of the media (type of string)
l height - the height of the media (type of string)
{
"count": 200,
"media": {
"name": "Plain A4 Paper", "size": "A4", "width": "210mm", "height": "297mm"
} },
Page 52
{
"count": 108,
"media": {
"name": "Plain Letter Paper", "size": "Letter", "width": "8.5in", "height": "11in"
} }
]
}
JSON Page Details List
Describes a list of the the page details and identifiers for each content item contained within a specific content set entity.
Page details include the number of pages per media type, along with media specific properties including the name, size, width and height. Used specifically with the Content Set Entity service.
The structure consists of an array of objects each with the following name/value pairs:
l id - the content item entity identifier (type of number)
l pages - a list of the pages per media, consisting of an array of objects each with the
following name/value pairs:
l count - the number of pages using the specific media (type of number)
l media - media specific properties, consisting of an object with the following
name/value pairs:
l name - the name of the media (type of string)
l size - the size of the media (type of string)
l width - the width of the media (type of string)
l height - the height of the media (type of string)
Example:
[
{
"id": 12345, "pages": [
Page 53
}, {
}
{
"count": 2, "media": {
"name": "Plain A4 Paper", "size": "A4", "width": "210mm", "height": "297mm"
} }, {
"count": 1,
"media": {
"name": "Plain Letter Paper", "size": "Letter", "width": "8.5in", "height": "11in"
} }
]
"id": 23456, "pages": [
{
"count": 2,
"media": {
"name": "Plain A4 Paper", "size": "A4", "width": "210mm", "height": "297mm"
} }, {
"count": 2,
"media": {
"name": "Plain Letter Paper", "size": "Letter", "width": "8.5in", "height": "11in"
} }
]
Page 54
]
JSON Data Mapping Validation Result
Describes the result of a request to validate a data mapping operation, including a list of any errors that occurred (used specifically with the Data Mapping service).
The structure consists of an object with the following name/value pairs:
l result - the overall result of the data mapping operation (value of either ERROR or OK) (type
of string)
l recordcount - the number of data records in the data file (type of number)
l errors - a list of errors that occurred during the mapping process, consisting of an array
of objects each with the following name/value pairs:
l record - the number of the erroneous record in the data file (type of number)
l reason - the mapping error/reason for this particular record (type of string)
Example:
{
"result": "ERROR", "recordcount": 105, "errors": [
{
"record": 20, "reason": "Document: 20 Unparseable date: \"\""
}, {
"record": 45, "reason": "Document: 45 Unparseable date: \"\""
}, {
"record": 97, "reason": "Document: 97 Unparseable date: \"\""
}
]
}
JSON Search Parameters
Describes a set of complex search criteria broken into search, sorting and grouping rules. This structure is used specifically with the Entity service as input to the Find Data Entity resource
Page 55
method.
Note
Certain search, sorting or grouping rules can only be used with specific data entity types.
See the Finding Specific Data Entities in the Server page of the Working Examples section for further detail on the available rule combinations.
Search rules can be added to a search rules list and can be used to match data entities based on specific criteria. This rules list also specifies an operator which determines whether all rules or only one rule in the list is required to be matched.
Search rules can be based on data record values, data entity properties, finishing options, document length, template names and whether an entity's identifier is contained or not contained in a list of identifiers.
Rule groups can also be added to this search rules list, and each rule group contains it's own sub list of search rules and its' own rule operator. Rule groups can also be added to the search rule list of an existing rule group which allows for the construction of complex search criteria.
Sorting rules can be also added to a sort rules list and (depending on the data entity type) can be used to sort data entity entries in the search results by either data record values or data entity properties.
Every sort rule added will expand the value of the sort key of each entry listed in the resulting JSON Identifier Lists (with Sort Key) structure.
Grouping rules can be also added to a group rules list and (depending on the data entity type) can be used to group data entity entries in the search results by either data record values or data entity properties.
Every group rule added can expand the number of sub lists contained in the resulting JSON Identifier Lists (with Sort Key) structure.
The structure consists of an object with the following name/value pairs:
Page 56
l entity - the data entity type (value of either DATARECORDS, DATASETS, CONTENTITEMS,
CONTENTSETS, JOBS or JOBSETS) (type of string)
l search - search criteria, consisting of an object with the following name/value pairs:
l operator - the search rule operator for the base list of rules (value of either AND or OR)
(type of string)
l rules - a base list of search rules, consisting of an array of objects each with a
specific rule sub-structure depending on the type of rule
l sort - a list of sorting rules, consisting of an array of objects each with the following
name/value pairs:
l name - the name of the data value field or data entity property to sort by (type of
string)
l order - the order that matches to this rule are sorted by (value of either ASC or DESC)
(type of string)
l type - the type of sorting rule (value of either value or property) (type of string)
Sorting rule objects with a type value of value also contain the following additional name/value pair:
l numeric - whether the data value field is a of a numeric type (type of boolean)
l group - a list of grouping rules, consisting of an array of objects each with the following
name/value pairs:
l name - the name of the data value field or data entity property to group by (type of
string)
l order - the order that matches to this rule are grouped by (value of either ASC or
DESC) (type of string)
l type - the type of grouping rule (value of either value or property) (type of string)
Grouping rule objects with a type value of value also contain the following additional name/value pair:
l numeric - whether the data value field is a of a numeric type (type of boolean)
The search rule sub-structure consists of an object with rule specific groupings of name/value pairs as follows.
Page 57
Search rule objects with a type value of value contain the following name/value pairs:
l type - the type of search rule (value of value) (type of string)
l name - the name of the data field (type of string)
l value - the value of the data field (type of string, or array of strings when
condition is value of either IN or NOT IN)
l condition - the comparison condition (value of either EQUAL, NOTEQUAL, LESS, GREAT,
LESSEQUAL, GREATEQUAL, STARTSWITH, ENDSWITH, CONTAINS, LIKE, NLIKE, IN or NOT IN)
(type of string)
Search rule objects with a type value of property contain the following name/value pairs:
l type - the type of search rule (value of property) (type of string)
l name - the name of the data entity property (type of string)
l value - the value of the data entity property (type of string, or array of strings
when condition is value of eitherIN or NOT IN)
l condition - the comparison condition (value of either EQUAL, NOTEQUAL, LESS, GREAT,
LESSEQUAL, GREATEQUAL, STARTSWITH, ENDSWITH, CONTAINS, LIKE, NLIKE, IN or NOT IN)
(type of string)
Search rule objects with a type value of either IN or NOT IN contain the following name/value pairs:
l type - the type of search rule (value of either IN or NOT IN) (type of string)
l identifiers - an array of data entity identifiers (type of number)
Search rule objects with a type value of finishing contain only one of the following sub- groups of name/value pairs:
l type - the type of search rule (value of finishing) (type of string)
l medianame - the name of the media used (type of string)
l condition - the comparison condition (value of either EQUAL or NOTEQUAL) (type of
string)
l type - the type of search rule (value of finishing) (type of string)
l duplex - whether the page sheet is duplex (type of boolean)
Page 58
l type - the type of search rule (value of finishing) (type of string)
l frontcoating - the front coating of the media used (value of either UNSPECIFIED,
NONE, COATED, GLOSSY, HIGH_GLOSS, INKJET, MATTE, SATIN or SEMI_GLOSS) (type of string)
l backcoating - the back coating of the media used (value of either UNSPECIFIED, NONE,
COATED, GLOSSY, HIGH_GLOSS, INKJET, MATTE, SATIN or SEMI_GLOSS) (type of string)
l condition - the comparison condition (value of either EQUAL or NOTEQUAL) (type of
string)
l type - the type of search rule (value of finishing) (type of string)
l bindingstyle - the binding style of the media used (value of either NONE, DEFAULT,
STAPLED, GLUED, STITCHED, ADHESIVE, SPINETAPING, RING, WIREDCOMB, PLASTICCOMB or COIL) (type of string)
l bindingedge - the binding edge of the media used (value of either DEFAULT, LEFT,
RIGHT, TOP or BOTTOM) (type of string)
l bindingtype - the binding type of the media used (value of either DEFAULT, SADDLE,
SIDE or CORNER) (type of string)
l bindingangle - the binding angle of the media used (value of either DEFAULT,
VERTICAL, HORIZONTAL or ANGLE) (type of string)
l condition - the comparison condition (value of either EQUAL or NOTEQUAL) (type of
string)
Search rule objects with a type value of doclength contain the following name/value pairs:
l type - the type of search rule (value of doclength) (type of string)
l value - the number of pages in document (type of number)
l condition - the comparison condition (value of either EQUAL, NOTEQUAL, LESS, GREAT,
LESSEQUAL or GREATEQUAL) (type of string)
Search rule objects with a type value of templatename contain the following name/value pairs:
Page 59
l type - the type of search rule (value of templatename) (type of string)
l template - the name of the design template used for document (type of string)
l condition - the comparison condition (value of either EQUAL or NOTEQUAL) (type of
Search rule group objects contain the following name/value pairs:
l operator - the search rule operator for sub-list of rules in rule group (value of either
l rules - a sub-list of search rules, consisting of an array of objects each with a
Examples:
{
"entity": "CONTENTITEMS", "search": {
string)
AND or OR) (type of string)
certain rule sub-structure depending on the type of rule
"operator": "AND", "rules": [
{
"type": "value",
"value": "FR",
"name": "Country" }, {
"operator": "OR",
"rules": [
{
"type": "finishing", "frontcoating": "HIGH_GLOSS", "backcoating": "HIGH_GLOSS",
"condition": "EQUAL" }, {
"type": "finishing",
"bindingstyle": "DEFAULT",
"bindingedge": "DEFAULT",
"bindingtype": "DEFAULT",
"bindingangle": "VERTICAL",
"condition": "EQUAL" }
Page 60
]
}
] }, "sort": [
{
"name": "LastName", "order": "ASC", "numeric": false, "type": "value"
} ], "group": [
{
"name": "Gender", "order": "ASC", "numeric": false, "type": "value"
} ]
}
JSON Identifier Lists (with Sort Key)
Describes a set of search results as a list of one or more sub lists, each containing a list of data entity identifiers along with a sorting key value for each entry.
Used specifically with the Entity service as the output from the Find Data Entity resource method, this structure groups the data entity identifiers returned into sortable sub lists of entries.
The order of the entries (including the sort key produced), and the number of sub lists returned depends on the sorting and grouping rules specified in the JSON Search Parameters structure previously submitted as input to the Find Data Entity resource method.
The structure consists of an array of object arrays, with each object containing the following name/value pairs:
l identifier - the data entity identifier (type of number)
l sortkey - the data entity sort key (type of string)
Page 61
Example:
Note
See the Workflow Operations page of the Technical Overview section for further detail on
[
[
]
]
{
"identifier": 1604,
"sortkey": "NB|Vilma" }, {
"identifier": 1282,
"sortkey": "NF|Lenard" }, {
"identifier": 1443,
"sortkey": "NF|Lenard" }, {
"identifier": 1000,
"sortkey": "SK|Cathleen" }, {
"identifier": 1121,
"sortkey": "SK|Rachel" }
JSON Operations List
Describes a list of workflow operations (specifically asynchronous workflow operations) actively running on the server, each containing various properties including the type of workflow operation, it's starting time and it's current progress value.
This structure is used specifically with workflow based services including the Data Mapping, Content Creation, Content Creation (Email), Job Creation, Output Creation and All-In-One services.
Page 62
workflow operations.
The structure consists of an array of objects each with the following name/value pairs:
l id - the workflow operation identifier (type of string)
l type - the workflow operation type (value of either DataMiningRestService,
ContentCreationRestService, EmailExportRestService, JobCreationRestService, OutputCreationRestService or PrintRestService) (type of string)
l subTask - the workflow operation sub-task name (type of string)
l startTime - the workflow operation starting time stamp (value of milliseconds since
midnight of January 1, 1970 UTC) (type of number)
l progress - the workflow operation progress percentage (value in range of 0 to 100) (type of
number)
Workflow operation objects with a type value of either ContentCreationRestService or
PrintRestService (usually with a subTask value of Content Creation) can also contain the
following name/value pair:
l template - the name of the design template being used for content creation (type of
string)
Example:
[
{
}, {
"id": "1281ef9d-7a74-4448-9adf-175a0166f32e", "type": "DataMiningRestService", "subTask": "Extracting data 25%", "startTime": 1482367446908, "progress": 100
"id": "b72e2da5-39ea-48de-85cf-a2be321a71bd", "type": "ContentCreationRestService", "subTask": "Content Creation", "startTime": 1482367988332, "progress": 12,
Page 63
"template": "business-card-ol"
}, {
"id": "134f55a5-85f5-41d5-a0d3-e033eda45cb5", "type": "EmailExportRestService", "startTime": 1482368638197, "progress": 5
}, {
"id": "d52cf2b6-9ca7-44e6-b548-5b249dedf40d", "type": "JobCreationRestService", "subTask": "Job Creation", "startTime": 1482367723483, "progress": 77
}, {
"id": "02fa495b-ed56-47ef-ac49-e63df298b10e", "type": "OutputCreationRestService", "subTask": "Output Creation", "startTime": 1482367851340, "progress": 34
}, {
"id": "fb414be9-4ec5-463a-8429-93153db73783", "type": "PrintRestService", "subTask": "Content Creation", "startTime": 1482366891203, "progress": 65, "template": "letter-ol"
}
]
Page 64

Working Examples

This section provides a number of working examples that demonstrate the use of the various resources and methods available in the PlanetPress Connect REST API.
For help on getting started with the PlanetPress Connect REST API Cookbook and the working examples, see the Getting Started page.
l Server Security & Authentication
l Working with the File Store
l Working with the Entity Services
l Working with the Workflow Services
Page 65

Getting Started

This guide provides many working examples to help illustrate the correct use of a given API/method. To achieve this, the guide uses HTML5 & JavaScript/jQuery syntax, and thus, some basic experience and knowledge of these technologies is assumed.
HTML5: http://www.w3schools.com/html/
jQuery: https://jquery.com/
Help on installing and getting started with the working examples can be found on the
Requirements & Installation and Structure of the Working Examples pages.
Important notes on general use of the working examples can be found in the HTML Input
Placeholders & Multiple Value Fields and Display of Working Example Results pages.
If you have server security settings enabled on your PlanetPress Connect server then the Using
the Working Examples with Server Security page should be read also.
Page 66

Requirements & Installation

Warning
If using Internet Explorer, you may find issues when using the working examples with PlanetPress Connect's Server Security Settings set to enabled.
The working examples use HTML5 Local Storage to facilitate authentication and certain simplicity / ease-of-use (across browser tabs). Depending on how your Internet Explorer security settings are configured, you may experience issues if the security level of your zone is set too high.
Essentially, the security zone needs to have the security option Userdata persistence (under Miscellaneous) set to enabled. Without this option enabled, the working examples will not function correctly when using them with PlanetPress Connect's Server SecuritySettings set to enabled.
After running the Authenticate/Login to Server working example to re-authenticate, you should only need to refresh existing pages in order for the authentication credentials (token) to be picked up. In the case of Internet Explorer, you may need to restart the browser for the changes to be picked up.
If all else fails, disabling of the Sever Security Settings in the PlanetPress Connect Server Preferences should avoid issues with running the various examples on Internet Explorer.
It is recommended that you use a modern web-browser other than Internet Explorer when running the working examples.
Requirements
To use the PlanetPress Connect REST API Cookbook with Working Examples source you will require the following:
1. A working installation of PlanetPress Connect
2. Any modern web browser able to display HTML5
1
1
Any recent version of Mozilla Firefox, Google Chrome, or Opera with support for HTML5 should be suitable for running the working examples contained in this guide. Versions of Internet Explorer 10+ may also be suitable in some cases.
Page 67
Installation
Note
You can access the PlanetPress Connect REST API Cookbook with Working Examples source locally by entering the following URL in your web browser:
http://localhost:9340/serverengine/html/cookbook/index.html
The working examples source comes pre-installed with PlanetPress Connect and can be located in a sub-directory of your existing PlanetPress Connect installation directory.
To locate the source on Windows:
1. Open up Windows Explorer and navigate to the PlanetPress Connect installation directory followed by its plugins sub-directory.
2. Find the com.objectiflune.serverengine.rest.gui directory and navigate to its www sub- directory
3. You should now be exploring the following or similar location:
C:\Program Files\Objectif Lune\OL Connect\plugins\com.objectiflune.serverengine.rest.gui_1.X.XXXXX.XXXXXXXX­XXXX\www
4. The www directory contains a cookbook sub-directory, which contains all of the working examples source. You should find a directory structure matching that shown on the
Structure of the Working Examples page.
Page 68

Structure of the Working Examples

The working examples are designed to be complete examples, and will generally consists of one HTML5 file paired with a JavaScript/jQuery module which can be found in the examples/<service-name>/js/ sub-directory.
Where any frequent or boilerplate functionality is commonly used across the examples, this has been moved to the common/js/common.js JavaScript/jQuery module.
The examples make use of this module for functionality such as setting up the example, and displaying output results.
Page 69
The examples also make use of some simple CSS classes as defined in common/css/styles.css and HTML snippets for the presentation of output results.
Page 70

HTML Input Placeholders & Multiple Value Fields

In the working examples, HTML input elements make use of the placeholder attribute to help provide some indication of the type and format of the value expected to be entered / specified.
The following table lists examples of placeholders commonly used in the working examples:
HTML Expected Type Example Values
Single ID Value
Single ID or Name Value (File Name)
One or More ID Values (comma separated)
Name (Text) Value
Numerical Range
l 2341
l 3
l 2341
l Promo-EN-1000.csv
l 2341, 2342
l 3456
l ol-admin
l Section 2
l 1, 2, 3
Email Address Value
Server Hostname Value
l 1-5
l 1, 2, 3-5, 6
l john.smith@contoso.com
l mailbox.contoso.com
Page 71

Display of Working Example Results

Note
In some examples the same result will displayed in both plain and JSON structure based formats. This is to assist ease-of-use when working with outputs of one example that will be needed as an input to another example.
When a working example is run, any results will be displayed in a Results area that will appear below the working example existing HTML interface.
For example:
Page 72
A working example can be run multiple times, and each time the results will be appended below allowing you to compare the output of varying inputs. The Clear button can be selected at any time to clear all existing results.
Page 73

Using the Working Examples with Server Security

Note
Once re-authenticated, you shouldn’t see this dialog box again for as long as your session remains active.
If you have the Server Security Settings set to enabled in your PlanetPress Connect Server Preferences, then you may see the following dialog box initially display when working with the examples:
In the event of this dialog box, just follow the instructions and either refresh the page or re­authenticate by running the Authenticating with the Server (Authenticate/Login to Server) working example covered under the Server Security & Authentication section.
Page 74

Server Security & Authentication

Note
A complete listing including these examples can be found in the index.html file located at the root of the working example source code which contains links to all working examples.
This section consists of a number of pages covering various useful working examples:
1. Authenticating with the Server
See the Authentication Service page of the REST API Reference section for further detail.
Page 75

Authenticating with the Server

Problem
Your PlanetPress Connect Server is configured to use server security, and you want to authenticate with the server to obtain the correct access to make future requests.
Solution
The solution is to create a request using the following URI and method type to authenticate with the server via the Authentication REST service:
Authenticate/Login to Server
Example
HTML5
auth-login-server.html
<!DOCTYPE html> <html>
<head>
<meta charset="utf-8"> <title>Authenticate/Login to Server Example</title> <script src="../../common/lib/js/jquery-
1.11.3.min.js"></script> <script src="../../common/js/common.js"></script> <script src="js/auth-login-server.js"></script> <link rel="stylesheet" href="../../common/css/styles.css">
</head> <body>
<h2>Authentication Service - Authenticate/Login to Server
Example</h2>
<form>
<fieldset>
<legend>Inputs</legend> <div>
<label for="username">Username:</label> <input id="username" type="text"
placeholder="Username" required>
</div>
/rest/serverengine/authentication/login
POST
Page 76
<div>
<label for="password">Password:</label> <input id="password" type="password"
placeholder="Password" required>
</div> <div>
<input id="submit" type="submit"
value="Submit">
</div>
</fieldset>
</form>
</body>
</html>
JavaScript/jQuery
auth-login-server.js
/* Authentication Service - Authenticate/Login to Server Example */ (function ($, c) {
"use strict"; $(document).ready(function () {
c.setupExample();
$("form").on("submit", function (event) {
password);
event.preventDefault();
var username = $("#username").val(),
password = $("#password").val();
$.ajax({
type: "POST", url: "/rest/serverengine/authentication/login", beforeSend: function (xhr) {
var base64 = "Basic " + btoa(username + ":" +
xhr.setRequestHeader("Authorization", base64);
}
})
.done(function (response) {
Page 77
c.displayStatus("User '" + username + "'
Authenticated Successfully");
c.displayResult("Authorization Token",
response);
c.setSessionToken(response); }) .fail(function (xhr, status, error) {
c.displayStatus("Authentication of User '" +
username + "' failed!");
c.displayResult("Status", xhr.status + " " +
error);
c.displayResult("Error", xhr.responseText);
c.setSessionToken(null); });
});
});
}(jQuery, Common));
Screenshot & Output
Usage
To run the example simply enter your credentials into the Username and Password fields and select the Submit button.
Page 78
Once selected, a request containing the credentials will be sent to the server and the result will be returned and displayed to the Results area.
If authentication was successful then the response will contain an Authorization Token that can be then used in the submission of future requests to the server.
Discussion
Firstly, we define an event handler that will run in response to the submission of the HTML form via the selection of the Submit button.
When our event hander function is called, we then obtain the value of the Username and Password fields. We define two variables, username to hold the value of the Username text field and password to hold the value of the Password text field.
Next we construct an jQuery AJAX request which will be sent to the Authentication REST service:
Method type and url arguments are specified as shown earlier.
We specify a beforeSend argument containing a function that will add an additional
Authorization header to the request to facilitate Basic HTTP Authentication. The value of
the Authorization request header is a Base64 digest of the username and password variables.
When the request is successful or done, a request response is received and the content of that response is passed as the function parameter response. In the example, we then display the value of this parameter which should be the new Authorization Token which can then be used in the submission of future requests to the server.
This is achieved by placing the value of the Authorization Token in the auth_token request header of a future request. In the example the common function setSessionToken is used to facilitate this function for all future working example requests.
Further Reading
See the Authentication Service page of the REST API Reference section for further detail.
Page 79

Working with the File Store

Note
A complete listing including these examples can be found in the index.html file located at the root of the working example source code which contains links to all working examples.
This section consists of a number of pages covering various useful working examples:
1. Uploading a Data File to the File Store
2. Uploading a Data Mapping Configuration to the File Store
3. Uploading a Design Template to the File Store
4. Uploading a Job Creation Preset to the File Store
5. Uploading an Output Creation Preset to the File Store
See the File Store Service page of the REST API Reference section for further detail.
Page 80

Uploading a Data File to the File Store

Problem
You want to upload a data file to the File Store so that it can be used as part of a Data Mapping operation.
Solution
The solution is to create a request using the following URI and method type to submit the data file to the server via the File Store REST service:
Upload Data File
Example
HTML5
fs-datafile-upload.html
<!DOCTYPE html> <html>
<head>
<meta charset="utf-8"> <title>Upload Data File Example</title> <script src="../../common/lib/js/jquery-
1.11.3.min.js"></script> <script src="../../common/js/common.js"></script> <script src="js/fs-datafile-upload.js"></script> <link rel="stylesheet" href="../../common/css/styles.css">
</head> <body>
<h2>File Store Service - Upload Data File Example</h2> <form>
<fieldset>
<legend>Inputs</legend> <div>
<label for="datafile">Data File:</label> <input id="datafile" type="file" required>
</div> </fieldset> <fieldset>
/rest/serverengine/filestore/DataFile
POST
Page 81
</fieldset> <fieldset>
value="Submit">
</fieldset>
</form>
</body>
</html>
<legend>Options</legend>
<div>
<label for="named">Named:</label>
<input id="named" type="checkbox"> </div> <div>
<label for="persistent">Persistent:</label>
<input id="persistent" type="checkbox"> </div>
<legend>Actions</legend> <div>
<input id="submit" type="submit"
</div>
JavaScript/jQuery
fs-datafile-upload.js
/* File Store Service - Upload Data File Example */ (function ($, c) {
"use strict"; $(document).ready(function () {
c.setupExample();
$("form").on("submit", function (event) {
event.preventDefault(); if (!c.checkSessionValid()) { return; }
var file = $("#datafile")[0].files[0],
named = $("#named").is(":checked"), persistent = $("#persistent").is(":checked");
var settings = {
Page 82
type: "POST", url:
"/rest/serverengine/filestore/DataFile?persistent=" + persistent,
data: file, processData: false, contentType: "application/octet-stream"
}; if (named) { settings.url += "&filename=" + file.name;
}
$.ajax(settings)
.done(function (response) {
c.displayStatus("Request Successful");
c.displayInfo("Data File '" + file.name + "'
Uploaded Successfully");
c.displayResult("Managed File ID", response); }) .fail(c.displayDefaultFailure);
});
});
}(jQuery, Common));
Page 83
Screenshot & Output
Note
Only one Managed File in the file store can be associated with a specific name. If two files are uploaded to the file store under the same name, then only the most recently
Usage
To run the example simply select the Browse button and then select the data file you wish to upload using the selection dialog box.
Next you can specify the following options to use with the upload of the data file:
l Named - allow this file to be identified/referenced by its Managed File Name as well as its
Managed File ID
l Persistent - make this file persistent in the file store
Page 84
uploaded file will be associated with (or can be referenced using) that name.
Once the file and options are selected, simply select the Submit button to upload the file to the server's file store and the resulting Managed File ID for the data file will be returned and displayed to the Results area.
Discussion
Firstly, we define an event handler that will run in response to the submission of the HTML form via the selection of the Submit button.
When our event handler function is called, we then obtain a reference to the local data file previously selected. This is achieved by getting the first value of the files attribute of the HTML element with the ID of datafile (in this case a file type input HTML element) and storing it in a variable file.
We also obtain boolean values for the Named and Persistent options (both checkbox type input HTML elements) and store them in the named and persistent variables respectively.
Next we construct a jQuery AJAX request which will be sent to the File Store REST service. We use an object called settings to hold the arguments for our request:
Method type and url arguments are specified as shown earlier, with the addition of a
persistent query parameter which specifies whether the file is to be persistent in the file
store when uploaded.
We specify the variable file as the data or contents of the request, a contentType argument of "application/octet-stream", and because we are sending file data we also specify a
processData argument set to false.
If the Named option is checked in our form, and the named variable is true, then a filename query parameter is also added which contains the file name of the file selected (file.name).
Lastly, the settings object is passed as an argument to the jQuery AJAX function ajax and the request is executed.
Page 85
When the request is successful or done, a request response is received and the content of that response is passed as the function parameter response. In the example, we then display the value of this parameter which should be the new Managed File ID of the data file in the file store.
Further Reading
See the File Store Service page of the REST API Reference section for further detail.
Page 86

Uploading a Data Mapping Configuration to the File Store

Problem
You want to upload a data mapping configuration to the File Store so that it can be used as part of a Data Mapping operation.
Solution
The solution is to create a request using the following URI and method type to submit the data mapping configuration to the server via the File Store REST service:
Upload Data Mapping Configuration
Example
HTML5
fs-datamapper-upload.html
<!DOCTYPE html> <html>
<head>
<meta charset="utf-8"> <title>Upload Data Mapping Configuration Example</title> <script src="../../common/lib/js/jquery-
1.11.3.min.js"></script> <script src="../../common/js/common.js"></script> <script src="js/fs-datamapper-upload.js"></script> <link rel="stylesheet" href="../../common/css/styles.css">
</head> <body>
<h2>File Store Service - Upload Data Mapping Configuration
Example</h2>
<form>
<fieldset>
<legend>Inputs</legend> <div>
<label for="datamapper">Data Mapping
Configuration:</label>
<input id="datamapper" type="file" required>
/rest/serverengine/filestore/DataMiningConfig
POST
Page 87
</fieldset> <fieldset>
</fieldset> <fieldset>
value="Submit">
</fieldset>
</form>
</body>
</html>
</div>
<legend>Options</legend> <div>
<label for="named">Named:</label>
<input id="named" type="checkbox"> </div> <div>
<label for="persistent">Persistent:</label>
<input id="persistent" type="checkbox"> </div>
<legend>Actions</legend> <div>
<input id="submit" type="submit"
</div>
JavaScript/jQuery
fs-datamapper-upload.js
/* File Store Service - Upload Data Mapping Configuration Example */ (function ($, c) {
"use strict"; $(document).ready(function () {
c.setupExample();
$("form").on("submit", function (event) {
event.preventDefault(); if (!c.checkSessionValid()) { return; }
var file = $("#datamapper")[0].files[0],
Page 88
named = $("#named").is(":checked"), persistent = $("#persistent").is(":checked");
var settings = {
type: "POST", url:
"/rest/serverengine/filestore/DataMiningConfig?persistent=" + persistent,
data: file, processData: false, contentType: "application/octet-stream"
}; if (named) { settings.url += "&filename=" + file.name;
}
$.ajax(settings)
.done(function (response) {
c.displayStatus("Request Successful");
c.displayInfo("Data Mapping Configuration '" +
file.name + "' Uploaded Successfully");
c.displayResult("Managed File ID", response); }) .fail(c.displayDefaultFailure);
});
});
}(jQuery, Common));
Page 89
Screenshot & Output
Note
Only one Managed File in the file store can be associated with a specific name. If two
Usage
To run the example simply select the Browse button and then select the data mapping configuration you wish to upload using the selection dialog box.
Next you can specify the following options to use with the upload of the data mapping configuration:
l Named - allow this configuration to be identified/referenced by its Managed File Name as
well as its Managed File ID
l Persistent - make this configuration persistent in the file store
Page 90
files are uploaded to the file store under the same name, then only the most recently uploaded file will be associated with (or can be referenced using) that name.
Once the configuration and options are selected, simply select the Submit button to upload the configuration to the server's file store and the resulting Managed File ID for the data mapping configuration will be returned and displayed to the Results area.
Discussion
Firstly, we define an event handler that will run in response to the submission of the HTML form via the selection of the Submit button.
When our event handler function is called, we then obtain a reference to the local data mapping configuration previously selected. This is achieved by getting the first value of the files attribute of the HTML element with the ID of datamapper (in this case a file type input HTML element) and storing it in a variable file.
We also obtain boolean values for the Named and Persistent options (both checkbox type input HTML elements) and store them in the named and persistent variables respectively.
Next we construct a jQuery AJAX request which will be sent to the File Store REST service. We use an object called settings to hold the arguments for our request:
Method type and url arguments are specified as shown earlier, with the addition of a
persistent query parameter which specifies whether the configuration is to be persistent in
the file store when uploaded.
We specify the variable file as the data or contents of the request, a contentType argument of "application/octet-stream", and because we are sending file data we also specify a
processData argument set to false.
If the Named option is checked in our form, and the named variable is true, then a filename query parameter is also added which contains the file name of the configuration selected (file.name).
Page 91
Lastly, the settings object is passed as an argument to the jQuery AJAX function ajax and the request is executed.
When the request is successful or done, a request response is received and the content of that response is passed as the function parameter response. In the example, we then display the value of this parameter which should be the new Managed File ID of the data mapping configuration in the file store.
Further Reading
See the File Store Service page of the REST API Reference section for further detail.
Page 92

Uploading a Design Template to the File Store

Problem
You want to upload a design template to the File Store so that it can be used as part of a Content Creation operation.
Solution
The solution is to create a request using the following URI and method type to submit the design template to the server via the File Store REST service:
Upload Design Template
Example
HTML5
fs-designtemplate-upload.html
<!DOCTYPE html> <html>
<head>
<meta charset="utf-8"> <title>Upload Design Template Example</title> <script src="../../common/lib/js/jquery-
1.11.3.min.js"></script> <script src="../../common/js/common.js"></script> <script src="js/fs-designtemplate-upload.js"></script> <link rel="stylesheet" href="../../common/css/styles.css">
</head> <body>
<h2>File Store Service - Upload Design Template
Example</h2>
<form>
<fieldset>
<legend>Inputs</legend> <div>
<label for="designtemplate">Design
Template:</label>
<input id="designtemplate" type="file"
required>
/rest/serverengine/filestore/template
POST
Page 93
</fieldset> <fieldset>
</fieldset> <fieldset>
value="Submit">
</fieldset>
</form>
</body>
</html>
</div>
<legend>Options</legend> <div>
<label for="named">Named:</label>
<input id="named" type="checkbox" checked> </div> <div>
<label for="persistent">Persistent:</label>
<input id="persistent" type="checkbox"> </div>
<legend>Actions</legend> <div>
<input id="submit" type="submit"
</div>
JavaScript/jQuery
fs-designtemplate-upload.js
/* File Store Service - Upload Design Template Example */ (function ($, c) {
"use strict"; $(document).ready(function () {
c.setupExample();
$("form").on("submit", function (event) {
event.preventDefault(); if (!c.checkSessionValid()) { return; }
var file = $("#designtemplate")[0].files[0],
named = $("#named").is(":checked"),
Page 94
persistent = $("#persistent").is(":checked");
var settings = {
type: "POST", url:
"/rest/serverengine/filestore/template?persistent=" + persistent,
data: file, processData: false, contentType: "application/zip"
}; if (named) { settings.url += "&filename=" + file.name;
}
$.ajax(settings)
.done(function (response) {
c.displayStatus("Request Successful");
c.displayInfo("Design Template '" + file.name +
"' Uploaded Successfully");
c.displayResult("Managed File ID", response); }) .fail(c.displayDefaultFailure);
});
});
}(jQuery, Common));
Page 95
Screenshot & Output
Note
Only one Managed File in the file store can be associated with a specific name. If two files are uploaded to the file store under the same name, then only the most recently
Usage
To run the example simply select the Browse button and then select the design template you wish to upload using the selection dialog box.
Next you can specify the following options to use with the upload of the design template:
l Named - allow this template to be identified/referenced by its Managed File Name as well
as its Managed File ID
l Persistent - make this template persistent in the file store
Page 96
uploaded file will be associated with (or can be referenced using) that name.
Once the template and options are selected, simply select the Submit button to upload the template to the server's file store and the resulting Managed File ID for the design template will be returned and displayed to the Results area.
Discussion
Firstly, we define an event handler that will run in response to the submission of the HTML form via the selection of the Submit button.
When our event handler function is called, we then obtain a reference to the local design template previously selected. This is achieved by getting the first value of the files attribute of the HTML element with the ID of designtemplate (in this case a file type input HTML element) and storing it in a variable file.
We also obtain boolean values for the Named and Persistent options (both checkbox type input HTML elements) and store them in the named and persistent variables respectively.
Next we construct a jQuery AJAX request which will be sent to the File Store REST service. We use an object called settings to hold the arguments for our request:
Method type and url arguments are specified as shown earlier, with the addition of a
persistent query parameter which specifies whether the template is to be persistent in the
file store when uploaded.
We specify the variable file as the data or contents of the request, a contentType argument of "application/zip", and because we are sending file data we also specify a processData argument set to false.
If the Named option is checked in our form, and the named variable is true, then a filename query parameter is also added which contains the file name of the template selected (file.name).
Lastly, the settings object is passed as an argument to the jQuery AJAX function ajax and the request is executed.
Page 97
When the request is successful or done, a request response is received and the content of that response is passed as the function parameter response. In the example, we then display the value of this parameter which should be the new Managed File ID of the design template in the file store.
Further Reading
See the File Store Service page of the REST API Reference section for further detail.
Page 98

Uploading a Job Creation Preset to the File Store

Problem
You want to upload a job creation preset to the File Store so that it can be used as part of a Job Creation operation.
Solution
The solution is to create a request using the following URI and method type to submit the job creation preset to the server via the File Store REST service:
Upload Job Creation Preset
Example
HTML5
fs-jcpreset-upload.html
<!DOCTYPE html> <html>
<head>
<meta charset="utf-8"> <title>Upload Job Creation Preset Example</title> <script src="../../common/lib/js/jquery-
1.11.3.min.js"></script> <script src="../../common/js/common.js"></script> <script src="js/fs-jcpreset-upload.js"></script> <link rel="stylesheet" href="../../common/css/styles.css">
</head> <body>
<h2>File Store Service - Upload Job Creation Preset
Example</h2>
<form>
<fieldset>
<legend>Inputs</legend> <div>
<label for="jcpreset">Job Creation
Preset:</label>
<input id="jcpreset" type="file" required>
/rest/serverengine/filestore/JobCreationConfig
POST
Page 99
</fieldset> <fieldset>
</fieldset> <fieldset>
value="Submit">
</fieldset>
</form>
</body>
</html>
</div>
<legend>Options</legend> <div>
<label for="named">Named:</label>
<input id="named" type="checkbox"> </div> <div>
<label for="persistent">Persistent:</label>
<input id="persistent" type="checkbox"> </div>
<legend>Actions</legend> <div>
<input id="submit" type="submit"
</div>
JavaScript/jQuery
fs-jcpreset-upload.js
/* File Store Service - Upload Job Creation Preset Example */ (function ($, c) {
"use strict"; $(document).ready(function () {
c.setupExample();
$("form").on("submit", function (event) {
event.preventDefault(); if (!c.checkSessionValid()) { return; }
var file = $("#jcpreset")[0].files[0],
named = $("#named").is(":checked"),
Page 100
Loading...