Skip to content

DarktableDevelopRecipe

Endpoints · All schemas

FieldRequiredDescription
contrastNonumber
cropNoobject
curveNoarray
exposureEVNonumber
flipHorizontalNoboolean
flipVerticalNoboolean
highlightsNonumber
lensCorrectionNoUse native embedded metadata or Lensfun; refuse absent calibration
masksNoarray
noiseThresholdNoNative pre-demosaic wavelet noise threshold
rendererYesstring
rotationNoAdditional clockwise rotation after camera orientation
saturationNonumber
sensorCanvasNoUnrotated, uncropped, uncorrected canvas for selecting sensor-space masks
shadowsNonumber
sharpenNoobject
straightenNonumber
versionYesinteger
whiteBalanceNoMultipliers of native camera white-balance coefficients, not Kelvin estimates

Complete definition

required lists fields that must be present. nullable allows a null value; it does not make the field optional. Response enums retain exact wire values for compatibility.

Field definitions: AssetDevelopMaskKind

{
  "additionalProperties": false,
  "properties": {
    "contrast": {
      "format": "double",
      "maximum": 1.99,
      "minimum": 0.01,
      "type": "number"
    },
    "crop": {
      "additionalProperties": false,
      "properties": {
        "h": {
          "description": "Crop height as a fraction of the frame",
          "format": "double",
          "maximum": 1,
          "minimum": 0.05,
          "type": "number"
        },
        "w": {
          "description": "Crop width as a fraction of the frame",
          "format": "double",
          "maximum": 1,
          "minimum": 0.05,
          "type": "number"
        },
        "x": {
          "description": "Left edge of the crop as a fraction of the oriented frame width",
          "format": "double",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "y": {
          "description": "Top edge of the crop as a fraction of the oriented frame height",
          "format": "double",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        }
      },
      "required": [
        "x",
        "y",
        "w",
        "h"
      ],
      "type": "object"
    },
    "curve": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "x": {
            "description": "Input",
            "format": "double",
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "y": {
            "description": "Output",
            "format": "double",
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "x",
          "y"
        ],
        "type": "object"
      },
      "maxItems": 20,
      "minItems": 2,
      "type": "array"
    },
    "exposureEV": {
      "default": 0,
      "format": "double",
      "maximum": 18,
      "minimum": -18,
      "type": "number"
    },
    "flipHorizontal": {
      "type": "boolean"
    },
    "flipVertical": {
      "type": "boolean"
    },
    "highlights": {
      "format": "double",
      "maximum": 100,
      "minimum": -100,
      "type": "number"
    },
    "lensCorrection": {
      "description": "Use native embedded metadata or Lensfun; refuse absent calibration",
      "type": "boolean"
    },
    "masks": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "adjustments": {
            "additionalProperties": false,
            "properties": {
              "contrast": {
                "format": "double",
                "maximum": 1.99,
                "minimum": 0.01,
                "type": "number"
              },
              "curve": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "x": {
                      "description": "Input",
                      "format": "double",
                      "maximum": 1,
                      "minimum": 0,
                      "type": "number"
                    },
                    "y": {
                      "description": "Output",
                      "format": "double",
                      "maximum": 1,
                      "minimum": 0,
                      "type": "number"
                    }
                  },
                  "required": [
                    "x",
                    "y"
                  ],
                  "type": "object"
                },
                "maxItems": 20,
                "minItems": 2,
                "type": "array"
              },
              "exposureEV": {
                "default": 0,
                "format": "double",
                "maximum": 18,
                "minimum": -18,
                "type": "number"
              },
              "highlights": {
                "format": "double",
                "maximum": 100,
                "minimum": -100,
                "type": "number"
              },
              "saturation": {
                "format": "double",
                "maximum": 2,
                "minimum": 0,
                "type": "number"
              },
              "shadows": {
                "format": "double",
                "maximum": 100,
                "minimum": -100,
                "type": "number"
              }
            },
            "type": "object"
          },
          "amount": {
            "default": 100,
            "description": "How much of the adjustment is applied, as a percentage",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "artifact": {
            "description": "Subject, sky and background masks: the stored greyscale mask bitmap, covering the whole original image",
            "nullable": true,
            "pattern": "^[0-9a-f]{64}$",
            "type": "string"
          },
          "coordinates": {
            "enum": [
              "sensor-active"
            ],
            "type": "string"
          },
          "enabled": {
            "default": true,
            "description": "A disabled mask is kept but not rendered",
            "type": "boolean"
          },
          "endX": {
            "default": 0.5,
            "description": "Where a linear mask has faded out, across the frame",
            "format": "double",
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "endY": {
            "default": 1,
            "description": "Where a linear mask has faded out, down the frame",
            "format": "double",
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "feather": {
            "default": 50,
            "description": "Softness of a radial edge as a percentage of the radius, or of a brush stroke as one of its radius",
            "maximum": 100,
            "minimum": 0,
            "type": "integer"
          },
          "id": {
            "description": "Client-chosen identifier, unique within the recipe",
            "maxLength": 40,
            "minLength": 1,
            "type": "string"
          },
          "invert": {
            "default": false,
            "description": "Apply the adjustment outside the shape instead of inside",
            "type": "boolean"
          },
          "kind": {
            "$ref": "#/components/schemas/AssetDevelopMaskKind"
          },
          "name": {
            "default": null,
            "description": "Optional name shown in the editor",
            "maxLength": 60,
            "minLength": 1,
            "nullable": true,
            "type": "string"
          },
          "radiusX": {
            "default": 0.25,
            "description": "Horizontal radius of a radial mask as a fraction of the frame width",
            "format": "double",
            "maximum": 1,
            "minimum": 0.01,
            "type": "number"
          },
          "radiusY": {
            "default": 0.25,
            "description": "Vertical radius of a radial mask as a fraction of the frame height",
            "format": "double",
            "maximum": 1,
            "minimum": 0.01,
            "type": "number"
          },
          "strokes": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "erase": {
                  "default": false,
                  "description": "Erase from the mask instead of painting it (brush masks only)",
                  "type": "boolean"
                },
                "points": {
                  "items": {
                    "description": "A point as [x, y] fractions of the original image (before rotation, flips and crop)",
                    "items": {
                      "format": "double",
                      "maximum": 1,
                      "minimum": 0,
                      "type": "number"
                    },
                    "type": "array"
                  },
                  "maxItems": 512,
                  "minItems": 1,
                  "type": "array"
                },
                "radius": {
                  "description": "Stroke radius as a fraction of the original image's shorter side",
                  "format": "double",
                  "maximum": 0.5,
                  "minimum": 0.001,
                  "type": "number"
                }
              },
              "required": [
                "points",
                "radius"
              ],
              "type": "object"
            },
            "maxItems": 64,
            "type": "array"
          },
          "x": {
            "description": "Centre (radial) or start (linear) across the oriented frame; any value for brush and bitmap masks",
            "format": "double",
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "y": {
            "description": "Centre (radial) or start (linear) down the oriented frame; any value for brush and bitmap masks",
            "format": "double",
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "id",
          "kind",
          "x",
          "y",
          "coordinates",
          "adjustments"
        ],
        "type": "object"
      },
      "maxItems": 8,
      "type": "array"
    },
    "noiseThreshold": {
      "description": "Native pre-demosaic wavelet noise threshold",
      "format": "double",
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    "renderer": {
      "enum": [
        "darktable/5.6.1"
      ],
      "type": "string"
    },
    "rotation": {
      "anyOf": [
        {
          "type": "integer",
          "format": "int32",
          "enum": [
            0
          ]
        },
        {
          "type": "integer",
          "format": "int32",
          "enum": [
            90
          ]
        },
        {
          "type": "integer",
          "format": "int32",
          "enum": [
            180
          ]
        },
        {
          "type": "integer",
          "format": "int32",
          "enum": [
            270
          ]
        }
      ],
      "description": "Additional clockwise rotation after camera orientation"
    },
    "saturation": {
      "format": "double",
      "maximum": 2,
      "minimum": 0,
      "type": "number"
    },
    "sensorCanvas": {
      "description": "Unrotated, uncropped, uncorrected canvas for selecting sensor-space masks",
      "type": "boolean"
    },
    "shadows": {
      "format": "double",
      "maximum": 100,
      "minimum": -100,
      "type": "number"
    },
    "sharpen": {
      "additionalProperties": false,
      "properties": {
        "amount": {
          "format": "double",
          "maximum": 2,
          "minimum": 0,
          "type": "number"
        },
        "radius": {
          "format": "double",
          "maximum": 99,
          "minimum": 0,
          "type": "number"
        },
        "threshold": {
          "format": "double",
          "maximum": 100,
          "minimum": 0,
          "type": "number"
        }
      },
      "required": [
        "radius",
        "amount",
        "threshold"
      ],
      "type": "object"
    },
    "straighten": {
      "format": "double",
      "maximum": 45,
      "minimum": -45,
      "type": "number"
    },
    "version": {
      "enum": [
        2
      ],
      "format": "int32",
      "type": "integer"
    },
    "whiteBalance": {
      "additionalProperties": false,
      "description": "Multipliers of native camera white-balance coefficients, not Kelvin estimates",
      "properties": {
        "blue": {
          "format": "double",
          "maximum": 8,
          "minimum": 0.1,
          "type": "number"
        },
        "green": {
          "format": "double",
          "maximum": 8,
          "minimum": 0.1,
          "type": "number"
        },
        "red": {
          "format": "double",
          "maximum": 8,
          "minimum": 0.1,
          "type": "number"
        }
      },
      "required": [
        "red",
        "green",
        "blue"
      ],
      "type": "object"
    }
  },
  "required": [
    "renderer",
    "version"
  ],
  "type": "object"
}