What is MIME type "application/cwl+json"?

A MIME type is a string that tells browsers and other tools how to handle a particular kind of file.

application/cwl+json defines a JSON-based format for workflow descriptions that follow the Common Workflow Language specification.

Files with this type include structured instructions for running data or processing pipelines. The format clarifies the order of tasks, parameters, and dependencies to automate complex processes. For instance, a workflow file with the CWL extension tells software that the content complies with these specific rules.

Learn more about the Common Workflow Language for additional details.

Associated file extensions

Usage Examples

HTTP Header

When serving content with this MIME type, set the Content-Type header:


    Content-Type: application/cwl+json    
  

HTML

In HTML, you can specify the MIME type in various elements:


    <a href="file.dat" type="application/cwl+json">Download file</a>    
  

Server-side (Node.js)

Setting the Content-Type header in Node.js:


    const http = require('http');    
    
    http.createServer((req, res) => {    
      res.setHeader('Content-Type', 'application/cwl+json');    
      res.end('Content here');    
    }).listen(3000);    
  

Associated file extensions

FAQs

What is the purpose of the application/cwl+json MIME type?

This MIME type identifies a document containing a Common Workflow Language (CWL) description serialized in JSON format. It is used to define portable, reproducible data analysis pipelines that can run on various computing environments, from local machines to cloud clusters.

Which file extension is associated with application/cwl+json?

The primary extension is .cwl. While these files contain standard JSON syntax, using the specific .cwl extension helps developers and software distinguish workflow logic from generic data files found in standard .json files.

How do I configure Apache to serve CWL files with the correct MIME type?

You can ensure your Apache server sends the correct header by adding a directive to your .htaccess or httpd.conf file. Add the line AddType application/cwl+json .cwl to map the extension to this specific media type.

Can I use application/cwl+json for YAML-based CWL files?

No, this MIME type is strictly for CWL documents formatted as JSON. Although CWL is frequently written in YAML for human readability, YAML files should be served with text/x-yaml or similar types, not the +json subtype.

Why use application/cwl+json instead of standard application/json?

Using the specific subtype +json adds semantic value. It tells the client or browser that the content is not just arbitrary data, but a structured workflow definition that adheres to the CWL specification, triggering appropriate plugins or validation tools.

How do I view or edit files with this MIME type?

Because the content is text-based JSON, you can view it in any code editor like Visual Studio Code or Notepad++. To execute the workflow, you need a CWL-compliant runner such as cwltool, Toil, or Cromwell.

Are there security concerns with application/cwl+json files?

Yes, because these files define execution instructions for command-line tools and Docker containers. You should treat them as executable code and only run CWL workflows from trusted sources to prevent unauthorized command execution on your system.

General FAQ

What is a MIME type?

A MIME (Multipurpose Internet Mail Extensions) type is a standard that indicates the nature and format of a document, file, or assortment of bytes. MIME types are defined and standardized in IETF's RFC 6838.

MIME types are important because they help browsers and servers understand how to process a file. When a browser receives a file from a server, it uses the MIME type to determine how to display or handle the content, whether it's an image to display, a PDF to open in a viewer, or a video to play.

MIME types consist of a type and a subtype, separated by a slash (e.g., text/html, image/jpeg, application/pdf). Some MIME types also include optional parameters.

How do I find the MIME type for a file?

You can check the file extension or use a file identification tool such as file --mime-type on the command line. Many programming languages also provide libraries to detect MIME types.

Why are multiple MIME types listed for one extension?

Different applications and historical conventions may use alternative MIME identifiers for the same kind of file. Showing them all helps ensure compatibility across systems.