{
  "openapi": "3.0.3",
  "info": {
    "title": "Data Repository Service",
    "version": "1.5.0",
    "x-logo": {
      "url": "https://www.ga4gh.org/wp-content/themes/ga4gh/dist/assets/svg/logos/logo-full-color.svg"
    },
    "termsOfService": "https://www.ga4gh.org/terms-and-conditions/",
    "contact": {
      "name": "GA4GH Cloud Work Stream",
      "email": "ga4gh-cloud@ga4gh.org"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://raw.githubusercontent.com/ga4gh/data-repository-service-schemas/master/LICENSE"
    }
  },
  "servers": [
    {
      "url": "https://{serverURL}/ga4gh/drs/v1",
      "variables": {
        "serverURL": {
          "default": "drs.example.org",
          "description": "DRS server endpoints MUST be prefixed by the '/ga4gh/drs/v1' endpoint path\n"
        }
      }
    }
  ],
  "security": [
    {},
    {
      "BasicAuth": []
    },
    {
      "BearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Introduction",
      "description": {
        "$ref": "./tags/Introduction.md"
      }
    },
    {
      "name": "DRS API Principles",
      "description": {
        "$ref": "./tags/DrsApiPrinciples.md"
      }
    },
    {
      "name": "Authorization & Authentication",
      "description": {
        "$ref": "./tags/Auth.md"
      }
    },
    {
      "name": "Objects"
    },
    {
      "name": "Service Info"
    },
    {
      "name": "AccessMethodModel",
      "x-displayName": "AccessMethod",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/AccessMethod\" />\n"
    },
    {
      "name": "AccessURLModel",
      "x-displayName": "AccessURL",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/AccessURL\" />\n"
    },
    {
      "name": "ChecksumModel",
      "x-displayName": "Checksum",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/Checksum\" />\n"
    },
    {
      "name": "ContentsObjectModel",
      "x-displayName": "ContentsObject",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ContentsObject\" />\n"
    },
    {
      "name": "DrsObjectModel",
      "x-displayName": "DrsObject",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/DrsObject\" />\n"
    },
    {
      "name": "ErrorModel",
      "x-displayName": "Error",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/Error\" />\n"
    },
    {
      "name": "Motivation",
      "description": {
        "$ref": "./tags/Motivation.md"
      }
    },
    {
      "name": "Working With Compound Objects",
      "description": {
        "$ref": "./tags/CompoundObjects.md"
      }
    },
    {
      "name": "Background Notes on DRS URIs",
      "description": {
        "$ref": "./tags/BackgroundNotesOnDRSURIs.md"
      }
    },
    {
      "name": "Compact Identifier-Based URIs",
      "description": {
        "$ref": "./tags/CompactIdentifierBasedURIs.md"
      }
    },
    {
      "name": "Hostname-Based URIs",
      "description": {
        "$ref": "./tags/HostnameBasedURIs.md"
      }
    },
    {
      "name": "GA4GH Service Registry",
      "description": {
        "$ref": "./tags/ServiceRegistry.md"
      }
    }
  ],
  "x-tagGroups": [
    {
      "name": "Overview",
      "tags": [
        "Introduction",
        "DRS API Principles",
        "Authorization & Authentication"
      ]
    },
    {
      "name": "Operations",
      "tags": [
        "Objects",
        "Service Info"
      ]
    },
    {
      "name": "Models",
      "tags": [
        "AccessMethodModel",
        "AccessURLModel",
        "ChecksumModel",
        "ContentsObjectModel",
        "DrsObjectModel",
        "ErrorModel"
      ]
    },
    {
      "name": "Appendices",
      "tags": [
        "Motivation",
        "Working With Compound Objects",
        "Background Notes on DRS URIs",
        "Compact Identifier-Based URIs",
        "Hostname-Based URIs",
        "GA4GH Service Registry"
      ]
    }
  ],
  "paths": {
    "/service-info": {
      "$ref": "./paths/service-info.yaml"
    },
    "/objects/{object_id}": {
      "$ref": "./paths/objects@{object_id}.yaml"
    },
    "/objects": {
      "$ref": "./paths/bulkobjects@{object_id}.yaml"
    },
    "/objects/{object_id}/access/{access_id}": {
      "$ref": "./paths/objects@{object_id}@access@{access_id}.yaml"
    },
    "/objects/access": {
      "$ref": "./paths/bulkobjects@access@{access_id}.yaml"
    }
  },
  "components": {
    "securitySchemes": {
      "BasicAuth": {
        "type": "http",
        "scheme": "basic",
        "description": "A valid authorization token must be passed in the 'Authorization' header,\ne.g. \"Basic ${token_string}\"\n"
      },
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "A valid authorization token must be passed in the 'Authorization' header, e.g. \"Bearer ${token_string}\""
      },
      "PassportAuth": {
        "type": "http",
        "scheme": "bearer",
        "x-in": "body",
        "bearerFormat": "JWT",
        "description": "A valid GA4GH Passport must be passed in the body of an HTTP POST request as a tokens[] array."
      }
    }
  }
}