Joule
  • Welcome to Joule's Docs
  • Why Joule?
    • Joule capabilities
  • What is Joule?
    • Key features
    • The tech stack
  • Use case enablement
    • Use case building framework
  • Concepts
    • Core concepts
    • Low code development
    • Unified execution engine
    • Batch and stream processing
    • Continuous metrics
    • Key Joule data types
      • StreamEvent object
      • Contextual data
      • GeoNode
  • Tutorials
    • Getting started
    • Build your first use case
    • Stream sliding window quote analytics
    • Advanced tutorials
      • Custom missing value processor
      • Stateless Bollinger band analytics
      • IoT device control
  • FAQ
  • Glossary
  • Components
    • Pipelines
      • Use case anatomy
      • Data priming
        • Types of import
      • Processing unit
      • Group by
      • Emit computed events
      • Telemetry auditing
    • Processors
      • Common attributes
      • Filters
        • By type
        • By expression
        • Send on delta
        • Remove attributes
        • Drop all events
      • Enrichment
        • Key concepts
          • Anatomy of enrichment DSL
          • Banking example
        • Metrics
        • Dynamic contextual data
          • Caching architecture
        • Static contextual data
      • Transformation
        • Field Tokeniser
        • Obfuscation
          • Encryption
          • Masking
          • Bucketing
          • Redaction
      • Triggers
        • Change Data Capture
        • Business rules
      • Stream join
        • Inner stream joins
        • Outer stream joins
        • Join attributes & policy
      • Event tap
        • Anatomy of a Tap
        • SQL Queries
    • Analytics
      • Analytic tools
        • User defined analytics
          • Streaming analytics example
          • User defined analytics
          • User defined scripts
          • User defined functions
            • Average function library
        • Window analytics
          • Tumbling window
          • Sliding window
          • Aggregate functions
        • Analytic functions
          • Stateful
            • Exponential moving average
            • Rolling Sum
          • Stateless
            • Normalisation
              • Absolute max
              • Min max
              • Standardisation
              • Mean
              • Log
              • Z-Score
            • Scaling
              • Unit scale
              • Robust Scale
            • Statistics
              • Statistic summaries
              • Weighted moving average
              • Simple moving average
              • Count
            • General
              • Euclidean
        • Advanced analytics
          • Geospatial
            • Entity geo tracker
            • Geofence occupancy trigger
            • Geo search
            • IP address resolver
            • Reverse geocoding
            • Spatial Index
          • HyperLogLog
          • Distinct counter
      • ML inferencing
        • Feature engineering
          • Scripting
          • Scaling
          • Transform
        • Online predictive analytics
        • Model audit
        • Model management
      • Metrics engine
        • Create metrics
        • Apply metrics
        • Manage metrics
        • Priming metrics
    • Contextual data
      • Architecture
      • Configuration
      • MinIO S3
      • Apache Geode
    • Connectors
      • Sources
        • Kafka
          • Ingestion
        • RabbitMQ
          • Further RabbitMQ configurations
        • MQTT
          • Topic wildcards
          • Session management
          • Last Will and Testament
        • Rest endpoints
        • MinIO S3
        • File watcher
      • Sinks
        • Kafka
        • RabbitMQ
          • Further configurations
        • MQTT
          • Persistent messaging
          • Last Will and Testament
        • SQL databases
        • InfluxDB
        • MongoDB
        • Geode
        • WebSocket endpoint
        • MinIO S3
        • File transport
        • Slack
        • Email
      • Serialisers
        • Serialisation
          • Custom transform example
          • Formatters
        • Deserialisers
          • Custom parsing example
    • Observability
      • Enabling JMX for Joule
      • Meters
      • Metrics API
  • DEVELOPER GUIDES
    • Setting up developer environment
      • Environment setup
      • Build and deploy
      • Install Joule
        • Install Docker demo environment
        • Install with Docker
        • Install from source
        • Install Joule examples
    • Joulectl CLI
    • API Endpoints
      • Mangement API
        • Use case
        • Pipelines
        • Data connectors
        • Contextual data
      • Data access API
        • Query
        • Upload
        • WebSocket
      • SQL support
    • Builder SDK
      • Connector API
        • Sources
          • StreamEventParser API
        • Sinks
          • CustomTransformer API
      • Processor API
      • Analytics API
        • Create custom metrics
        • Define analytics
        • Windows API
        • SQL queries
      • Transformation API
        • Obfuscation API
        • FieldTokenizer API
      • File processing
      • Data types
        • StreamEvent
        • ReferenceDataObject
        • GeoNode
    • System configuration
      • System properties
  • Deployment strategies
    • Deployment Overview
    • Single Node
    • Cluster
    • GuardianDB
    • Packaging
      • Containers
      • Bare metal
  • Product updates
    • Public Roadmap
    • Release Notes
      • v1.2.0 Join Streams with stateful analytics
      • v1.1.0 Streaming analytics enhancements
      • v1.0.4 Predictive stream processing
      • v1.0.3 Contextual SQL based metrics
    • Change history
