swagger: '2.0'
schemes:
  - https
host: api.apis.guru
basePath: /v2/
info:
  contact:
    email: founders@apis.guru
    name: APIs.guru
    url: 'http://APIs.guru'
  description: |
    Wikipedia for Web APIs. Repository of API specs in OpenAPI(fka Swagger) 2.0 format.

    **Warning**: If you want to be notified about changes in advance please subscribe to our [Gitter channel](https://gitter.im/APIs-guru/api-models).

    Client sample: [[Demo]](https://apis.guru/simple-ui) [[Repo]](https://github.com/APIs-guru/simple-ui)
  license:
    name: CC0 1.0
    url: 'https://github.com/APIs-guru/api-models#licenses'
  title: APIs.guru
  version: '2.0'
  x-logo:
    url: 'https://apis.guru/branding/logo_vertical.svg'
externalDocs:
  url: 'https://github.com/APIs-guru/api-models/blob/master/API.md'
produces:
  - application/json
security: []
paths:
  /list.json:
    get:
      description: |
        List all APIs in the directory.
        Returns links to OpenAPI specification for each API in the directory.
        If API exist in multiply versions `preferred` one is explicitly marked.

        Some basic info from OpenAPI spec is cached inside each object.
        This allows to generate some simple views without need to fetch OpenAPI spec for each API.
      operationId: listAPIs
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/APIs'
      summary: List all APIs
  /metrics.json:
    get:
      description: |
        Some basic metrics for the entire directory.
        Just stunning numbers to put on a front page and are intended purely for WoW effect :)
      operationId: getMetrics
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Metrics'
      summary: Get basic metrics
definitions:
  API:
    additionalProperties: false
    description: Meta information about API
    properties:
      added:
        description: Timestamp when the API was first added to the directory
        format: date-time
        type: string
      preferred:
        description: Recommended version
        type: string
      versions:
        additionalProperties:
          $ref: '#/definitions/ApiVersion'
        description: List of supported versions of the API
        minProperties: 1
        type: object
    required:
      - added
      - preferred
      - versions
    type: object
  APIs:
    additionalProperties:
      $ref: '#/definitions/API'
    description: |
      List of API details.
      It is a JSON object with API IDs(`<provider>[:<service>]`) as keys.
    example:
      'googleapis.com:drive':
        added: '2015-02-22T20:00:45.000Z'
        preferred: v3
        versions:
          v2:
            added: '2015-02-22T20:00:45.000Z'
            info:
              title: Drive
              version: v2
              x-apiClientRegistration:
                url: 'https://console.developers.google.com'
              x-logo:
                url: 'https://api.apis.guru/v2/cache/logo/https_www.gstatic.com_images_icons_material_product_2x_drive_32dp.png'
              x-origin:
                format: google
                url: 'https://www.googleapis.com/discovery/v1/apis/drive/v2/rest'
                version: v1
              x-preferred: false
              x-providerName: googleapis.com
              x-serviceName: drive
            swaggerUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v2/swagger.json'
            swaggerYamlUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v2/swagger.yaml'
            updated: '2016-06-17T00:21:44.000Z'
          v3:
            added: '2015-12-12T00:25:13.000Z'
            info:
              title: Drive
              version: v3
              x-apiClientRegistration:
                url: 'https://console.developers.google.com'
              x-logo:
                url: 'https://api.apis.guru/v2/cache/logo/https_www.gstatic.com_images_icons_material_product_2x_drive_32dp.png'
              x-origin:
                format: google
                url: 'https://www.googleapis.com/discovery/v1/apis/drive/v3/rest'
                version: v1
              x-preferred: true
              x-providerName: googleapis.com
              x-serviceName: drive
            swaggerUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v3/swagger.json'
            swaggerYamlUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v3/swagger.yaml'
            updated: '2016-06-17T00:21:44.000Z'
    minProperties: 1
    type: object
  ApiVersion:
    additionalProperties: false
    properties:
      added:
        description: Timestamp when the version was added
        format: date-time
        type: string
      info:
        description: Copy of `info` section from Swagger spec
        minProperties: 1
        type: object
      swaggerUrl:
        description: URL to Swagger spec in JSON format
        format: url
        type: string
      swaggerYamlUrl:
        description: URL to Swagger spec in YAML format
        format: url
        type: string
      updated:
        description: Timestamp when the version was updated
        format: date-time
        type: string
    required:
      - added
      - updated
      - swaggerUrl
      - swaggerYamlUrl
      - info
    type: object
  Metrics:
    additionalProperties: false
    description: List of basic metrics
    example:
      numAPIs: 238
      numEndpoints: 6448
      numSpecs: 302
    properties:
      numAPIs:
        description: Number of APIs
        minimum: 1
        type: integer
      numEndpoints:
        description: Total number of endpoints inside all specifications
        minimum: 1
        type: integer
      numSpecs:
        description: Number of API specifications including different versions of the same API
        minimum: 1
        type: integer
    required:
      - numSpecs
      - numAPIs
      - numEndpoints
    type: object
