Pipeline Entity

 

The following are the attributes in the body of a pipeline service.
Attribute Type Updatable Comments
 id  UUID  no (Required for PUT, optional for POST)

For PUT the ID in body must valid ID and must match step on the URL.

For POST this is ignored.

 version int  no This is shown to the user for informational purposes only
 name  string  yes Unique among other pipeline. A Valid SQL Identifier
 description  string  yes
 labels  list<string>  yes Currently not searchable with RSQL
 disabled  boolean  yes
 members  list<ReferencedObj>  yes See ReferencedObj entity below. Currently not searchable. Refer to the table below for information about pipeline entity member attributes.
 createdInstant  datetime  no
 createdBy  string  no Username associated with session
 modifiedInstant  datetime no
 modifiedBy  string  no Username associated with session
continueOnError boolean yes Connect throws exceptions when a pipeline member fails during processing due to unanticipated system conditions. The boolean flags determine if the pipeline should continue or halt processing if one of its members fails. This is false by default and should probably be set to false in most circumstances.
onErrorObjectId UUID yes The UUID of the step or pipeline to use. optional unless corresponding type (see below) is provided. onErrorObject is invoked if an error is encountered during the invocation of a pipeline. You might want to send an email to your IT staff if a fatal error was thrown, for example.
onErrorObjectTypeString

string yes The type string corresponding to onErrorObjectId. Must be correct type and either “step” or “pipeline”. If you also provide onErrorObjectType then they must represent the same object type. optional IF onErrorObjectId is blank OR onErrorObjectType is provided.
onErrorObjectType int yes Alternative way to provide type for onErrorObjectId. Must be 2 (pipeline) or 3 (step). If you also provide onErrorObjectTypeString then they must represent the same object type. optional IF onErrorObjectId is blank OR onErrorObjectTypeString is provided.
finallyObjectId UUID yes The UUID of the step or pipeline. Finally will fire when a pipeline completes successfully. It will also fire if a pipeline member throws an error. In other words, Finally will run no matter what happens during pipeline execution.
finallyObjectTypeString string yes The type string corresponding to finallyObjectId. Must be correct type and either “step” or “pipeline”. If you also provide finallyObjectType then they must represent the same object type. optional IF finallyObjectId is blank OR finallyObjectType is provided.
finallyObjectType int yes Alternative way to provide type for finallyObjectId. Must be 2 (pipeline) or 3 (step). If you also provide finallyObjectTypeString then they must represent the same object type. optional IF finallyObjectId is blank OR finallyObjectTypeString is provided.

ReferencedObj (pipeline “member”) Entity

 

The following are the attributes in the body of a referenced object (i.e. member of pipeline).
Attribute Type Updatable Comments
 objectType  string  yes The referenced object’s type: “step” or “pipeline”
 objectId  UUID  yes The ID of a single referenced object.
 retries  int  yes The number of retries
 retryIntervalMinutes  int  yes Minutes to wait between retries
 onConditionFalseObjectType  string  yes “step” and “pipeline” are currently the only accepted values
 onConditionFalseObjectId  UUID  yes
 abortOnConditionFalse  boolean  yes Can be “true” or “false”. Default is false.
condition  string  yes The xCL expression that evaluates to an the condition

List of APIs

Note: We have tried to keep this list up to date. However, for the most up to date list, see the interactive docs: https://connect-i1.xactlycorp.com/connect/docs/swagger-ui.html

POST /connect/v1/pipelines
Create a Pipeline that can later be invoked. Pipelines are composed from other pipelines or steps. Returns the resulting Pipeline ID in the Location header.

Pipeline Creation Example Body

{
    "name": "p2",
    "members": [
        {
        "objectType" : "step",
        "objectId" : "402881f0581bea3501581bebc9ca005f"
        }
        ],
     "onErrorObjectId" : "5393d93f13704f7cadaa49482d5da4be",
     "onErrorObjectType" : 3,  // only values 2 (for pipeline type) or 3 (for step) are allowed
     "finallyObjectId" : "4015393d93f137aa49482be1581bebc9",
     "finallyObjectType": 3    // only values 2 (for pipeline type) or 3 (for step) are allowed
}


DELETE /connect/v1/pipelines/{id}
Delete a Pipeline from the repository.
GET /connect/v1/pipelines
Get a paginated list of all Pipeline definitions. You can provide a page number (default 0) and a page size (default 100, max 1000). Session ID must be valid and session must be active (not expired). A description of the pagination pattern and metadata can be found here: [LINK]
GET /connect/v1/pipelines/{id}
Get a single Pipeline definition. You have to provide a valid pipeline ID.
PUT /connect/v1/pipelines/{id}
Update a Pipeline definition.  You have to provide a valid pipeline definition ID in the URL and in the payload. The ID attribute can not be updated.
POST /connect/v1/pipelines/{id}/invocation
Invoke (run) a Pipeline.  Invoke all the members associated with a Pipeline. This is an asynchronous call. The resulting invocation resource location is returned in the Location header. Invocations can be parameterized through posting a body. To see a full list of available Invocation parameters see Invocation Parameters.

 

Searching Pipelines

Pipeline service supports the same RSQL type search as audits. However, while RSQL supports searching embedded objects, it does not currently support searching embedded lists that appear inside another object. As such, even though all other attributes of a pipeline are searchable, the members and are currently not searchable, however, you can search for existence of a label in the list of labels if you treat the whole list like a string as shown in the table below.

Description Example
Search for any pipeline that has at least one label in it’s labels array that contains the substring “someLabel”. /connect/v1/pipelines?ql=labels==*someLabel*