.. _processing_algs_input_output:

**************************************************
Input and output types for Processing Algorithms
**************************************************

Here is the list of input and output types that are supported in
Processing with their corresponding alg decorator constants,
their name in the modeler designer if exposed.


Input types
===========


.. list-table::
   :widths: 20 25 20 30
   :header-rows: 1
   :class: longtable

   * - Input name
     - Class
     - Alg constant
     - Description
   * - Annotation layer
     - :class:`QgsProcessingParameterAnnotationLayer <qgis.core.QgsProcessingParameterAnnotationLayer>`
     - ``alg.ANNOTATION_LAYER``
     - An annotation layer
   * - Authentication Configuration
     - :class:`QgsProcessingParameterAuthConfig <qgis.core.QgsProcessingParameterAuthConfig>`
     - ``alg.AUTH_CFG``
     - Allows users to select from available authentication configurations or
       create new authentication configurations
   * - Raster band
     - :class:`QgsProcessingParameterBand <qgis.core.QgsProcessingParameterBand>`
     - ``alg.BAND``
     - A band of a raster layer
   * - Boolean
     - :class:`QgsProcessingParameterBoolean <qgis.core.QgsProcessingParameterBoolean>`
     - ``alg.BOOL``
     - A boolean value
   * - Connection Name
     - :class:`QgsProcessingParameterProviderConnection <qgis.core.QgsProcessingParameterProviderConnection>`
     -
     - A selection from available registered connections for a particular data provider
   * - Color
     - :class:`QgsProcessingParameterColor <qgis.core.QgsProcessingParameterColor>`
     - ``alg.COLOR``
     - A color
   * - Coordinate Operation
     - :class:`QgsProcessingParameterCoordinateOperation <qgis.core.QgsProcessingParameterCoordinateOperation>`
     - ``alg.COORDINATE_OPERATION``
     - A coordinate operation (for CRS transformations)
   * - CRS
     - :class:`QgsProcessingParameterCrs <qgis.core.QgsProcessingParameterCrs>`
     - ``alg.CRS``
     - A Coordinate Reference System
   * - Database Schema
     - :class:`QgsProcessingParameterDatabaseSchema <qgis.core.QgsProcessingParameterDatabaseSchema>`
     - ``alg.DATABASE_SCHEMA``
     - A database schema
   * - Database Table
     - :class:`QgsProcessingParameterDatabaseTable <qgis.core.QgsProcessingParameterDatabaseTable>`
     - ``alg.DATABASE_TABLE``
     - A database table
   * - Datetime
     - :class:`QgsProcessingParameterDateTime <qgis.core.QgsProcessingParameterDateTime>`
     - ``alg.DATETIME``
     - A datetime (or a pure date or time)
   * - Distance
     - :class:`QgsProcessingParameterDistance <qgis.core.QgsProcessingParameterDistance>`
     - ``alg.DISTANCE``
     - A double numeric parameter for distance values
   * - DXF Layers
     - :class:`QgsProcessingParameterDxfLayers <qgis.core.QgsProcessingParameterDxfLayers>`
     -
     - A list of vector layers to export as DXF file
   * - Enum
     - :class:`QgsProcessingParameterEnum <qgis.core.QgsProcessingParameterEnum>`
     - ``alg.ENUM``
     - An enumeration, allowing for selection from a set of predefined values
   * - Expression
     - :class:`QgsProcessingParameterExpression <qgis.core.QgsProcessingParameterExpression>`
     - ``alg.EXPRESSION``
     - An expression
   * - Extent
     - :class:`QgsProcessingParameterExtent <qgis.core.QgsProcessingParameterExtent>`
     - ``alg.EXTENT``
     - A spatial extent defined by xmin, xmax, ymin, ymax
   * -
     - :class:`QgsProcessingParameterField <qgis.core.QgsProcessingParameterField>`
     - ``alg.FIELD``
     - A field in the attribute table of a vector layer
   * - Field Aggregates
     - :class:`QgsProcessingParameterAggregate <qgis.core.QgsProcessingParameterAggregate>`
     -
     - A parameter for “aggregate” configurations, which consist of a definition of desired output fields,
       types, and aggregate used to populate them
   * - Fields Mapper
     - :class:`QgsProcessingParameterFieldMapping <qgis.core.QgsProcessingParameterFieldMapping>`
     -
     - A parameter for “field mapping” configurations, which consist of a definition of desired output fields,
       types, and expressions used to populate them
   * - File/Folder
     - :class:`QgsProcessingParameterFile <qgis.core.QgsProcessingParameterFile>`
     - ``alg.FILE``
     - A filename of an existing file
   * -
     - :class:`QgsProcessingParameterFileDestination <qgis.core.QgsProcessingParameterFileDestination>`
     - ``alg.FILE_DEST``
     - A filename for a newly created output file
   * -
     - :class:`QgsProcessingParameterFolderDestination <qgis.core.QgsProcessingParameterFolderDestination>`
     - ``alg.FOLDER_DEST``
     - A folder (destination folder)
   * - Geometry
     - :class:`QgsProcessingParameterGeometry <qgis.core.QgsProcessingParameterGeometry>`
     - ``alg.GEOMETRY``
     - A geometry
   * -
     - :attr:`QgsProcessingParameterNumber.Integer <qgis.core.QgsProcessingParameterNumber.Integer>`
     - ``alg.INT``
     - An integer
   * - Print Layout
     - :class:`QgsProcessingParameterLayout <qgis.core.QgsProcessingParameterLayout>`
     - ``alg.LAYOUT``
     - A layout
   * - Print Layout Item
     - :class:`QgsProcessingParameterLayoutItem <qgis.core.QgsProcessingParameterLayoutItem>`
     - ``alg.LAYOUT_ITEM``
     - A layout item
   * - Map Layer
     - :class:`QgsProcessingParameterMapLayer <qgis.core.QgsProcessingParameterMapLayer>`
     - ``alg.MAPLAYER``
     - A map layer
   * - Map Theme
     - :class:`QgsProcessingParameterMapTheme <qgis.core.QgsProcessingParameterMapTheme>`
     - ``alg.MAP_THEME``
     - A project map theme
   * - Matrix
     - :class:`QgsProcessingParameterMatrix <qgis.core.QgsProcessingParameterMatrix>`
     - ``alg.MATRIX``
     - A matrix
   * - Mesh Dataset Groups
     - :class:`QgsProcessingParameterMeshDatasetGroups <qgis.core.QgsProcessingParameterMeshDatasetGroups>`
     -
     - Dataset groups of mesh layer
   * - Mesh Dataset Time
     - :class:`QgsProcessingParameterMeshDatasetTime <qgis.core.QgsProcessingParameterMeshDatasetTime>`
     - 
     - Dataset index from a mesh layer by time setting
   * - Mesh Layer
     - :class:`QgsProcessingParameterMeshLayer <qgis.core.QgsProcessingParameterMeshLayer>`
     - ``alg.MESH_LAYER``
     - A mesh layer
   * - Multiple Input
     - :class:`QgsProcessingParameterMultipleLayers <qgis.core.QgsProcessingParameterMultipleLayers>`
     - ``alg.MULTILAYER``
     - A set of layers
   * - Number
     - :attr:`QgsProcessingParameterNumber.Double <qgis.core.QgsProcessingParameterNumber.Double>`
     - ``alg.NUMBER``
     - A numerical value
   * - Point
     - :class:`QgsProcessingParameterPoint <qgis.core.QgsProcessingParameterPoint>`
     - ``alg.POINT``
     - A point
   * - Point Cloud Attribute
     - :class:`QgsProcessingParameterPointCloudAttribute <qgis.core.QgsProcessingParameterPointCloudAttribute>`
     -
     - An attribute from a point cloud layer
   * -
     - :class:`QgsProcessingParameterPointCloudDestination <qgis.core.QgsProcessingParameterPointCloudDestination>`
     - ``alg.POINTCLOUD_LAYER_DEST``
     - A point cloud layer destination parameter, for specifying the destination path
       for a point cloud layer created by the algorithm
   * - Point Cloud Layer
     - :class:`QgsProcessingParameterPointCloudLayer <qgis.core.QgsProcessingParameterPointCloudLayer>`
     - ``alg.POINTCLOUD_LAYER``
     - A point cloud layer
   * -
     - :class:`QgsProcessingParameterProviderConnection <qgis.core.QgsProcessingParameterProviderConnection>`
     - ``alg.PROVIDER_CONNECTION``
     - An available connection for a database provider
   * - Range
     - :class:`QgsProcessingParameterRange <qgis.core.QgsProcessingParameterRange>`
     - ``alg.RANGE``
     - A number range
   * - Raster Layer
     - :class:`QgsProcessingParameterRasterLayer <qgis.core.QgsProcessingParameterRasterLayer>`
     - ``alg.RASTER_LAYER``
     - A raster layer
   * -
     - :class:`QgsProcessingParameterRasterDestination <qgis.core.QgsProcessingParameterRasterDestination>`
     - ``alg.RASTER_LAYER_DEST``
     - A raster layer destination parameter, for specifying the destination path
       for a raster layer created by the algorithm
   * - Scale
     - :class:`QgsProcessingParameterScale <qgis.core.QgsProcessingParameterScale>`
     - ``alg.SCALE``
     - A map scale
   * -
     - :class:`QgsProcessingParameterFeatureSink <qgis.core.QgsProcessingParameterFeatureSink>`
     - ``alg.SINK``
     - A feature sink
   * - TIN Creation Layers
     - :class:`QgsProcessingParameterTinInputLayers <qgis.core.QgsProcessingParameterTinInputLayers>`
     -
     - Selection of multiple layers to create a TIN with vertices
       and/or break lines
   * - Vector Features
     - :class:`QgsProcessingParameterFeatureSource <qgis.core.QgsProcessingParameterFeatureSource>`
     - ``alg.SOURCE``
     - A feature source
   * - String
     - :class:`QgsProcessingParameterString <qgis.core.QgsProcessingParameterString>`
     - ``alg.STRING``
     - A text string
   * - Vector Layer
     - :class:`QgsProcessingParameterVectorLayer <qgis.core.QgsProcessingParameterVectorLayer>`
     - ``alg.VECTOR_LAYER``
     - A vector layer
   * -
     - :class:`QgsProcessingParameterVectorDestination <qgis.core.QgsProcessingParameterVectorDestination>`
     - ``alg.VECTOR_LAYER_DEST``
     - A vector layer destination parameter, for specifying the destination path
       for a vector layer created by the algorithm
   * - Vector Tile Writer Layers
     - :class:`QgsProcessingParameterVectorTileDestination <qgis.core.QgsProcessingParameterVectorTileDestination>`
     -
     - A vector tile layer destination parameter, for specifying the destination path
       for a vector tile layer created by the algorithm


