Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Seven Bridges Platform Apps API
version: unknown
servers:
- url: https://api.sbgenomics.com/v2
security:
- {}
tags:
- name: Apps
paths:
/apps:
get:
summary: List all apps available to you
description: This call lists all the apps available to you.
operationId: list-all-apps-available-to-you
parameters:
- name: X-SBG-Auth-Token
in: header
description: Your Seven Bridges Platform [authentication token](doc:get-your-authentication-token).
required: true
schema:
type: string
- name: fields
in: query
description: Selector specifying a subset of fields to include in the response.
schema:
type: array
items:
type: string
- name: project
in: query
description: Enter a project, in the form `{project_owner}/{project_short_name}` to restrict the results to apps from that project only.
schema:
type: string
- name: visibility
in: query
description: Set this to `public` to see all public apps on the Seven Bridges Platform.
schema:
type: string
- name: q
in: query
description: Enter one or more search terms to query apps using the `q` parameter. Learn more about querying above.
schema:
type: string
- name: id
in: query
description: Use this parameter to query apps based on their ID.
schema:
type: string
- name: limit
in: query
description: The maximum number of collection items to return for a single request. Minimum value is 1. The maximum value is 100 and the default value is 50. This is a pagination-specific attribute.
schema:
type: integer
format: int32
default: 50
- name: offset
in: query
description: The zero-based starting index in the entire collection of the first item to return. The default value is 0. This is a pagination-specific attribute.
schema:
type: integer
format: int32
default: 0
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"href\": \"https://api.sbgenomics.com/v2/apps/\",\n \"items\": [\n {\n \"href\": \"https://api.sbgenomics.com/v2/apps/RFranklin/my-project/workflow-9\",\n \"id\": \"RFranklin/my-project/workflow-9\",\n \"name\": \"workflow\"\n },\n {\n \"href\": \"https://api.sbgenomics.com/v2/apps/RFranklin/my-project/fusion-transcript-detection-chimeras\",\n \"id\": \"RFranklin/my-project/fusion-transcript-detection-chimeras\",\n \"name\": \"fusion-transcript-detection-chimerascan\"\n },\n {\n \"href\": \"https://api.sbgenomics.com/v2/apps/RFranklin/my-project/somatic-filters\",\n \"id\": \"RFranklin/my-project/somatic-filters\",\n \"name\": \"somaticsniper-filters\"\n },\n {\n \"href\": \"https://api.sbgenomics.com/v2/apps/RFranklin/my-project/command-line-tool-3\",\n \"id\": \"RFranklin/my-project/command-line-tool-3\",\n \"name\": \"command-line-tool\"\n },\n {\n \"href\": \"https://api.sbgenomics.com/v2/apps/RFranklin/my-project/delly2-workflow-test\",\n \"id\": \"RFranklin/my-project/delly2-workflow-test\",\n \"name\": \"delly2-workflow\"\n }\n ]\n}"
schema:
type: object
properties:
href:
type: string
example: https://api.sbgenomics.com/v2/apps/
items:
type: array
items:
type: object
properties:
href:
type: string
example: https://api.sbgenomics.com/v2/apps/RFranklin/my-project/workflow-9
id:
type: string
example: RFranklin/my-project/workflow-9
name:
type: string
example: workflow
deprecated: false
x-readme:
code-samples:
- language: python
code: "from sevenbridges import Api\n\napi = Api(url='https://api.sbgenomics.com/v2',\n token='3210a98c1db9318fa9d9273156740f74')\n\n# send GET request to SB API\napps = api.apps.query()\n\nfor app in apps:\n print(app.name, app.id)"
samples-languages:
- python
tags:
- Apps
/apps/{project_owner}/{project}/{app_short_name}:
get:
summary: Get details of an app
description: This call returns information about the specified app. The app should be one in a project that you can access; this could be an app that has been uploaded to the Seven Bridges Platform by a project member, or a publicly available app that has been copied to the project.
operationId: get-details-of-an-app
parameters:
- name: project_owner
in: path
description: If you are using [Enterprise](doc:about-the-enterprise-feature), use the name of the Division that owns the project in which the app is located; otherwise, enter the Platform username of the project owner.
schema:
type: string
required: true
- name: project
in: path
description: The name of the project in which the app is located.
schema:
type: string
required: true
- name: app_short_name
in: path
description: The short name of the app you are querying. Optionally, to get details of a specific revision of the app, use the `{app_short_name}/{revision_number}` format, for example `bamtools-index-2-4-0/1`
schema:
type: string
required: true
- name: fields
in: query
description: Selector specifying a subset of fields to include in the response.
schema:
type: array
items:
type: string
- name: X-SBG-Auth-Token
in: header
description: Your Seven Bridges Platform [authentication token](doc:get-your-authentication-token).
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"href\": \"https://api.sbgenomics.com/v2/apps/rfranklin/my-project/bamtools-index-2/0\",\n \"id\": \"rfranklin/my-project/bamtools-index-2/0\",\n \"project\": \"rfranklin/my-project\",\n \"name\": \"BamTools Index\",\n \"revision\": 0,\n \"raw\": {\n \"sbg:categories\": [\n \"SAM/BAM-Processing\",\n \"Indexing\"\n ],\n \"sbg:image_url\": null,\n \"requirements\": [\n {\n \"class\": \"ExpressionEngineRequirement\",\n \"id\": \"#cwl-js-engine\",\n \"requirements\": [\n {\n \"class\": \"DockerRequirement\",\n \"dockerPull\": \"rabix/js-engine\"\n }\n ]\n }\n ],\n \"baseCommand\": [\n {\n \"class\": \"Expression\",\n \"script\": \"{\\n if ($job.inputs.input_bai_file){\\n \\treturn\\\"echo Skipping index step because BAI file is provided on the input.\\\"\\n }\\n else{\\n return \\\"/opt/bamtools/bin/bamtools index\\\"\\n }\\n}\",\n \"engine\": \"#cwl-js-engine\"\n }\n ],\n \"class\": \"CommandLineTool\",\n \"sbg:cmdPreview\": \"/opt/bamtools/bin/bamtools index -in input_bam.bam\",\n \"sbg:homepage\": \"https://github.com/pezmaster31/bamtools/wiki\",\n \"label\": \"BamTools Index\",\n \"outputs\": [\n {\n \"description\": \"Output BAM file with index (BAI or BTI) file as a secondary file (not visible in the output list of the task).\",\n \"type\": [\n \"null\",\n \"File\"\n ],\n \"id\": \"#output_bam_file\",\n \"label\": \"Output BAM file\",\n \"outputBinding\": {\n \"glob\": {\n \"class\": \"Expression\",\n \"script\": \"{\\n if ($job.inputs.indexed_data === true){\\n\\treturn ''\\n } else {\\n return $job.inputs.input_bam_file.path.split(\\\"/\\\").pop()\\n }\\n}\\n\\n\\n\",\n \"engine\": \"#cwl-js-engine\"\n },\n \"secondaryFiles\": [\n \".bai\",\n \".bti\"\n ],\n \"sbg:inheritMetadataFrom\": \"#input_bam_file\"\n },\n \"sbg:fileTypes\": \"BAM\"\n },\n {\n \"description\": \"Generated index file (without the indexed data).\",\n \"type\": [\n \"null\",\n \"File\"\n ],\n \"id\": \"#generated_index\",\n \"label\": \"Generated index file\",\n \"outputBinding\": {\n \"glob\": \"{*.bai,*.bti}\",\n \"sbg:inheritMetadataFrom\": \"#input_bam_file\"\n },\n \"sbg:fileTypes\": \"BAI,BTI\"\n }\n ],\n \"cwlVersion\": \"sbg:draft-2\",\n \"temporaryFailCodes\": [],\n \"sbg:job\": {\n \"inputs\": {\n \"bti_format\": false,\n \"indexed_data\": false,\n \"input_bam_file\": {\n \"class\": \"File\",\n \"path\": \"input/input_bam.bam\",\n \"size\": 0,\n \"secondaryFiles\": []\n }\n },\n \"allocatedResources\": {\n \"mem\": 1000,\n \"cpu\": 1\n }\n },\n \"sbg:toolkitVersion\": \"2.4.0\",\n \"arguments\": [\n {\n \"position\": 0,\n \"separate\": true,\n \"valueFrom\": {\n \"class\": \"Expression\",\n \"script\": \"{\\n if (!(typeof $job.inputs.input_bai_file !== \\\"undefined\\\")){\\n return \\\"-in \\\" + $job.inputs.input_bam_file.path.split('/').pop() \\n }\\n}\",\n \"engine\": \"#cwl-js-engine\"\n }\n },\n {\n \"position\": 1,\n \"separate\": true,\n \"valueFrom\": {\n \"class\": \"Expression\",\n \"script\": \"{\\n if (!(typeof $job.inputs.input_bai_file !== \\\"undefined\\\"))\\n if ((typeof $job.inputs.bti_format !== \\\"undefined\\\") && ($job.inputs.bti_format))\\n \\treturn \\\"-bti\\\" \\n}\",\n \"engine\": \"#cwl-js-engine\"\n }\n }\n ],\n \"sbg:license\": \"The MIT License\",\n \"hints\": [\n {\n \"dockerImageId\": \"f808163d4cd3\",\n \"class\": \"DockerRequirement\",\n \"dockerPull\": \"images.sbgenomics.com/markop/bamtools:2.4.0\"\n },\n {\n \"value\": 1,\n \"class\": \"sbg:CPURequirement\"\n },\n {\n \"value\": 1000,\n \"class\": \"sbg:MemRequirement\"\n }\n ],\n \"sbg:links\": [\n {\n \"label\": \"Homepage\",\n \"id\": \"https://github.com/pezmaster31/bamtools\"\n },\n {\n \"label\": \"Wiki\",\n \"id\": \"https://github.com/pezmaster31/bamtools/wiki\"\n }\n ],\n \"stdout\": \"\",\n \"description\": \"BamTools Index creates an index file (BAI or BTI) for a BAM file. If BAI file is present on the input the tool will skip indexing step and output BAM with provided BAI file.\\n\\n**Common issues:** Providing a BAI file on input will result in a pass-through without execution, even if a different index format is requested on the output (BTI instead of BAI).\",\n \"sbg:toolkit\": \"BamTools\",\n \"successCodes\": [],\n \"inputs\": [\n {\n \"description\": \"The input BAM file.\",\n \"type\": [\n \"File\"\n ],\n \"id\": \"#input_bam_file\",\n \"sbg:stageInput\": \"link\",\n \"label\": \"Input BAM file\",\n \"sbg:category\": \"Input & Output\",\n \"sbg:fileTypes\": \"BAM\"\n },\n {\n \"type\": [\n \"null\",\n \"boolean\"\n ],\n \"label\": \"BTI format\",\n \"id\": \"#bti_format\",\n \"sbg:category\": \"Input & Output\",\n \"description\": \"Create (non-standard) BamTools index file (*.BTI). Default behavior is to create standard BAM index (*.BAI).\"\n },\n {\n \"description\": \"Input BAI(BAM index) file.\",\n \"type\": [\n \"null\",\n \"File\"\n ],\n \"id\": \"#input_bai_file\",\n \"sbg:stageInput\": \"link\",\n \"label\": \"Input BAI(BAM index) file\",\n \"sbg:category\": \"File input\",\n \"sbg:fileTypes\": \"BAI\"\n },\n {\n \"type\": [\n \"null\",\n \"boolean\"\n ],\n \"label\": \"Don't output indexed data file\",\n \"id\": \"#indexed_data\",\n \"sbg:category\": \"Input & Output\",\n \"description\": \"Don't output indexed data file. The default value is [FALSE].\"\n }\n ],\n \"stdin\": \"\",\n \"sbg:toolAuthor\": \"Derek Barnett, Erik Garrison, Gabor Marth, and Michael Stromberg\",\n \"$namespaces\": {\n \"sbg\": \"https://sevenbridges.com\"\n },\n \"sbg:appVersion\": [\n \"sbg:draft-2\"\n ],\n \"id\": \"https://api.sbgenomics.com/v2/apps/rfranklin/my-project/bamtools-index-2-4-0/0/raw/\",\n \"sbg:id\": \"rfranklin/my-project/bamtools-index-2-4-0/0\",\n \"sbg:revision\": 0,\n \"sbg:revisionNotes\": \"Copy of admin/sbg-public-data/bamtools-index-2-4-0/30\",\n \"sbg:modifiedOn\": 1584016152,\n \"sbg:modifiedBy\": \"rfranklin\",\n \"sbg:createdOn\": 1584016152,\n \"sbg:createdBy\": \"rfranklin\",\n \"sbg:project\": \"rfranklin/my-project\",\n \"sbg:projectName\": \"My project\",\n \"sbg:sbgMaintained\": false,\n \"sbg:validationErrors\": [],\n \"sbg:contributors\": [\n \"rfranklin\"\n ],\n \"sbg:latestRevision\": 0,\n \"sbg:revisionsInfo\": [\n {\n \"sbg:revision\": 0,\n \"sbg:modifiedBy\": \"rfranklin\",\n \"sbg:modifiedOn\": 1584016152,\n \"sbg:revisionNotes\": \"Copy of admin/sbg-public-data/bamtools-index-2-4-0/30\"\n }\n ],\n \"sbg:publisher\": \"sbg\",\n \"sbg:content_hash\": null,\n \"sbg:copyOf\": \"admin/sbg-public-data/bamtools-index-2-4-0/30\"\n }\n}"
schema:
type: object
properties:
href:
type: string
example: https://api.sbgenomics.com/v2/apps/rfranklin/my-project/bamtools-index-2/0
id:
type: string
example: rfranklin/my-project/bamtools-index-2/0
project:
type: string
example: rfranklin/my-project
name:
type: string
example: BamTools Index
revision:
type: integer
example: 0
default: 0
raw:
type: object
properties:
sbg:categories:
type: array
items:
type: string
example: SAM/BAM-Processing
sbg:image_url: {}
requirements:
type: array
items:
type: object
properties:
class:
type: string
example: ExpressionEngineRequirement
id:
type: string
example: '#cwl-js-engine'
requirements:
type: array
items:
type: object
properties:
class:
type: string
example: DockerRequirement
dockerPull:
type: string
example: rabix/js-engine
baseCommand:
type: array
items:
type: object
properties:
class:
type: string
example: Expression
script:
type: string
example: "{\n if ($job.inputs.input_bai_file){\n \treturn\"echo Skipping index step because BAI file is provided on the input.\"\n }\n else{\n return \"/opt/bamtools/bin/bamtools index\"\n }\n}"
engine:
type: string
example: '#cwl-js-engine'
class:
type: string
example: CommandLineTool
sbg:cmdPreview:
type: string
example: /opt/bamtools/bin/bamtools index -in input_bam.bam
sbg:homepage:
type: string
example: https://github.com/pezmaster31/bamtools/wiki
label:
type: string
example: BamTools Index
outputs:
type: array
items:
type: object
properties:
description:
type: string
example: Output BAM file with index (BAI or BTI) file as a secondary file (not visible in the output list of the task).
type:
type: array
items:
type: string
example: 'null'
id:
type: string
example: '#output_bam_file'
label:
type: string
example: Output BAM file
outputBinding:
type: object
properties:
glob:
type: object
properties:
class:
type: string
example: Expression
script:
type: string
example: "{\n if ($job.inputs.indexed_data === true){\n\treturn ''\n } else {\n return $job.inputs.input_bam_file.path.split(\"/\").pop()\n }\n}\n\n\n"
engine:
type: string
example: '#cwl-js-engine'
secondaryFiles:
type: array
items:
type: string
example: .bai
sbg:inheritMetadataFrom:
type: string
example: '#input_bam_file'
sbg:fileTypes:
type: string
example: BAM
cwlVersion:
type: string
example: sbg:draft-2
temporaryFailCodes:
type: array
sbg:job:
type: object
properties:
inputs:
type: object
properties:
bti_format:
type: boolean
example: false
default: true
indexed_data:
type: boolean
example: false
default: true
input_bam_file:
type: object
properties:
class:
type: string
example: File
path:
type: string
example: input/input_bam.bam
size:
type: integer
example: 0
default: 0
secondaryFiles:
type: array
allocatedResources:
type: object
properties:
mem:
type: integer
example: 1000
default: 0
cpu:
type: integer
example: 1
default: 0
sbg:toolkitVersion:
type: string
example: 2.4.0
arguments:
type: array
items:
type: object
properties:
position:
type: integer
example: 0
default: 0
separate:
type: boolean
example: true
default: true
valueFrom:
type: object
properties:
class:
type: string
example: Expression
script:
type: string
example: "{\n if (!(typeof $job.inputs.input_bai_file !== \"undefined\")){\n return \"-in \" + $job.inputs.input_bam_file.path.split('/').pop() \n }\n}"
engine:
type: string
example: '#cwl-js-engine'
sbg:license:
type: string
example: The MIT License
hints:
type: array
items:
type: object
properties:
dockerImageId:
type: string
example: f808163d4cd3
class:
type: string
example: DockerRequirement
dockerPull:
type: string
example: images.sbgenomics.com/markop/bamtools:2.4.0
sbg:links:
type: array
items:
type: object
properties:
label:
type: string
example: Homepage
id:
type: string
example: https://github.com/pezmaster31/bamtools
stdout:
type: string
example: ''
description:
type: string
example: 'BamTools Index creates an index file (BAI or BTI) for a BAM file. If BAI file is present on the input the tool will skip indexing step and output BAM with provided BAI file.
**Common issues:** Providing a BAI file on input will result in a pass-through without execution, even if a different index format is requested on the output (BTI instead of BAI).'
sbg:toolkit:
type: string
example: BamTools
successCodes:
type: array
inputs:
type: array
items:
type: object
properties:
description:
type: string
example: The input BAM file.
type:
type: array
items:
type: string
example: File
id:
type: string
example: '#input_bam_file'
sbg:stageInput:
type: string
example: link
label:
type: string
example: Input BAM file
sbg:category:
type: string
example: Input & Output
sbg:fileTypes:
type: string
example: BAM
stdin:
type: string
example: ''
sbg:toolAuthor:
type: string
example: Derek Barnett, Erik Garrison, Gabor Marth, and Michael Stromberg
$namespaces:
type: object
properties:
sbg:
type: string
example: https://sevenbridges.com
sbg:appVersion:
type: array
items:
type: string
example: sbg:draft-2
id:
type: string
example: https://api.sbgenomics.com/v2/apps/rfranklin/my-project/bamtools-index-2-4-0/0/raw/
sbg:id:
type: string
example: rfranklin/my-project/bamtools-index-2-4-0/0
sbg:revision:
type: integer
example: 0
default: 0
sbg:revisionNotes:
type: string
example: Copy of admin/sbg-public-data/bamtools-index-2-4-0/30
sbg:modifiedOn:
type: integer
example: 1584016152
default: 0
sbg:modifiedBy:
type: string
example: rfranklin
sbg:createdOn:
type: integer
example: 1584016152
default: 0
sbg:createdBy:
type: string
example: rfranklin
sbg:project:
type: string
example: rfranklin/my-project
sbg:projectName:
type: string
example: My project
sbg:sbgMaintained:
type: boolean
example: false
default: true
sbg:validationErrors:
type: array
sbg:contributors:
type: array
items:
type: string
example: rfranklin
sbg:latestRevision:
type: integer
example: 0
default: 0
sbg:revisionsInfo:
type: array
items:
type: object
properties:
sbg:revision:
type: integer
example: 0
default: 0
sbg:modifiedBy:
type: string
example: rfranklin
sbg:modifiedOn:
type: integer
example: 1584016152
default: 0
sbg:revisionNotes:
type: string
example: Copy of admin/sbg-public-data/bamtools-index-2-4-0/30
sbg:publisher:
type: string
example: sbg
sbg:content_hash: {}
sbg:copyOf:
type: string
example: admin/sbg-public-data/bamtools-index-2-4-0/30
deprecated: false
x-readme:
code-samples:
- language: python
code: "from sevenbridges import Api\n\napi = Api(url='https://api.sbgenomics.com/v2',\n token='3210a98c1db9318fa9d9273156740f74')\n\n# send GET request to SB API\napp = api.apps.get(id='rfranklin/my-project/bamtools-index-2')\n\nprint(app.name, app.revision)"
samples-languages:
- python
tags:
- Apps
/apps/{app_id}/actions/sync:
post:
summary: Synchronize a copied app with its parent app
description: This call synchronizes a copied app with the source app from which it has been copied. For example, when **FASTQC** is copied from public apps to a project and updates are made to **FASTQC** in the public apps gallery (there are new revisions), this action fetches all revisions and revision notes from the updated parent app and applies them to your copied app. Once this has been done, the copied app is updated to the latest revision and includes the comple
# --- truncated at 32 KB (123 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/seven-bridges/refs/heads/main/openapi/seven-bridges-apps-api-openapi.yml