Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.0.0
x-stoplight:
id: z7fl2mixydrcb
info:
version: 5.4.0.2-oas3
title: Striim TQL Files REST API version 5.4.0.2
description: 'API for uploading, listing, and deleting TQL files in Striim.'
contact:
name: Striim support
url: 'https://go2.striim.com/request-support-striim'
email: support@striim.com
termsOfService: 'http://www.striim.com/eula/'
tags:
- name: tqlfiles
x-displayName: tqlfiles
- name: application
x-displayName: application
- name: template
x-displayName: template
- name: applicationMetadata
x-displayName: applicationMetadata
- name: checkpoint
x-displayName: checkpoint
- name: monitoring
x-displayName: monitoring
- name: tungsten
x-displayName: tungsten
paths:
/tqlfiles:
servers:
- url: 'http://localhost:9080/api/v2'
post:
description: |-
Uploads a TQL file to the user's home directory on the Striim cluster.
**Requirements:**
* File must have a `.tql` extension
* Maximum file size is 50MB
* File must not be empty
* Request must be `multipart/form-data`
**Example using curl:**
```
curl --request POST \
--url http://localhost:9080/api/v2/tqlfiles \
--header 'authorization: STRIIM-TOKEN 01eb29d5-75e9-9fb1-9b31-8cae4cf129d6' \
--form 'file=@/path/to/your-application.tql'
```
The file is uploaded to the authenticated user's upload directory and distributed across the cluster. If a file with the same name already exists, a numeric suffix is added (e.g., `myfile1.tql`, `myfile2.tql`).
**Response example:**
```json
[{"command":"uploadTQLFile","executionStatus":"success","output":"myfile.tql successfully uploaded","responseCode":200}]
```
summary: upload a TQL file
tags:
- tqlfiles
operationId: TqlFilesUpload
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
description: The TQL file to upload. Must have a `.tql` extension and be no larger than 50MB.
type: string
format: binary
required:
- file
required: true
responses:
'200':
description: File uploaded successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'400':
description: 'Bad request - invalid file format, empty file, file too large, or not multipart/form-data'
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'401':
description: Unauthorized - invalid or missing authorization token
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'500':
description: Internal server error - failed to create directory or distribute file
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: 0lgufdeuhnos0
get:
description: |-
Retrieves a list of all TQL files in the authenticated user's upload directory.
**Example using curl:**
```
curl --request GET \
--url http://localhost:9080/api/v2/tqlfiles \
--header 'authorization: STRIIM-TOKEN 01eb29d5-75e9-9fb1-9b31-8cae4cf129d6'
```
**Response example:**
```json
[{"command":"listUploads","executionStatus":"success","output":[{"name":"myfile.tql","size":1234,"lastModified":1704067200000}],"responseCode":200}]
```
summary: list uploaded TQL files
tags:
- tqlfiles
operationId: TqlFilesList
responses:
'200':
description: Success - returns list of files
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesListResponse'
'401':
description: 'Unauthorized - invalid or missing authorization token, or no permission to access location'
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'500':
description: Internal server error - failed to determine home directory
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: 7iphcxpjwx5hb
'/tqlfiles/{name}':
servers:
- url: 'http://localhost:9080/api/v2'
delete:
description: |-
Deletes the specified TQL file from the authenticated user's upload directory.
For **name**, specify the file name (e.g., `myfile.tql`).
**Example using curl:**
```
curl --request DELETE \
--url http://localhost:9080/api/v2/tqlfiles/myfile.tql \
--header 'authorization: STRIIM-TOKEN 01eb29d5-75e9-9fb1-9b31-8cae4cf129d6'
```
**Response example:**
```json
[{"command":"deleteUpload","executionStatus":"success","output":"myfile.tql successfully deleted","responseCode":200}]
```
summary: delete a TQL file
tags:
- tqlfiles
operationId: TqlFilesDelete
parameters:
- name: name
in: path
required: true
description: 'Name of the TQL file to delete (e.g., myfile.tql)'
schema:
type: string
responses:
'200':
description: File deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'400':
description: Bad request - file name is required
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'401':
description: 'Unauthorized - invalid or missing authorization token, or no permission to delete files'
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'404':
description: File not found
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
'500':
description: Internal server error - failed to delete file
content:
application/json:
schema:
$ref: '#/components/schemas/TqlFilesResponse'
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: 70tkrgxc6z7g2
/applications:
servers:
- url: 'http://localhost:8080/api/v2'
get:
description: |
Retrieves a list of all applications currently in the Striim cluster.
summary: list all applications
tags:
- application
operationId: ApplicationsGet
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: 4wfh9ssfsltq0
post:
description: "Creates an application based on the specified template, or template definition using template and property values specified in a JSON object. Get the template for the JSON object using `GET /applications/templates/{templateId}`.\n\nTo generate code, provide the template name, a name for the new application, and properties for the source and target on the **Body** tab. For example:\n```\n{\n \"templateId\": \"database-to-kafka-avro-initialload\",\n \"applicationName\": \"ns1.OracleReader_to_DatabaseWriter\",\n \"sourceParameters\": {\n \"Username\": \"myname\",\n \"Password\": \"mypassword\",\n\t\t\"Password_encrypted\": \"false\",\n \"ConnectionURL\": \"198.51.100.15:1521:orcl\",\n \"Tables\": \"MYSCHEMA.%\"},\n \"targetParameters\": {\n \"version\": \"0.10.0\",\n \"Mode\": \"Sync\",\n \"Topic\": \"MyTopic\",\n \"brokerAddress\": \"198.51.100.55:9092\"\n },\n \"parserParameters\": {},\n \"formatterParameters\": {\"schemaFileName\"\": \"MySchema.avro\"}\n}\n```\nNote that all properties and values must be in double quotes. In this example, parserParameters is blank since OracleReader does not use a parser.\n\nTo use a cleartext password, `Password_encrypted` must be added to the template . Alternatively, enter the cleartext password in a source in the Flow Designer, export the application, and copy the encrypted password from the TQL file."
summary: create an application
tags:
- application
operationId: ApplicationsPost
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationParameters'
description: |-
A JSON object that specifies the template, namespace, application name, and source and target property values to be used to create the application. One of `templateId` **or** `templateDefinition` is required.
#Example JSON
````json
{
"templateId": "oracle-to-database-cdc",
"applicationName": "admin.InvoiceDataMigration",
"sourceParameters" :{
"Username":"miner",
"Password":"miner",
"ConnectionURL":"192.168.15.144:1521:XE",
"Tables":"TPCH.H_REGION;TPCH.H_NATION;TPCH.H_CUSTOMER",
"FetchSize":"10",
"StartSCN":"0",
"QueueSize": "40000",
"Compression": "true",
"SkipOpenTransactions": "false"
},
"targetParameters": {
"ConnectionURL":"jdbc:sqlserver://striimsqldb.database.windows.net:1433;database=sqldbonazure;user=rajesh@striimsqldb;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;",
"Username":"rajesh",
"Password":"strm123456@",
"BatchPolicy": "EventCount:0,Interval:0",
"CommitPolicy": "EventCount:1,Interval:1",
"Tables":"TPCH.H_NATION,dbo.nation;TPCH.H_REGION,dbo.region;TPCH.H_CUSTOMER,dbo.customer"
}
}
````
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: mr3jpezyq1zhk
'/applications/{appFqn}':
servers:
- url: 'http://localhost:8080/api/v2'
get:
description: |
Returns details for the specified application.
For **AppFqn**, specify `<namespace>.<application name>` (the fully qualified name), for example, `Samples.PosApp`.
summary: get application details
tags:
- application
operationId: ApplicationsByAppFqnGet
parameters:
- name: appFqn
in: path
required: true
description: Fully qualified name of the application
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: App not found
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: 0yyv0xkfbsq8l
delete:
description: |
Drops the specified application and all the components it contains (equivalent to `DROP <namespace>.<application name> CASCADE`).
For **AppFqn**, specify `<namespace>.<application name>` (the fully qualified name), for example, `Samples.PosApp`.
summary: drop an application
tags:
- application
operationId: ApplicationsByAppFqnDelete
parameters:
- name: appFqn
in: path
required: true
description: Fully qualified name of the app
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: App not found
content:
application/json:
schema: {}
'412':
description: Precondition Failed. App not in correct state to deploy
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: agjwc8af0363n
'/applications/{appFqn}/deployment':
servers:
- url: 'http://localhost:8080/api/v2'
post:
description: |-
Deploys the specified application. The AppDeploymentPlan parameter is used only when the app contains multiple flows.
For **AppFqn**, specify `<namespace>.<application name>` (the fully qualified name), for example, `Samples.PosApp`.
To generate code to deploy an application that contains no flows, such as Samples.PosApp, leave the **Body** blank:
`[]`
This is equivalent to `DEPLOY APPLICATION <namespace>.<application name> ON ANY IN default;`.
To specify other deployment options, you must create a flow within the application.
To deploy Samples.MultiLogApp, use the **Body**:
```
[{"flowName":"Samples.ApiFlow","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.CompanyApiFlow","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.ErrorHandling","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.ErrorsAndWarnings","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.HackerCheck","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.InfoFlow","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.LargeRTCheck","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.MonitorLogs","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.ProxyCheck","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.UserApiFlow","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.WarningHandling","deploymentGroupName":"default","deploymentType":"ANY"},
{"flowName":"Samples.ZeroContentCheck","deploymentGroupName":"default","deploymentType":"ANY"}]
```
If a flow is in the authentication user's namespace, you may omit the namespace. `ANY` is equivalent to `ON ONE`.
For more information, see [Managing deployment groups](https://docs.striim.com/en/managing-deployment-groups.html).
summary: deploy an application
tags:
- application
operationId: ApplicationsDeploymentByAppFqnPost
parameters:
- name: appFqn
in: path
required: true
description: Fully qualified name of the app
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentPlan'
description: 'As of the 3.9.0 release, the format has changed to object type. The earlier format of sub-flows-array is also supported, but may be deprecated in a future release.'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: App not found
content:
application/json:
schema: {}
'412':
description: Precondition Failed. App not in correct state to deploy
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: 0ge7xz8k7vpxu
delete:
description: |-
Undeploys the specified application.
For **AppFqn**, specify `<namespace>.<application name>` (the fully qualified name), for example, `Samples.PosApp`.
summary: undeploy an application
tags:
- application
operationId: ApplicationsDeploymentByAppFqnDelete
parameters:
- name: appFqn
in: path
required: true
description: Fully qualified name of the app
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: App not found
content:
application/json:
schema: {}
'412':
description: Precondition Failed. App not in correct state to deploy
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: cvddfh2dthlww
'/applications/{appFqn}/sprint':
servers:
- url: 'http://localhost:8080/api/v2'
post:
description: |-
Starts the specified deployed application.
For **AppFqn**, specify `<namespace>.<application name>` (the fully qualified name), for example, `Samples.PosApp`.
summary: start an application
tags:
- application
operationId: ApplicationsSprintByAppFqnPost
parameters:
- name: appFqn
in: path
required: true
description: Fully qualified name of the app
schema:
type: string
- name: resume
in: query
required: false
description: Set to `true` to resume a crashed application.
schema:
type: boolean
default: false
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: App not found
content:
application/json:
schema: {}
'412':
description: Precondition Failed. App not in correct state to deploy
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: 0jig2w0zicgfu
delete:
description: |-
Stops the specified running application.
For **AppFqn**, specify `<namespace>.<application name>` (the fully qualified name), for example, `Samples.PosApp`.
summary: stop an application
tags:
- application
operationId: ApplicationsSprintByAppFqnDelete
parameters:
- name: appFqn
in: path
required: true
description: Fully qualified name of the app
schema:
type: string
- name: quiesce
in: query
required: false
description: 'Set to true to quiesce the application, leave at false to stop normally'
schema:
type: boolean
default: false
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: Application not found
content:
application/json:
schema: {}
'412':
description: Precondition Failed. App not in correct state to deploy
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: nulhxub55ze6s
/applications/templates:
servers:
- url: 'http://localhost:8080/api/v2'
get:
description: |
Returns a list of all application templates currently in the Striim cluster. An application template specifies a list of source and target properties to be used when creating an application.
summary: list application templates
tags:
- template
operationId: ApplicationsTemplatesGet
responses:
'200':
description: Success
'403':
description: Forbidden
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: ye5ak2qwmqa7m
/applications/templates/definition:
servers:
- url: 'http://localhost:8080/api/v2'
post:
description: |-
Creates an application template for the specified source, parser (if required), target, and formatter (if required). For example:
```
curl --request POST \
--url http://localhost:9080/api/v2/applications/templates/definition \
--header 'authorization: STRIIM-TOKEN 01eac2da-9b8a-69a1-9895-9e21505bed40' \
--header 'content-type: application/json' \
--data '{"sourceAdapter":"OracleReader","targetAdapter":"BigQueryWriter"}'
```
will return a JSON template for an Oracle CDC source and a Google BigQuery target. After you fill in the property values, use the JSON as the body for`POST /applications` to create an application.
summary: create a template
tags:
- template
operationId: ApplicationsTemplatesTemplateDefinition
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateDefinition'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Template'
security:
- Authorization: []
x-stoplight:
id: l16hq20t5lh43
'/applications/templates/{templateId}':
servers:
- url: 'http://localhost:8080/api/v2'
get:
description: |
Returns the type, default value (if any), and other information for each property of the specified template. Use `GET /applications/templates` to get the `templateId` value.
summary: get an application template
tags:
- template
operationId: ApplicationsTemplatesByTemplateIdGet
parameters:
- name: templateId
in: path
required: true
description: unique name of the template
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Template'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: Template not found
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: yh5udt979qgf6
'/applications/applicationMetadata/olm/{oracleReaderName}':
servers:
- url: 'http://localhost:8080/api/v2'
get:
description: |
Retrieves file lineage for the specified OracleReader source.
For **oracleReaderName**, specify `<namespace>.<source name>` (the fully qualified name), for example, `ns1.OracleCDCSource`.
For more information, see [File lineage in Oracle](https://docs.striim.com/en/file-lineage-in-oracle.html).
The old endpoint `/applications/applicationMetadata/{oracleReaderName}` is also supported but may be removed in a future release.
summary: retrieve OracleReader file lineage
tags:
- applicationMetadata
operationId: ApplicationsApplicationMetadataByOracleReaderNameGet
parameters:
- name: oracleReaderName
in: path
required: true
description: Fully qualified component name
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/OracleLineageMetadataObject'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: Oracle Reader not found
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: uclt7eqleppls
'/applications/applicationMetadata/flm/{fileReaderName}':
servers:
- url: 'http://localhost:8080/api/v2'
get:
description: |
Retrieves file lineage data for the specified source or target. (For OracleReader sources, use `GET /applications/applicationMetadata/olm/{oracleReaderName}`).
For **fileReaderName**, specify `<namespace>.<source or target name>` (the fully qualified name), for example, `ns1.S3WriterTarget`.
Optionally, for **startTimeStamp** or **endTimeStamp**, specify a time in milliseconds, for example, `1580473268534`.
Optionally, for **status**, specify `CREATED`, `COMPLETED`, `PROCESSING`, or `CRASHED` to retrieve data only for files with that status.
For more information, see [File lineage in readers and writers](https://docs.striim.com/en/file-lineage-in-readers-and-writers.html).
summary: retrieve source or target file lineage
tags:
- applicationMetadata
operationId: ApplicationsApplicationMetadataByFileReaderNameGet
parameters:
- name: fileReaderName
in: path
required: true
description: Fully qualified component name
schema:
type: string
- name: startTimeStamp
in: query
required: false
description: A timestamp in milliseconds that specifies a start time
schema:
type: string
- name: endTimeStamp
in: query
required: false
description: A timestamp in milliseconds that specifies an end time
schema:
type: string
- name: status
in: query
required: false
description: status of the files to be queried
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/FileLineageMetadataObject'
'403':
description: Forbidden
content:
application/json:
schema: {}
'404':
description: File Reader not found
content:
application/json:
schema: {}
security:
- Authorization: []
x-unitTests: []
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
x-stoplight:
id: gibbkg4xl671m
'/applications/checkpoint/{applicationname}':
servers:
- url: 'http://localhost:8080/api/v2'
get:
description: |-
Returns restart position and current position of the specified application. For example, Samples.ApplicationName.
For **applicationName**, specify `<namespace>.<application name>` (the fully qualified name), for example, `Samples.PosApp`.
summary: retrieve checkpoint data
tags:
- checkpoint
operationId: ApplicationsApplicationCheckpointByApplicationNameGet
parameters:
- name: applicationname
in: path
required: true
description: Fully qualified application name
schema:
type: string
responses:
'200':
description: Success
'400':
description: Specified application name is not in fullly qualified format
content:
application/json:
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/striim/refs/heads/main/openapi/striim-tql-files-rest-api-5-4-0-2-openapi.yml