Output types
============

.. list-table::
   :widths: 47 24 29
   :header-rows: 1
   :class: longtable

   * - Class
     - Alg constant
     - Description
   * - :class:`QgsProcessingOutputBoolean <qgis.core.QgsProcessingOutputBoolean>`
     - ``alg.BOOL``
     - A boolean value
   * - :class:`QgsProcessingOutputNumber <qgis.core.QgsProcessingOutputNumber>`
     - ``alg.DISTANCE``
     - A double numeric parameter for distance values
   * - :class:`QgsProcessingOutputFile <qgis.core.QgsProcessingOutputFile>`
     - ``alg.FILE``
     - A filename of an existing file
   * - :class:`QgsProcessingOutputFolder <qgis.core.QgsProcessingOutputFolder>`
     - ``alg.FOLDER``
     - A folder
   * - :class:`QgsProcessingOutputHtml <qgis.core.QgsProcessingOutputHtml>`
     - ``alg.HTML``
     - HTML
   * - :class:`QgsProcessingOutputNumber <qgis.core.QgsProcessingOutputNumber>`
     - ``alg.INT``
     - A integer
   * - :class:`QgsProcessingOutputLayerDefinition <qgis.core.QgsProcessingOutputLayerDefinition>`
     - ``alg.LAYERDEF``
     - A layer definition
   * - :class:`QgsProcessingOutputMapLayer <qgis.core.QgsProcessingOutputMapLayer>`
     - ``alg.MAPLAYER``
     - A map layer
   * - :class:`QgsProcessingOutputMultipleLayers <qgis.core.QgsProcessingOutputMultipleLayers>`
     - ``alg.MULTILAYER``
     - A set of layers
   * - :class:`QgsProcessingOutputNumber <qgis.core.QgsProcessingOutputNumber>`
     - ``alg.NUMBER``
     - A numerical value
   * - :class:`QgsProcessingOutputPointCloudLayer <qgis.core.QgsProcessingOutputPointCloudLayer>`
     - ``alg.POINTCLOUD_LAYER``
     - A point cloud layer
   * - :class:`QgsProcessingOutputRasterLayer <qgis.core.QgsProcessingOutputRasterLayer>`
     - ``alg.RASTER_LAYER``
     - A raster layer
   * - :class:`QgsProcessingOutputString <qgis.core.QgsProcessingOutputString>`
     - ``alg.STRING``
     - A text string
   * - :class:`QgsProcessingOutputVectorLayer <qgis.core.QgsProcessingOutputVectorLayer>`
     - ``alg.VECTOR_LAYER``
     - A vector layer
   * - :class:`QgsProcessingOutputVectorTileLayer <qgis.core.QgsProcessingOutputVectorTileLayer>`
     -
     - A vector tile layer