Powered by GitBook
On this page
  • Overview
  • Examples & DSL attributes
  • Attributes schema
  • Supported file types
  • Stream configuration guide
  • Example stream based configuration
  • Core attributes schema
  • Joule properties DSL

Was this helpful?

  1. Components
  2. Connectors
  3. Sources

Rest endpoints

RESTful consumer endpoints designed to facilitate seamless integration

PreviousLast Will and TestamentNextMinIO S3

Last updated 6 months ago

Was this helpful?

Overview

This page outlines Joule's RESTful consumer endpoints, which enable flexible integration for rapid use case development and validation. Joule supports two endpoint types: file-based and stream-based.

File-based POST endpoint Is optimised for handling large files, which are directed to a specified download directory and then moved to a processed directory after ingestion, with support for multiple file formats (i.e., PARQUET, JSON). This bridges the gap of batch to stream processing.

Stream-based POST endpoint Allows developers to chain Joule processes similarly to micro-services, supporting complex workflows and real-time data processing. Events are passed as StreamEvent objects through the POST body or an events parameter, enabling streamlined data flow between Joule processes.

Client library:

Examples & DSL attributes

This example configures a REST File Consumer to consume PARQUET files from the nasdaq_quotes_file source.

The files are downloaded from the quotes topic and saved in the nasdaq/downloads directory. After the files are fully received via the file-based POST endpoint, they are processed efficiently.

Once processed, the files are moved to a local processed directory, with a timestamp marking their completion.

restFileConsumer:
  name: nasdaq_quotes_file
  topic: quotes
  file format: PARQUET
  download dir: nasdaq/dowloads

Attributes schema

Attribute
Description
Data Type
Required

topic

User defined topic to be used as the final endpoint component

String

file format

Expected file format to process. Defined as a enumeration, see below for supported file types

Enum Default: PARQUET

download dir

User defined target directory for files received

String Default: See below

Supported file types

  • PARQUET

  • ARROW_IPC

  • ORC

  • CSV

  • JSON

Stream configuration guide

The stream-based POST endpoint allows developers to link Joule processes together, similar to microservices, enabling the creation of complex workflows.

This endpoint requires a StreamEvent object or an array of these events.

Example stream based configuration

Events can be sent either through:

  1. The events parameter, which includes specific event details in the request or

  2. Within the POST body, where the event information is contained in the HTTP POST request body.

restEventConsumer:
  name: nasdaq_quotes_stream
  topic: quotes

Core attributes schema

Currently only the Joule StreamEvent is supported

Attribute
Description
Data Type
Required

topic

User defined topic to be used as the final endpoint component

String

Joule properties DSL

This table outlines configurable properties in Joule for managing file uploads with the REST API, especially useful for handling large files.

These settings allow fine-tuning of file handling capabilities, helping to manage memory use and ensure smooth processing of large file uploads.

Attribute
Description
Data Type

joule.rest.downloadPath

Directory to write files that exceed the in-memory limit. Default: ./downloads

String

joule.rest.maxFileSize

The maximum individual file size allowed In GB.

Default: 2 GB

Integer

joule.rest.InMemoryFileSize

The maximum file size to handle in memory in MB. Default: 100 MB

Integer

joule.rest.totalRequestSize

The maximum size of the entire multipart request in GB. Default: 5 GB

Integer

io.javalin:javalin:5.6.3