swagger: "2.0"
schemes:
  - http
host: api.cambase.io
basePath: /
info:
  description: Cambase.io is a project by Evercam.io in order to make it easier for software developers to have a reliable, up to date source of model hardware information available via a public API.
  title: Cambase.io
  version: "1.0"
  x-logo:
    url: https://twitter.com/evrcm/profile_image?size=original
  x-origin:
    - converter:
        url: https://github.com/lucybot/api-spec-converter
        version: 2.6.2
      format: swagger
      url: http://api.cambase.io/api-docs/api-docs.json
      version: "1.2"
  x-providerName: cambase.io
tags:
  - description: Models
    name: models
  - description: Recorders
    name: recorders
  - description: Vendors
    name: vendors
paths:
  /api/v1/models.json:
    get:
      operationId: Api::V1::Models#index
      parameters:
        - description: Page number
          in: query
          name: page
          required: false
          type: integer
        - description: Sort order
          in: query
          name: order
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: The request you made is not acceptable
        "416":
          description: Requested Range Not Satisfiable
      summary: Fetches all Models
      tags:
        - models
    post:
      operationId: Api::V1::Models#create
      parameters:
        - description: Vendor ID
          in: formData
          name: vendor_id
          required: true
          type: string
        - description: Model
          in: formData
          name: model[model]
          required: true
          type: string
        - description: Shape
          in: formData
          name: model[shape]
          required: false
          type: string
        - description: Resolution
          in: formData
          name: model[resolution]
          required: false
          type: string
        - description: ONVIF
          in: formData
          name: model[onvif]
          required: false
          type: string
        - description: PSIA
          in: formData
          name: model[psia]
          required: false
          type: string
        - description: PTZ
          in: formData
          name: model[ptz]
          required: false
          type: string
        - description: Infrared
          in: formData
          name: model[infrared]
          required: false
          type: string
        - description: Varifocal
          in: formData
          name: model[varifocal]
          required: false
          type: string
        - description: SD Card
          in: formData
          name: model[sd_card]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: model[upnp]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: model[audio_in]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: model[audio_out]
          required: false
          type: string
        - description: Default Username
          in: formData
          name: model[default_username]
          required: false
          type: string
        - description: Default Password
          in: formData
          name: model[default_password]
          required: false
          type: string
        - description: JPEG URL
          in: formData
          name: model[jpeg_url]
          required: false
          type: string
        - description: H264 URL
          in: formData
          name: model[h264_url]
          required: false
          type: string
        - description: MJPEG URL
          in: formData
          name: model[mjpeg_url]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: Not Acceptable
      summary: Creates a new Model
      tags:
        - models
  /api/v1/models/search.json:
    get:
      operationId: Api::V1::Models#search
      parameters:
        - description: Page number
          in: query
          name: page
          required: false
          type: integer
        - description: Model
          in: query
          name: q[model_cont]
          required: false
          type: string
        - description: Vendor
          in: query
          name: q[manufacturer_name_cont]
          required: false
          type: string
        - description: Shape
          in: query
          name: q[shape_eq]
          required: false
          type: string
        - description: Resolution
          in: query
          name: q[resolution_eq]
          required: false
          type: string
        - description: ONVIF
          in: query
          name: q[onvif_true]
          required: false
          type: string
        - description: PSIA
          in: query
          name: q[psia_true]
          required: false
          type: string
        - description: PTZ
          in: query
          name: q[ptz_true]
          required: false
          type: string
        - description: Infrared
          in: query
          name: q[infrared_true]
          required: false
          type: string
        - description: Varifocal
          in: query
          name: q[varifocal_true]
          required: false
          type: string
        - description: SD Card
          in: query
          name: q[sd_card_true]
          required: false
          type: string
        - description: UPnP
          in: query
          name: q[upnp_true]
          required: false
          type: string
        - description: Audio In
          in: query
          name: q[audio_in_true]
          required: false
          type: string
        - description: Audio Out
          in: query
          name: q[audio_out_true]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: The request you made is not acceptable
        "416":
          description: Requested Range Not Satisfiable
      summary: Searches all Models
      tags:
        - models
  "/api/v1/models/{id}.json":
    get:
      operationId: Api::V1::Models#show
      parameters:
        - description: Model ID
          in: path
          name: id
          required: true
          type: integer
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Fetches a single Model
      tags:
        - models
    patch:
      parameters:
        - description: Model ID
          in: path
          name: id
          required: true
          type: string
        - description: Vendor ID
          in: formData
          name: vendor_id
          required: true
          type: string
        - description: Model
          in: formData
          name: model[model]
          required: false
          type: string
        - description: Shape
          in: formData
          name: model[shape]
          required: false
          type: string
        - description: Resolution
          in: formData
          name: model[resolution]
          required: false
          type: string
        - description: ONVIF
          in: formData
          name: model[onvif]
          required: false
          type: string
        - description: PSIA
          in: formData
          name: model[psia]
          required: false
          type: string
        - description: PTZ
          in: formData
          name: model[ptz]
          required: false
          type: string
        - description: Infrared
          in: formData
          name: model[infrared]
          required: false
          type: string
        - description: Varifocal
          in: formData
          name: model[varifocal]
          required: false
          type: string
        - description: SD Card
          in: formData
          name: model[sd_card]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: model[upnp]
          required: false
          type: string
        - description: Audio In
          in: formData
          name: model[audio_in]
          required: false
          type: string
        - description: Audio Out
          in: formData
          name: model[audio_out]
          required: false
          type: string
        - description: Default Username
          in: formData
          name: model[default_username]
          required: false
          type: string
        - description: Default Password
          in: formData
          name: model[default_password]
          required: false
          type: string
        - description: JPEG URL
          in: formData
          name: model[jpeg_url]
          required: false
          type: string
        - description: H264 URL
          in: formData
          name: model[h264_url]
          required: false
          type: string
        - description: MJPEG URL
          in: formData
          name: model[mjpeg_url]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Updates an existing Model
      tags:
        - models
    put:
      parameters:
        - description: Model ID
          in: path
          name: id
          required: true
          type: string
        - description: Vendor ID
          in: formData
          name: vendor_id
          required: true
          type: string
        - description: Model
          in: formData
          name: model[model]
          required: false
          type: string
        - description: Shape
          in: formData
          name: model[shape]
          required: false
          type: string
        - description: Resolution
          in: formData
          name: model[resolution]
          required: false
          type: string
        - description: ONVIF
          in: formData
          name: model[onvif]
          required: false
          type: string
        - description: PSIA
          in: formData
          name: model[psia]
          required: false
          type: string
        - description: PTZ
          in: formData
          name: model[ptz]
          required: false
          type: string
        - description: Infrared
          in: formData
          name: model[infrared]
          required: false
          type: string
        - description: Varifocal
          in: formData
          name: model[varifocal]
          required: false
          type: string
        - description: SD Card
          in: formData
          name: model[sd_card]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: model[upnp]
          required: false
          type: string
        - description: Audio In
          in: formData
          name: model[audio_in]
          required: false
          type: string
        - description: Audio Out
          in: formData
          name: model[audio_out]
          required: false
          type: string
        - description: Default Username
          in: formData
          name: model[default_username]
          required: false
          type: string
        - description: Default Password
          in: formData
          name: model[default_password]
          required: false
          type: string
        - description: JPEG URL
          in: formData
          name: model[jpeg_url]
          required: false
          type: string
        - description: H264 URL
          in: formData
          name: model[h264_url]
          required: false
          type: string
        - description: MJPEG URL
          in: formData
          name: model[mjpeg_url]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Updates an existing Model
      tags:
        - models
  /api/v1/recorders.json:
    get:
      operationId: Api::V1::Recorders#index
      parameters:
        - description: Page number
          in: query
          name: page
          required: false
          type: integer
        - description: Sort order
          in: query
          name: order
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: The request you made is not acceptable
        "416":
          description: Requested Range Not Satisfiable
      summary: Fetches all Recorders
      tags:
        - recorders
    post:
      operationId: Api::V1::Recorders#create
      parameters:
        - description: Vendor ID
          in: formData
          name: vendor_id
          required: true
          type: string
        - description: Model
          in: formData
          name: recorder[model]
          required: true
          type: string
        - description: Name
          in: formData
          name: recorder[name]
          required: true
          type: string
        - description: Type
          in: formData
          name: recorder[recorder_type]
          required: true
          type: string
        - description: Resolution
          in: formData
          name: recorder[resolution]
          required: false
          type: string
        - description: ONVIF
          in: formData
          name: recorder[onvif]
          required: false
          type: string
        - description: PSIA
          in: formData
          name: recorder[psia]
          required: false
          type: string
        - description: PTZ
          in: formData
          name: recorder[ptz]
          required: false
          type: string
        - description: Discontinued
          in: formData
          name: recorder[discontinued]
          required: false
          type: string
        - description: 3rd pparty Camera Support
          in: formData
          name: recorder[support_3rdparty]
          required: false
          type: string
        - description: SD Card
          in: formData
          name: recorder[sd_card]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: recorder[upnp]
          required: false
          type: string
        - description: Hot Swap
          in: formData
          name: recorder[hot_swap]
          required: false
          type: string
        - description: HDMI Support
          in: formData
          name: recorder[hdmi]
          required: false
          type: string
        - description: Digital I/O
          in: formData
          name: recorder[digital_io]
          required: false
          type: string
        - description: Audio In
          in: formData
          name: recorder[audio_in]
          required: false
          type: string
        - description: Audio Out
          in: formData
          name: recorder[audio_out]
          required: false
          type: string
        - description: Input Channels
          in: formData
          name: recorder[input_channels]
          required: false
          type: string
        - description: Playback Channels
          in: formData
          name: recorder[playback_channels]
          required: false
          type: string
        - description: USB Ports
          in: formData
          name: recorder[usb]
          required: false
          type: string
        - description: SD Card (GB)
          in: formData
          name: recorder[sdhc]
          required: false
          type: string
        - description: Mobile Access
          in: formData
          name: recorder[mobile_access]
          required: false
          type: string
        - description: Alarms
          in: formData
          name: recorder[alarms]
          required: false
          type: string
        - description: Raid Support
          in: formData
          name: recorder[raid_support]
          required: false
          type: string
        - description: Internal Storage
          in: formData
          name: recorder[storage]
          required: false
          type: string
        - description: Additional Information
          in: formData
          name: recorder[additional_information]
          required: false
          type: string
        - description: Default Username
          in: formData
          name: recorder[default_username]
          required: false
          type: string
        - description: Default Password
          in: formData
          name: recorder[default_password]
          required: false
          type: string
        - description: JPEG URL
          in: formData
          name: recorder[jpeg_url]
          required: false
          type: string
        - description: H264 URL
          in: formData
          name: recorder[h264_url]
          required: false
          type: string
        - description: MJPEG URL
          in: formData
          name: recorder[mjpeg_url]
          required: false
          type: string
        - description: Official URL
          in: formData
          name: recorder[official_url]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: Not Acceptable
      summary: Creates a new Recorder
      tags:
        - recorders
  /api/v1/recorders/search.json:
    get:
      operationId: Api::V1::Recorders#search
      parameters:
        - description: Page number
          in: query
          name: page
          required: false
          type: integer
        - description: Model
          in: query
          name: q[model_cont]
          required: false
          type: string
        - description: Vendor
          in: query
          name: q[vendor_name_cont]
          required: false
          type: string
        - description: SD Card (GB)
          in: query
          name: q[sdhc_eq]
          required: false
          type: string
        - description: Type
          in: query
          name: q[type_eq]
          required: false
          type: string
        - description: Resolution
          in: query
          name: q[resolution_eq]
          required: false
          type: string
        - description: Input Channels
          in: query
          name: q[input_channels_eq]
          required: false
          type: string
        - description: Playback Channels
          in: query
          name: q[playback_channels_eq]
          required: false
          type: string
        - description: ONVIF
          in: query
          name: q[onvif_true]
          required: false
          type: string
        - description: PSIA
          in: query
          name: q[psia_true]
          required: false
          type: string
        - description: PTZ
          in: query
          name: q[ptz_true]
          required: false
          type: string
        - description: SD Card
          in: query
          name: q[sd_card_true]
          required: false
          type: string
        - description: UPnP
          in: query
          name: q[upnp_true]
          required: false
          type: string
        - description: Audio In
          in: query
          name: q[audio_in_true]
          required: false
          type: string
        - description: Audio Out
          in: query
          name: q[audio_out_true]
          required: false
          type: string
        - description: HDMI Support
          in: query
          name: q[hdmi_true]
          required: false
          type: string
        - description: Hot Swap
          in: query
          name: q[hot_swap_true]
          required: false
          type: string
        - description: 3rd pparty Camera Support
          in: query
          name: q[support_3rdparty_true]
          required: false
          type: string
        - description: Digital I/O
          in: query
          name: q[digital_io_true]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: The request you made is not acceptable
        "416":
          description: Requested Range Not Satisfiable
      summary: Searches all Recorders
      tags:
        - recorders
  "/api/v1/recorders/{id}.json":
    get:
      operationId: Api::V1::Recorders#show
      parameters:
        - description: Recorder ID
          in: path
          name: id
          required: true
          type: integer
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Fetches a single Recorder
      tags:
        - recorders
    patch:
      parameters:
        - description: Recorder ID
          in: path
          name: id
          required: true
          type: string
        - description: Vendor ID
          in: formData
          name: vendor_id
          required: true
          type: string
        - description: Model
          in: formData
          name: recorder[model]
          required: true
          type: string
        - description: Name
          in: formData
          name: recorder[name]
          required: true
          type: string
        - description: Type
          in: formData
          name: recorder[recorder_type]
          required: true
          type: string
        - description: Resolution
          in: formData
          name: recorder[resolution]
          required: false
          type: string
        - description: ONVIF
          in: formData
          name: recorder[onvif]
          required: false
          type: string
        - description: PSIA
          in: formData
          name: recorder[psia]
          required: false
          type: string
        - description: PTZ
          in: formData
          name: recorder[ptz]
          required: false
          type: string
        - description: Discontinued
          in: formData
          name: recorder[discontinued]
          required: false
          type: string
        - description: 3rd pparty Camera Support
          in: formData
          name: recorder[support_3rdparty]
          required: false
          type: string
        - description: SD Card
          in: formData
          name: recorder[sd_card]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: recorder[upnp]
          required: false
          type: string
        - description: Hot Swap
          in: formData
          name: recorder[hot_swap]
          required: false
          type: string
        - description: HDMI Support
          in: formData
          name: recorder[hdmi]
          required: false
          type: string
        - description: Digital I/O
          in: formData
          name: recorder[digital_io]
          required: false
          type: string
        - description: Audio In
          in: formData
          name: recorder[audio_in]
          required: false
          type: string
        - description: Audio Out
          in: formData
          name: recorder[audio_out]
          required: false
          type: string
        - description: Input Channels
          in: formData
          name: recorder[input_channels]
          required: false
          type: string
        - description: Playback Channels
          in: formData
          name: recorder[playback_channels]
          required: false
          type: string
        - description: USB Ports
          in: formData
          name: recorder[usb]
          required: false
          type: string
        - description: SD Card (GB)
          in: formData
          name: recorder[sdhc]
          required: false
          type: string
        - description: Mobile Access
          in: formData
          name: recorder[mobile_access]
          required: false
          type: string
        - description: Alarms
          in: formData
          name: recorder[alarms]
          required: false
          type: string
        - description: Raid Support
          in: formData
          name: recorder[raid_support]
          required: false
          type: string
        - description: Internal Storage
          in: formData
          name: recorder[storage]
          required: false
          type: string
        - description: Additional Information
          in: formData
          name: recorder[additional_information]
          required: false
          type: string
        - description: Default Username
          in: formData
          name: recorder[default_username]
          required: false
          type: string
        - description: Default Password
          in: formData
          name: recorder[default_password]
          required: false
          type: string
        - description: JPEG URL
          in: formData
          name: recorder[jpeg_url]
          required: false
          type: string
        - description: H264 URL
          in: formData
          name: recorder[h264_url]
          required: false
          type: string
        - description: MJPEG URL
          in: formData
          name: recorder[mjpeg_url]
          required: false
          type: string
        - description: Official URL
          in: formData
          name: recorder[official_url]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Updates an existing Recorder
      tags:
        - recorders
    put:
      parameters:
        - description: Recorder ID
          in: path
          name: id
          required: true
          type: string
        - description: Vendor ID
          in: formData
          name: vendor_id
          required: true
          type: string
        - description: Model
          in: formData
          name: recorder[model]
          required: true
          type: string
        - description: Name
          in: formData
          name: recorder[name]
          required: true
          type: string
        - description: Type
          in: formData
          name: recorder[recorder_type]
          required: true
          type: string
        - description: Resolution
          in: formData
          name: recorder[resolution]
          required: false
          type: string
        - description: ONVIF
          in: formData
          name: recorder[onvif]
          required: false
          type: string
        - description: PSIA
          in: formData
          name: recorder[psia]
          required: false
          type: string
        - description: PTZ
          in: formData
          name: recorder[ptz]
          required: false
          type: string
        - description: Discontinued
          in: formData
          name: recorder[discontinued]
          required: false
          type: string
        - description: 3rd pparty Camera Support
          in: formData
          name: recorder[support_3rdparty]
          required: false
          type: string
        - description: SD Card
          in: formData
          name: recorder[sd_card]
          required: false
          type: string
        - description: UPnP
          in: formData
          name: recorder[upnp]
          required: false
          type: string
        - description: Hot Swap
          in: formData
          name: recorder[hot_swap]
          required: false
          type: string
        - description: HDMI Support
          in: formData
          name: recorder[hdmi]
          required: false
          type: string
        - description: Digital I/O
          in: formData
          name: recorder[digital_io]
          required: false
          type: string
        - description: Audio In
          in: formData
          name: recorder[audio_in]
          required: false
          type: string
        - description: Audio Out
          in: formData
          name: recorder[audio_out]
          required: false
          type: string
        - description: Input Channels
          in: formData
          name: recorder[input_channels]
          required: false
          type: string
        - description: Playback Channels
          in: formData
          name: recorder[playback_channels]
          required: false
          type: string
        - description: USB Ports
          in: formData
          name: recorder[usb]
          required: false
          type: string
        - description: SD Card (GB)
          in: formData
          name: recorder[sdhc]
          required: false
          type: string
        - description: Mobile Access
          in: formData
          name: recorder[mobile_access]
          required: false
          type: string
        - description: Alarms
          in: formData
          name: recorder[alarms]
          required: false
          type: string
        - description: Raid Support
          in: formData
          name: recorder[raid_support]
          required: false
          type: string
        - description: Internal Storage
          in: formData
          name: recorder[storage]
          required: false
          type: string
        - description: Additional Information
          in: formData
          name: recorder[additional_information]
          required: false
          type: string
        - description: Default Username
          in: formData
          name: recorder[default_username]
          required: false
          type: string
        - description: Default Password
          in: formData
          name: recorder[default_password]
          required: false
          type: string
        - description: JPEG URL
          in: formData
          name: recorder[jpeg_url]
          required: false
          type: string
        - description: H264 URL
          in: formData
          name: recorder[h264_url]
          required: false
          type: string
        - description: MJPEG URL
          in: formData
          name: recorder[mjpeg_url]
          required: false
          type: string
        - description: Official URL
          in: formData
          name: recorder[official_url]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Updates an existing Recorder
      tags:
        - recorders
  /api/v1/vendors.json:
    get:
      operationId: Api::V1::Vendors#index
      parameters:
        - description: Page number
          in: query
          name: page
          required: false
          type: integer
        - description: Sort order
          in: query
          name: order
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: The request you made is not acceptable
        "416":
          description: Requested Range Not Satisfiable
      summary: Fetches all Vendors
      tags:
        - vendors
    post:
      operationId: Api::V1::Vendors#create
      parameters:
        - description: Name
          in: formData
          name: vendor[name]
          required: true
          type: string
        - description: Info.
          in: formData
          name: vendor[info]
          required: false
          type: string
        - description: Website
          in: formData
          name: vendor[url]
          required: false
          type: string
        - description: MAC
          in: formData
          name: vendor[mac]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "406":
          description: Not Acceptable
      summary: Creates a new Vendor
      tags:
        - vendors
  "/api/v1/vendors/{id}.json":
    get:
      operationId: Api::V1::Vendors#show
      parameters:
        - description: Vendor ID
          in: path
          name: id
          required: true
          type: string
        - description: Sort order
          in: query
          name: order
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Fetches a single Vendor
      tags:
        - vendors
    patch:
      parameters:
        - description: Vendor ID
          in: path
          name: id
          required: true
          type: string
        - description: Name
          in: formData
          name: vendor[name]
          required: false
          type: string
        - description: Info.
          in: formData
          name: vendor[info]
          required: false
          type: string
        - description: Website
          in: formData
          name: vendor[url]
          required: false
          type: string
        - description: MAC
          in: formData
          name: vendor[mac]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Updates an existing Vendor
      tags:
        - vendors
    put:
      parameters:
        - description: Vendor ID
          in: path
          name: id
          required: true
          type: string
        - description: Name
          in: formData
          name: vendor[name]
          required: false
          type: string
        - description: Info.
          in: formData
          name: vendor[info]
          required: false
          type: string
        - description: Website
          in: formData
          name: vendor[url]
          required: false
          type: string
        - description: MAC
          in: formData
          name: vendor[mac]
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "406":
          description: Not Acceptable
      summary: Updates an existing Vendor
      tags:
        - vendors
