openapi: 3.2.0 info: title: DEVICES Cameras API version: 3.0.0 description: All core operations on cameras. servers: - url: https://{BaseUrl}/api/v3.0 description: Eagle Eye Networks API Server variables: BaseUrl: default: api.cxxx.eagleeyenetworks.com description: HTTPS Base url to use for all API calls, retrieved from https://api.eagleeyenetworks.com/api/v3.0/clientSettings security: - bearerAuth: [] tags: - name: Cameras description: All core operations on cameras. paths: /cameras: get: operationId: listCameras description: 'This endpoint allows you to retrieve a list of cameras associated with the account, with the ability to filter by account ID, location ID, bridge ID, multi-camera ID, and tags. It also supports pagination and the ability to include additional information about cameras. It is important to note that after using the pageSize parameter, the "totalSize" in the response represents the total number of available cameras, not the number of cameras resulting from the query string.' tags: - Cameras parameters: - $ref: '#/components/parameters/locationId__in' - $ref: '#/components/parameters/bridgeId__in' - $ref: '#/components/parameters/multiCameraId' - $ref: '#/components/parameters/multiCameraId__ne' - $ref: '#/components/parameters/multiCameraId__in' - $ref: '#/components/parameters/tags__contains' - $ref: '#/components/parameters/tags__any' - $ref: '#/components/parameters/packages__contains' - $ref: '#/components/parameters/layoutId' - $ref: '#/components/parameters/name__contains' - $ref: '#/components/parameters/name__in' - $ref: '#/components/parameters/name' - $ref: '#/components/parameters/id__in' - $ref: '#/components/parameters/id__notIn' - $ref: '#/components/parameters/id__contains' - $ref: '#/components/parameters/shared' - $ref: '#/components/parameters/sharedCameraAccount' - $ref: '#/components/parameters/firstResponder' - $ref: '#/components/parameters/directToCloud' - $ref: '#/components/parameters/speakerId__in' - $ref: '#/components/parameters/speakerId__ne' - $ref: '#/components/parameters/q' - $ref: '#/components/parameters/qRelevance__gte' - $ref: '#/components/parameters/enabledAnalytics__contains' - $ref: '#/components/parameters/status__in' - $ref: '#/components/parameters/status__ne' - $ref: '#/components/parameters/includeForList' - $ref: '#/components/parameters/pageToken' - $ref: '#/components/parameters/pageSize' - $ref: '#/components/parameters/sort' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApiPaginatedCameraResponse' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: List cameras x-summary-source: derived post: operationId: addCamera description: Associates a camera with the account. This can only be called with an end-user account, and will result in an error if tried with any other type of account. tags: - Cameras requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiAddCamera' responses: '201': description: Camera added content: application/json: schema: $ref: '#/components/schemas/ApiCameraMain' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '409': description: There was a conflict while trying to perform your request. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' examples: deviceIdentificationFailed: description: 'Part of adding a camera is identifying its make, model and sometimes firmware version to decide if it is supported. This can fail due to various reasons such as unexpected API responses from the camera, or an unsupported camera make (manufacturer). If this problem occurs, a user could try to restart the camera, reset it, or if that fails contacting support to check the brand & model are supported. ' value: code: 409 status: aborted message: 'Camera addition job aborted: failed to identify device make and model.' details: - type: errorInfo reason: deviceIdentificationFailed domain: add.cameras.job metadata: path: /api/v3.0/cameras unsupportedModel: description: 'Camera''s model is not supported and cannot be added to the system. The camera might just be of a not supported model. Check the supported models on our website or with our support. ' value: code: 409 status: aborted message: 'Camera addition job aborted: Camera''s model is not supported.' details: - type: errorInfo reason: unsupportedModel domain: add.cameras.job metadata: path: /api/v3.0/cameras credentialValidationFailed: description: 'The camera could not be configured because it''s using unknown credentials. Make sure to factory default reset the camera before trying again. ' value: code: 409 status: aborted message: 'Camera addition job aborted: camera uses unknown credentials. Factory reset the camera before retrying.' details: - type: errorInfo reason: credentialValidationFailed domain: add.cameras.job metadata: path: /api/v3.0/cameras localUrlValidationFailed: description: 'One step of the camera addition is to retrieve the URL used in the local network where the camera is. This step could not be performed. Possible reasons: the camera or the network is offline. ' value: code: 409 status: aborted message: 'Camera addition job aborted: failed to retrieve the camera''s local URL.' details: - type: errorInfo reason: localUrlValidationFailed domain: add.cameras.job metadata: path: /api/v3.0/cameras alreadyExists: description: 'The camera you''re trying to add is already added or currently being added in the system. There cannot be duplicated camera (using the same MAC address or GUID). Make sure to remove the existing one before you proceed to add it again. ' value: code: 409 status: conflict message: The resource already exists. details: - type: errorInfo reason: alreadyExists domain: apiv3 metadata: path: /api/v3.0/ quotaExceeded: description: 'Your bridge only supports a maximum of 10 cameras. You cannot add more cameras to it. ' value: code: 409 status: conflict message: Cannot add camera. Bridge only supports 10 cameras. details: - type: errorInfo reason: quotaExceeded domain: apiv3 metadata: path: /api/v3.0/cameras '500': description: The request encountered an internal error. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' examples: hwRegistrationFailed: description: 'One of the internal service failed to be reached and therefore the camera could not start its addition process. Try again or contact support if the error persist. ' value: code: 500 status: internal message: Unexpected error while registering the MAC address in order to initiate the camera addition. details: - type: errorInfo reason: hwRegistrationFailed domain: add.cameras.job metadata: path: /api/v3.0/cameras credentialSetupFailed: description: 'Our system encountered an unexpected error while preparing the credentials to use for configuring the camera. Try again or contact support if the error persist. ' value: code: 500 status: internal message: Unexpected error while preparing the credentials to be set to the camera. Please retry or contact our support. details: - type: errorInfo reason: credentialSetupFailed domain: add.cameras.job metadata: path: /api/v3.0/cameras failedAddingCameraAfterValidation: description: 'Our system encountered an unexpected error while taking the last step for adding the camera. This is an error on the system side not on the camera side. The camera is possibly reset to factory default. Please try again or contact our support if the problem persists. ' value: code: 500 status: internal message: Unexpected error while finalizing the camera addition. Please retry or contact our support. details: - type: errorInfo reason: failedAddingCameraAfterValidation domain: add.cameras.job metadata: path: /api/v3.0/cameras '504': description: The request had a deadline that expired before the operation completed. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' examples: neverConnected: description: 'The camera addition process failed because the camera did not communicate with our system for at least 3 minutes. Make sure the camera has reliable internet connection, or try to factory default reset the camera before trying again. ' value: code: 504 status: deadlineExceeded message: 'Camera addition job deadline exceeded: the camera never connected. Make sure it has an internet connection and is turned on.' details: - type: errorInfo reason: neverConnected domain: add.cameras.job metadata: path: /api/v3.0/cameras reconnectFailed: description: 'The camera addition process failed because the camera did not connect to our system after the initial validation step. This can happen if the camera lost internet connection for instance. You may need to factory default reset your camera before being able to add it again. ' value: code: 504 status: deadlineExceeded message: 'Camera addition job deadline exceeded: after the camera validation succeeded, the camera didn''t reconnect in time.' details: - type: errorInfo reason: reconnectFailed domain: add.cameras.job metadata: path: /api/v3.0/cameras summary: Add camera x-summary-source: derived /cameras/{cameraId}: parameters: - $ref: '#/components/parameters/cameraId' get: operationId: getCamera description: Retrieves the given camera. tags: - Cameras parameters: - $ref: '#/components/parameters/includeForSingle' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApiCameraForSingle' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Get camera x-summary-source: derived delete: operationId: deleteCamera description: This endpoint disassociates the camera from the account, removing all references, recordings, and events, and in some cases resetting the camera to factory default settings. This request will be blocked until the camera has been fully removed. tags: - Cameras responses: '204': description: Camera deleted. '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Delete camera x-summary-source: derived patch: operationId: updateCamera description: This endpoint allows the developers to update a specific camera by providing update fields. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiCameraUpdate' tags: - Cameras responses: '204': description: Camera Updated '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Update camera x-summary-source: derived /cameras/{cameraId}/io/ports: parameters: - $ref: '#/components/parameters/cameraId' - $ref: '#/components/parameters/pageToken' - $ref: '#/components/parameters/pageSize' get: operationId: getPorts parameters: - $ref: '#/components/parameters/include' description: Retrieves list of device IO ports. tags: - Cameras responses: '200': description: Successfully fetched. content: application/json: schema: $ref: '#/components/schemas/PaginatedPortResponse' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Get ports x-summary-source: derived /cameras/{cameraId}/io/ports/{portId}: parameters: - $ref: '#/components/parameters/cameraId' - $ref: '#/components/parameters/portId' get: operationId: getPort parameters: - $ref: '#/components/parameters/include' description: Retrieves the device port. tags: - Cameras responses: '200': description: Successfully fetched. content: application/json: schema: $ref: '#/components/schemas/PortGet' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Get port x-summary-source: derived patch: operationId: updatePort description: Update the port configuration. Allowed properties depends on the port type. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PortPatch' tags: - Cameras responses: '204': description: Port Updated '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Update port x-summary-source: derived /cameras/{cameraId}/metrics: get: description: Returns metrics data. operationId: getCameraMetrics parameters: - $ref: '#/components/parameters/cameraId' - $ref: '#/components/parameters/timestamp__lte' - $ref: '#/components/parameters/timestamp__gte' - $ref: '#/components/parameters/target__in' - $ref: '#/components/parameters/period' tags: - Cameras responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MetricQueryResponse' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Get camera metrics x-summary-source: derived /cameras/{cameraId}/settings: parameters: - $ref: '#/components/parameters/cameraId' get: operationId: getCameraSettings tags: - Cameras parameters: - $ref: '#/components/parameters/include1' description: 'Retrieves the current settings for the given camera. Since cameras, the bridge they are connected to and the accounts they are part of can have different capabilities, not all settings given in this specification will be applicable to all cameras. If a setting is applicable, it will be returned by the API, if not, the field(s) will be skipped.' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CameraSettings' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Get camera settings x-summary-source: derived patch: operationId: updateCameraSettings requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CameraSettings' tags: - Cameras description: 'Updates the settings of a camera. It will throw an error if the setting in the payload is not supported by a camera type. It won''t apply any settings in case of error.' responses: '204': description: Camera Updated '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Update camera settings x-summary-source: derived /cameras/{cameraId}/tunnel: parameters: - $ref: '#/components/parameters/cameraId' put: operationId: putCameraTunnel description: Opens a camera tunnel. As this API is intended for incidental access to the cameras UI, it should not be used for general API integration. tags: - Cameras requestBody: required: true content: application/json: schema: type: object additionalProperties: false responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApiTunnelResponse' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Put camera tunnel x-summary-source: derived delete: operationId: deleteCameraTunnel description: Deletes a camera tunnel. tags: - Cameras responses: '204': description: Camera tunnel deleted. '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '500': $ref: '#/components/responses/internalServerError' summary: Delete camera tunnel x-summary-source: derived /cameras/{cameraId}:swap: parameters: - $ref: '#/components/parameters/cameraId' patch: operationId: swapCamera description: 'Swap any camera with a new one. If the device is not visible by the bridge, API is going to throw a 404 error. If the GUID has already been attached to the account, API is going to throw a 409 error. If the provided GUID is in wrong format, API is going to throw 400 error.' tags: - Cameras requestBody: content: application/json: schema: $ref: '#/components/schemas/CameraSwap' responses: '204': description: Camera swap operation success. '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/resourceNotFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' summary: Swap camera x-summary-source: derived /cameras:bulkUpdate: post: operationId: updateBulkCameras description: This endpoint allows the developer to update multiple cameras at once by providing update fields. tags: - Cameras requestBody: content: application/json: schema: $ref: '#/components/schemas/ApiUpdateBulkCamera' responses: '201': description: Cameras updated content: application/json: schema: $ref: '#/components/schemas/CameraBulkUpdate' '400': $ref: '#/components/responses/validationError' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '500': $ref: '#/components/responses/internalServerError' summary: Update bulk cameras x-summary-source: derived components: parameters: firstResponder: in: query name: shareDetails.firstResponder description: 'If set to `true`, only cameras that are shared with the current account using the "First responder" feature will be returned. If set to `false`, the cameras that are shared with the current account using the "First responder" feature will be filtered out. ' schema: type: boolean enabledAnalytics__contains: in: query name: enabledAnalytics__contains required: false description: Only return cameras that have enabled all analytics in the comma-separated list. style: form explode: false schema: type: array example: - een.tamperDetectionEvent.v1 items: type: string layoutId: in: query name: layoutId required: false description: Filter to get cameras that are part of the given layout. schema: type: string timestamp__lte: in: query name: timestamp__lte description: Maximum timestamp to list metrics. Defaults to now. schema: type: string format: date-time example: '2023-04-04T11:48:52.000Z' sharedCameraAccount: in: query name: shareDetails.accountId description: Filter to get the cameras that are shared from the provided account. schema: type: string id__notIn: in: query name: id__notIn description: Filter to exlude the cameras whose ids are in the provided list. The lookup is exact and case insensitive. schema: type: array items: type: string style: form explode: false speakerId__ne: in: query name: speakerId__ne required: false description: 'Filter to get cameras whose speakerId is not equal to the given value. Use `speakerId__ne=null` to return only cameras that have a speakerId assigned. ' schema: type: - string - 'null' target__in: in: query required: true name: target__in description: "Comma separated list of metric types. The following targets are available:\n * `kilobytesOnDisk` - shows how much storage capacity is used on bridge.\n * `bytesPurged` - shows how much data was purged. Data is marked as purged if it is removed before Minimum On Premise Retention is met.\n * `bytesStored` - shows how much data was stored.\n * `bytesFreed` - shows how much data was freed, includes purges.\n * `bandwidthBackground` - extra data that contains data from the past\nwhich bridge is sending to try to meet cloud retention goals and the data that are requested from cloud e.g when user is viewing a video.\n * `bandwidthRealtime` - the minimum amount of data, required to keep the camera operational.\n" style: form explode: false schema: type: array example: - kilobytesOnDisk minItems: 1 items: type: string enum: - kilobytesOnDisk - bytesPurged - bytesStored - bytesFreed - bandwidthBackground - bandwidthRealtime sort: in: query name: sort description: "Comma separated list of of fields that should be sorted.\n * `sort=` - not providing any value will result in error 400\n * `sort=+name,+name` - same values will result in error 400\n * `sort=-name,+name` - mutially exclusive values will return error 400\n * maxItem=3 - Only Three values will be accepted, more will return error 400\n * qRelevance is optional ordering parameter which is available if q filter is used, if q filter is not passed qRelevance as ordering parameter will return error 400 \n" schema: type: array default: - +name items: type: string maxItems: 3 enum: - -name - -locationSummary.name - -bridgeSummary.name - -qRelevance - +name - +locationSummary.name - +bridgeSummary.name - +qRelevance example: - +name - -locationSummary.name style: form explode: false packages__contains: in: query name: packages__contains required: false description: Only return cameras that have enabled all packages in the list, separated by commas. style: form explode: false schema: type: array example: - een.vsp items: type: string name__contains: in: query name: name__contains description: 'Filter to get the cameras whose the name contains the provided substring. The lookup is exact and case insensitive ' schema: type: string locationId__in: in: query name: locationId__in required: false description: List of Location IDs to filter on that is comma separated. style: form explode: false schema: type: array example: - 2428fda3-389f-48ce-b062-85875dd6b2e2 items: type: string qRelevance__gte: in: query name: qRelevance__gte description: 'Sets the current minimum similarity threshold that is used with the `q` parameter. The threshold must be between 0 and 1 (float, default is 0.5). ' schema: type: number format: float minimum: 0 maximum: 1 example: 0.5 bridgeId__in: in: query name: bridgeId__in required: false description: List of Bridge IDs to filter on that is comma separated. style: form explode: false schema: $ref: '#/components/schemas/ApiEsns' speakerId__in: in: query name: speakerId__in required: false description: Filter to get cameras that are a part of the given speaker esn. schema: type: array items: type: string style: form explode: false period: in: query name: period description: Defaults to hour. It performs linear interpolation to get to the target period. schema: type: string enum: - day - hour - minute cameraId: in: path name: cameraId schema: type: string required: true multiCameraId__in: in: query name: multiCameraId__in required: false description: List of multi camera IDs to filter on that is comma seperated. style: form explode: false schema: $ref: '#/components/schemas/ApiEsns' include: in: query name: include style: form explode: false schema: type: array items: type: string enum: - status - rules status__ne: in: query name: status__ne description: Filter to get the devices with status that is not equal to the provided value. The lookup is exact and case insensitive. schema: type: array items: $ref: '#/components/schemas/DeviceConnectionStatus' example: - online - error style: form explode: false required: false timestamp__gte: in: query name: timestamp__gte description: Minimum timestamp to list metrics. Defaults to 7 days ago. schema: type: string format: date-time example: '2023-04-04T09:38:37.372Z' status__in: in: query name: status__in description: Filter to get the devices with the specified status. The lookup is exact and case insensitive. schema: type: array items: $ref: '#/components/schemas/DeviceConnectionStatus' example: - online - error style: form explode: false required: false multiCameraId: in: query name: multiCameraId required: false description: Filter to get cameras with given multiCameraId. multiCameraId=null returns cameras that are not multi camera cameras. schema: $ref: '#/components/schemas/ApiEsn' shared: in: query name: shareDetails.shared description: 'If set to `true`, only cameras that are shared with the current account by another account will be returned. If set to `false`, the cameras that are shared with the current account will be filtered out. ' schema: type: boolean id__contains: in: query name: id__contains description: 'Filter to get the cameras whose the id contains the provided substring. The lookup is exact and case insensitive ' schema: type: string include1: in: query name: include style: form explode: false schema: type: array items: type: string enum: - schema - proposedValues q: in: query name: q description: 'Text search that is applied to multiple fields. The fields being searched are defined by the backend and can be changed without warning. Example fields being searched are metadata fields of the camera itself such as `id`, `name`, `notes`, `timezone`, `multiCameraId`, `speakerId` and `tags`; the important ids such as `accountId`, `bridgeId`, and, `locationId`, and metadata of important linked resources such as the location, bridge, share details, device position, device info and the viewports configured for the camera. ' schema: type: string example: entrance name__in: in: query name: name__in description: Filter to get the cameras whose name is on the provided list. The lookup is exact and case insensitive. schema: type: array items: type: string style: form explode: false tags__contains: in: query name: tags__contains required: false description: Only return cameras that have all tags in the list, separated by commas. style: form explode: false schema: type: array example: - string items: type: string tags__any: in: query name: tags__any required: false description: Only return cameras that have one or more of the tags in the list, separated by commas. style: form explode: false schema: type: array example: - string items: type: string directToCloud: in: query name: deviceInfo.directToCloud description: 'If set to `true`, only cameras that connect directly to the VMS cloud, and not through a bridge will be returned. If set to `false`, the cameras that connect directly to the VMS cloud will be filtered out. ' schema: type: boolean multiCameraId__ne: in: query name: multiCameraId__ne required: false description: Filter to get cameras with multiCameraId that is not equal to given value. schema: $ref: '#/components/schemas/ApiEsn' includeForSingle: in: query name: include style: form explode: false schema: type: array items: type: string enum: - status - statusV2 - locationSummary - bridgeSummary - deviceAddress - timeZone - notes - tags - devicePosition - networkInfo - deviceInfo - firmware - visibleByBridges - capabilities - effectivePermissions - shareDetails - analog - packages - dewarpConfig - enabledAnalytics portId: in: path name: portId schema: type: string required: true pageSize: in: query name: pageSize description: 'The number of entries to return per page. The maximum range of valid page sizes is documented with minimum and maximum values, but the range might be further limited dynamically based on the requested information, account, and system status. Values outside of the (dynamic) allowed range will not result in an error, but will be clamped to the nearest limit. Thus, logic to detect the last page should not be based on comparing the requested size with the received size, but on the existence of a `nextPageToken` value. ' example: 100 required: false schema: type: integer minimum: 1 maximum: 500 default: 100 includeForList: in: query name: include style: form explode: false schema: type: array items: type: string enum: - status - statusV2 - locationSummary - bridgeSummary - deviceAddress - timeZone - notes - tags - devicePosition - networkInfo - deviceInfo - firmware - visibleByBridges - capabilities - effectivePermissions - shareDetails - analog - qRelevance - packages - dewarpConfig - adminCredentials - publicSafetySharing - enabledAnalytics id__in: in: query name: id__in description: Filter to get the cameras whose id is on the provided list. The lookup is exact and case insensitive. schema: type: array items: type: string style: form explode: false name: in: query name: name description: Filter to get the cameras with the specified name. The lookup is exact and case insensitive. schema: type: string pageToken: in: query name: pageToken description: 'Token string value that references a page for pagination. This value is received when retrieving the first page in the `nextPageToken` and `prevPageToken` fields. When a pageToken is provided, the backend remembers search parameters from the original request, so search parameters that affect the result set or order are optional and will be ignored if provided. Representation parameters like `include` should still be applied. ' example: b2Zmc2V0PTEwJmxpbWl0PTEw required: false schema: type: string schemas: PreviewResolutionQualities: type: object description: Specification for qualities supported by the camera. additionalProperties: $ref: '#/components/schemas/PreviewQualitiesItem' CameraSwap: type: object properties: guid: allOf: - $ref: '#/components/schemas/Guid' - description: Represents a new camera ExceptionDetail: type: object oneOf: - $ref: '#/components/schemas/ErrorInfoExceptionDetail' - $ref: '#/components/schemas/BadRequestExceptionDetail' - $ref: '#/components/schemas/ResourceInfoExceptionDetail' discriminator: propertyName: type mapping: errorInfo: '#/components/schemas/ErrorInfoExceptionDetail' badRequest: '#/components/schemas/BadRequestExceptionDetail' resourceInfo: '#/components/schemas/ResourceInfoExceptionDetail' properties: type: description: A string enum describing the type of detail object. type: string enum: - errorInfo - badRequest - resourceInfo required: - type TalkdownSettings: type: object properties: protocol: type: string description: Specifies the audio communication protocol. example: sip audioMode: type: string description: Specifies mode of audio communication. enum: - disabled - talkDown - twoWayAudio sipCredentials: allOf: - description: 'The credentials that will be used to authenticate SIP sessions. ' - $ref: '#/components/schemas/ApiDeviceCredentials' TimeZoneString: type: string example: America/Chicago description: 'The timezone the device is in. The list of supported timezones is provided by the /timeZones endpoint. Changing the time zone will change the time zone for the bridge and attached cameras. ' ApiCameraForSingle: allOf: - $ref: '#/components/schemas/ApiCameraMain' - $ref: '#/components/schemas/ApiCameraIncludes' DeviceTags: type: array maxItems: 64 items: type: string minLength: 1 maxLength: 64 ApiV3Error: type: object properties: code: description: HTTP code defined in EEN Standard Code Values type: integer status: description: A string enum describing the code type: string enum: - cancelled - unknown - invalidArgument - deadlineExceeded - notFound - conflict - permissionDenied - resourceExhausted - failedPrecondition - aborted - outOfRange - unimplemented - internal - unavailable - dataLoss - unauthenticated - mediaTypeNotSupported - acceptNotSupported - methodNotSupported - tooManyRequests - badGateway message: description: Developer friendly human readable error message in English type: string details: description: An array of extensible objects that define error information type: array items: $ref: '#/components/schemas/ExceptionDetail' required: - code - status - message - details BadRequestExceptionDetail: properties: type: description: A string enum describing the type of detail object. type: string enum: - badRequest argumentViolations: type: array items: $ref: '#/components/schemas/ArgumentViolation' PublicSafetySharing: type: object properties: enabled: description: Indicates whether the device is shared with public safety agencies. type: boolean example: false SpeakerId: description: 'Optional unique identifier of the speaker device associated with this camera. This should be a speaker that is audible to anyone visible in the camera view, allowing an operator to talk to visible people. ' type: - string - 'null' example: 10039dab deviceCloudConnectionStatusV2: description: "Socket connection state between device and cloud\n * `connected`: The device socket connected to cloud.\n * `disconnected`: The device socket disconnected from cloud.\n" type: string enum: - connected - disconnected example: connected EffectiveCameraPermissions: readOnly: true type: object x-jsoninclude-nonnull-annotation: true properties: read: type: boolean addToLayout: type: boolean viewPreviewVideo: type: boolean description: View preview images from cameras viewLiveVideo: type: boolean description: View full resolution video live viewHistoricVideo: type: boolean description: View historic video turnOnOff: type: boolean description: Turn Camera on/off controlPTZ: type: boolean description: Control Pan, Tilt, Zoom, & recall stations while viewing a preview or live video of PTZ cameras editPTZStations: type: boolean description: Set PTZ mode and create, delete, edit stations downloadVideo: type: boolean description: Download preview and full resolution video delete: type: boolean editBillingSettings: type: boolean description: Editing all Camera Settings editNoBillingSettings: type: boolean description: Edit Camera Settings except for those that affect billing, like Cloud Retention and Full Video Resolution editMotionAreas: type: boolean description: 'Set Motion object size and sensitivity, add/delete regions, add/delete alerts for regions. Edit and view existing Analytics. Set object size and sensitivity, add/delete alerts ' talkDown: type: boolean description: Allows the users to initiate Talk Down to the camera field(s) of view ApiCameraMain: type: object properties: id: type: string accountId: type: string name: $ref: '#/components/schemas/DeviceName' bridgeId: $ref: '#/components/schemas/BridgeId' locationId: $ref: '#/components/schemas/LocationId' multiCameraId: type: - string - 'null' createTimestamp: type: string format: date-time example: '2023-04-04T09:38:37.372Z' readOnly: true required: - id - accountId - name - bridgeId - createTimestamp ApiDewarpConfigComposite: type: object properties: id: type: string description: Composite ID. example: 41770c16-600f-4ad5-a0d0-1fb96905603e readOnly: true name: type: string description: Human given name of the composite. example: Quad view aspect: type: number description: Aspect ratio of resulting composite image example: 1.77778 panes: type: array minLength: 1 description: Array containing individual panes that make up composite image. items: $ref: '#/components/schemas/ApiDewarpConfigPane' ApiTimeZone: type: object x-jsoninclude-nonnull-annotation: true properties: zone: type: string example: America/Chicago description: The timezone the device is in. The list of supported timezones is provided by the [/timeZones](https://developer.eagleeyenetworks.com/reference/listtimezones) endpoint. ResourceInfoExceptionDetail: properties: type: description: A string enum describing the type of detail object. type: string enum: - resourceInfo resource: description: Referenced resource type, eg "cameras", "bridges", or "locations". type: string ids: type: array description: Identities of resources items: type: string PaginatedResponseWithSize: description: "Used to wrap results for a paginated response, containing information on how to retrieve further pages and the total number of results. \n" allOf: - $ref: '#/components/schemas/PaginatedResponseNoTotalSize' - properties: totalSize: type: integer readOnly: true description: 'Size of the total result set. ' required: - totalSize PortGet: allOf: - $ref: '#/components/schemas/Port' - type: object properties: status: $ref: '#/components/schemas/PortStatusGet' required: - id - enabled - name - type - idleCircuitState ApiNetworkInfoWithMainIp: type: object x-jsoninclude-nonnull-annotation: true properties: globalIP: $ref: '#/components/schemas/IpAddress' ipUsedByBridge: $ref: '#/components/schemas/IpUsedByBridge' adapters: type: array items: $ref: '#/components/schemas/ApiAdapterInfo' ApiDewarpConfig: type: object required: - cameraId - fov - curve - mount - scale - offset - composites properties: cameraId: type: string description: Esn identifying the camera example: 1007ff4e readOnly: true fov: type: number description: Camera Field of View example: 180 curve: type: string description: Type of dewarp curve to apply example: equidistant mount: $ref: '#/components/schemas/Mount' scale: type: object description: Scale of input video required: - x - y properties: x: type: number example: 0.5 y: type: number example: 0.5 offset: type: object description: Offset of input video required: - x - y properties: x: type: number example: 0.5 y: type: number example: 0.5 composites: type: array description: All composite objects related to this device items: $ref: '#/components/schemas/ApiDewarpConfigCompositeGetCreate' WeeklyScheduleAllRequired: type: object properties: days: $ref: '#/components/schemas/WeeklyScheduleDaysAllRequired' hours: $ref: '#/components/schemas/WeeklyScheduleHours' required: - days - hours ApiRtspCameraCreate: description: 'Schema used to describe a new virtual camera to be created that should be created based on an RTSP stream. ' allOf: - $ref: '#/components/schemas/ApiBridgedCameraCreate' - type: object properties: rtspSettings: $ref: '#/components/schemas/RtspConnectionSettings' required: - name - bridgeId - rtspSettings PortPatch: oneOf: - $ref: '#/components/schemas/Port' - $ref: '#/components/schemas/PortOutputPatch' DeviceAddress: type: object x-jsoninclude-nonnull-annotation: true description: Address of the device. properties: name: type: - string - 'null' address: type: - string - 'null' ApiDeviceInfo: type: object x-jsoninclude-nonnull-annotation: true properties: icon: description: 'This field allows UIs to roughly differentiate between camera types when displaying a list of cameras. * Important: this should not be used in any way to decide on what functionality is available for a camera, that logic should be based on the capabilities and possibly the settings endpoints. * Important: more enum values might be added in the future, clients should handle new values by having a fallback icon, eg a generic "security camera" icon. * Important: The value for a specific model might change without notice. ' type: string enum: - securityCamera - bodycam - doorbell default: securityCamera directToCloud: type: boolean description: 'Indicates the camera is connected directly to the VMS cloud, and not going through a bridge. This excludes cameras that connect through a different cloud. ' make: description: The Manufacturer or brand of the camera. type: - string - 'null' model: description: The model of the camera. type: - string - 'null' guid: $ref: '#/components/schemas/Guid' ApiUpdateBulkCamera: description: 'This object identifies the list of cameras to be updated, and the fields and their values to be updated. ' properties: ids: type: array items: type: string minItems: 1 maxItems: 500 example: - 10088cde - 10088ceb - 10088abc updateFields: type: object description: 'This defines the parameter that will be updated for list of cameras. Currently, we allow only one parameter to be updated at a time. ' properties: speakerId: type: - string - 'null' example: 10039dab locationId: $ref: '#/components/schemas/LocationId' 'on': type: boolean example: true description: Start/stop recording images and video. required: - ids - updateFields Retention: type: object properties: cloudDays: type: integer minimum: 1 description: Number of days that recorded video will be kept in the cloud. cloudPreviewOnly: type: boolean description: 'Allows previews to be transmitted to cloud while keeping full video locally on the CMVR. This setting is only available for cameras attached to a CMVR. ' minimumOnPremiseDays: minimum: 0 type: integer description: 'The number of days that recorded video will be kept on premise. The minimum on premise retention should be less than the maximum on premise retention. If the CMVR runs out of disk space it will delete old video to make room for the new — even if it must delete video within this retention period. If the local CMVR hard drive fills before the Minimum On Premise Retention is met, it will be displayed in camera metrics under delta storage as well as bridge metrics under delta storage as a purge. Recordings won''t be stored on premise if this setting will be set to 0. This setting is only available for cameras attached to a CMVR. ' maximumOnPremiseDays: type: integer minimum: 0 maximum: 5 description: 'The maximum on premise retention should be greater than the minimum on premise retention. Video will be kept on the CMVR for as long as possible up to the maximum, then it is deleted to make room for new video. There is no notification or graphical display of purge for the Maximum On Premise Retention. Setting this value to 0 will remove limit for maximum retention. This setting is only available for cameras attached to a CMVR. ' alwaysRecordingDays: type: integer minimum: 0 description: 'This setting is only available if `captureMode` is set to record `always`; If this setting is set to 0 then it means that it is disabled and recordings are stored based on retention settings. It sets how many days the video is kept. After “x” days, the recordings without motion or events will be purged. Recordings with motion or events will be kept for the set retention time. ' PreviewResolutions: readOnly: true type: object description: Read-only listing of resolutions and quality settings supported by the camera. additionalProperties: $ref: '#/components/schemas/PreviewResolutionsItem' example: std: width: 640 height: 360 qualities: low: kbps: 256 med: kbps: 320 ApiAxisCameraDirectCreate: description: 'Schema used to describe a new Axis camera to be created that directly connects to the cloud. ' allOf: - $ref: '#/components/schemas/ApiCameraDirectCreate' - type: object properties: oak: $ref: '#/components/schemas/oak' serial: $ref: '#/components/schemas/serial' required: - oak - serial RtspConnectionSettings: type: object allOf: - $ref: '#/components/schemas/RtspConnectionSettings' required: - ipAddress - videoResourceUrl Guid: type: - string - 'null' format: uuid example: ddfa5b34-5d04-431e-8287-110fe87edf71 Settings: type: object properties: timeZone: $ref: '#/components/schemas/TimeZoneString' rtsp: $ref: '#/components/schemas/RtspConnectionSettings' credentials: $ref: '#/components/schemas/ApiDeviceCredentials' retention: $ref: '#/components/schemas/Retention' audio: $ref: '#/components/schemas/Audio' previewVideo: $ref: '#/components/schemas/PreviewVideo' mainVideo: $ref: '#/components/schemas/MainVideo' analog: $ref: '#/components/schemas/Analog1' operatingSettings: $ref: '#/components/schemas/OperatingSettings' talkdown: $ref: '#/components/schemas/TalkdownSettings' imaging: $ref: '#/components/schemas/Imaging' Analog: type: object readOnly: true properties: input: type: - integer - 'null' description: The identifier of the analog input. example: 1 PreviewQualitiesItem: type: object properties: kbps: type: integer description: Measurement of how much video data exists per second of video footage shown as Kilobits per second. example: 256 CameraSettingProposedValues: description: Lists of proposed values to be displayed to users for each property. Although users can choose any number of days, this subset keeps the list manageable and agrees with any billing thresholds. type: object readOnly: true properties: retention: type: object properties: cloudDays: description: Proposed set of cloud retention days that the user could chose between. type: array items: type: integer example: - 1 - 2 - 3 - 5 - 7 - 14 - 28 - 30 - 31 - 60 - 90 - 180 - 365 - 730 - 1095 - 1825 cloudPreviewOnlyDays: description: Proposed set of cloud retention days that the user could choose between if they choose to keep only preview videos in the cloud. This list should replace cloudDays if cloudPreviewOnly property is set to true. type: array items: type: integer example: - 1 - 2 - 3 - 5 - 7 - 14 - 28 - 30 - 31 - 60 - 90 - 180 minimumOnPremiseDays: description: "Proposed set of minimum on-premise retention days the user could choose between. \nKeep in mind that the minimum on-premise retention days value should be less than the maximum on-premise retention days value.\n" type: array items: type: integer example: - 0 - 1 - 2 - 3 - 5 - 7 - 14 - 28 - 30 - 31 - 60 - 90 - 180 maximumOnPremiseDays: description: 'Proposed set maximum on-premise retention days the user could choose between. Keep in mind that the minimum on-premise retention days value should be less than the maximum on-premise retention days value. ' type: array items: type: integer example: - 0 - 1 - 2 - 3 - 5 - 7 - 14 - 28 - 30 - 31 - 60 - 90 - 180 - 365 PreviewVideo: type: object properties: transmitMode: type: string enum: - onDemand - always - background - event description: 'Controls when the preview video is sent to the cloud data center. The recommended mode is Always. Always means that the Preview Video is immediately sent to the cloud, but it can be limited by the bridge bandwidth. On Demand means that the Preview Video is only sent to the cloud when it is being displayed in the VMS. Event means that the Preview Video is only sent to the cloud when an event occurs on the recording. Background means that the Preview Video is only sent when bandwidth is available on the schedule for the bridge. Options ''background'' and ''event'' could lead to a bad user experience and because of this are not presented on the main VMS UI. ' resolution: type: string example: std description: Resolution of the preview video that will be recorded. Possible values can be found in the `supportedResolutions` field. intervalMs: type: integer description: 'Specifies the time interval in milliseconds between frames for the preview video. 1000ms is recommended. Lowering the value increases bandwidth usage. ' example: 250 minimum: 250 maximum: 16000 quality: type: string example: low description: 'Controls the amount of compression on the preview video. Default quality will reduce bandwidth the most. Use extreme caution when increasing it, as exceeding available bandwidth can prevent all video from being transmitted to the cloud. Possible values can be found in the `supportedResolutions` field. ' supportedResolutions: $ref: '#/components/schemas/PreviewResolutions' ApiDewarpConfigPane: type: object required: - x - y - width - height - fov - lookAt properties: x: type: string description: Top left x coordinate of pane relative to top left of composite example: 50% y: type: string description: Top left y coordinate of pane relative to top left of composite example: 50% width: type: string description: Width of pane inside of composite example: 50% height: type: string description: Height of pane inside of composite example: 50% shader: type: string description: The shader used to present the pane enum: - sphere - panorama example: sphere fov: type: number description: The field of view in degrees of the rendered view. This primarily controls zoom. example: 45 lookAt: description: The direction the camera will be pointed within the pane. Values are generated by the dewarp library. allOf: - $ref: '#/components/schemas/ApiDewarpConfigVector3' ApiCameraImageTuningCapabilities: type: object properties: continuousZoom: type: boolean description: 'Indicates that the camera supports image tuning with continuous zooming. ' default: false ApiBaseCameraCreate: type: object properties: name: $ref: '#/components/schemas/DeviceName' tags: $ref: '#/components/schemas/DeviceTags' locationId: $ref: '#/components/schemas/LocationId' devicePosition: $ref: '#/components/schemas/ApiDevicePosition' deviceAddress: $ref: '#/components/schemas/DeviceAddress' MainVideo: type: object properties: transmitMode: type: string enum: - onDemand - background - event - always description: 'Controls when the Main Video is sent to the cloud data center. The recommended value is Background. Always means that the video is immediately sent to the cloud, but it can be limited by the bridge bandwidth. This can affect available bandwidth for the business. Background means that the video is only sent when bandwidth is available on the schedule for the bridge. On Demand means that the video is only sent to the cloud when it is being displayed in the VMS. Event means that the video is only sent to the cloud when an event occurs on the recording. Options ''always'' and ''event'' could lead to a bad user experience and because of this are not presented on the main VMS UI. ' resolution: type: string example: 3MP description: 'Resolution that will be used for full frame rate H.264 recording. Possible values can be found in the `supportedResolutions` field. ' quality: type: string example: high description: 'Controls the compression rate and the frame rate on the H.264 recording. We recommend Low or Medium. Make certain you have adequate bandwidth before changing the setting higher than Low. Misconfiguration can prevent all video from being transmitted to the cloud. Possible values can be found in the `supportedResolutions` field. ' kbpsFactor: type: integer example: 1 description: 'It refers to how the camera can process the image it''s recording. It also controls the compression rate of the video recording. The setting depends greatly on the camera. We recommend leaving this at its default value. ' captureMode: type: string enum: - event - always description: 'Configures when the Main Video is recorded. By default, recording is only done when there is an event detected. This is usually when motion or an analytic event is detected. However, you can choose Always to record Main Video continuously. Use extreme caution if setting to Always, as this can use a large amount of bandwidth, which could prevent some video from being transmitted to the cloud or result in early deletion due to filled up on-premise storage. Make certain there is enough upload bandwidth if using this setting. ' supportedResolutions: $ref: '#/components/schemas/MainVideoResolutions' ApiAdapterInfo: type: object properties: macAddress: $ref: '#/components/schemas/MacAddress' ipAddress: $ref: '#/components/schemas/IpAddress' CameraSettings: type: object properties: data: $ref: '#/components/schemas/Settings' schema: $ref: '#/components/schemas/CameraSettingsSchema' proposedValues: $ref: '#/components/schemas/CameraSettingProposedValues' required: - data ApiCameraEnabledAnalytics: readOnly: true type: array items: type: object description: List of analytics enabled on camera properties: creatorId: type: string example: een.bridgeTampering type: type: string example: een.tamperDetectionEvent.v1 required: - creatorId - type ApiBridgeCameraCreate: description: 'Schema used to describe a new camera to be created that should be attached to a bridge. ' allOf: - $ref: '#/components/schemas/ApiBridgedCameraCreate' - type: object properties: guid: $ref: '#/components/schemas/Guid' required: - name - bridgeId - guid BridgeId: type: string pattern: ^(?:0[xX])?[0-9a-fA-F]{8}$ example: 1000f60d description: 'The bridge a camera is connected to. Keep in mind that some cameras are connected directly to the cloud, which is when this field will not be reported. ' MainVideoResolutionQualities: type: object description: Specification for qualities supported by the camera. additionalProperties: $ref: '#/components/schemas/MainVideoQualitiesItem' ApiTunnelResponse: type: object properties: httpUrl: description: Unencrypted tunnel URL, if HTTPS is not enabled. type: - string - 'null' example: http://example.com httpsUrl: description: Encrypted tunnel URL when enabled at the account level. type: - string - 'null' example: https://example.com oneOf: - required: - httpUrl properties: httpsUrl: type: - string - 'null' enum: - null - required: - httpsUrl properties: httpUrl: type: - string - 'null' enum: - null ApiRegistrationStrategy: type: string enum: - bridge - rtspUrl - cameraDirect - channel description: "Cameras can be added in multiple ways, and this field indicates how this specific camera should be added. Possible methods:\n * `bridge`: Associate a camera found with `GET /api/v3.0/availableDevices` with one of the bridges that found it.\n * `rtspUrl`: Define a camera by giving a RTSP URL to retrieve its live stream and the bridge that should connect to it.\n * `cameraDirect`: Register a camera by its MAC address regardless of its physical location and without needing a bridge.\n * `channel`: Associate a channel camera with its parent multi camera.\n" WeeklyScheduleHours: type: object description: "Times that the schedule starts and ends. If the start time is greater than the end time, the interval is considered to cover the remaining time of the day from the start time until 24:00, and then from 00:00 to the end time. \nFor example, start: 16:30 and end: 06:00 on monday means the interval covers from 16:30 to 24:00 and continues from 00:00 to 06:00 on the same day (monday).\n" properties: start: type: string pattern: ^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$ description: Starting point of the interval. It should be in the range of 00:00 to 23:59 since this is the range for a day. minLength: 5 maxLength: 5 end: type: string pattern: ^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$ description: End point of the interval. It should be in the range of 00:00 to 23:59 since this is the range for the day. minLength: 5 maxLength: 5 required: - start - end ScheduledOverride: type: - object - 'null' required: - 'on' - schedule description: 'Defines a scheduled override to the operating settings, allowing the user to for example turn a camera off during specified hours of the day. ' properties: 'on': $ref: '#/components/schemas/On' schedule: $ref: '#/components/schemas/WeeklyScheduleAllRequired' PreviewResolutionsItem: type: object properties: width: type: integer example: 640 height: type: integer example: 360 qualities: $ref: '#/components/schemas/PreviewResolutionQualities' DeviceConnectionStatus: type: string description: "Indicates the connection status of the device:\n * `online`: The device is online and operational.\n * `deviceOffline`: The device is offline.\n * `invalidCredentials`: The known credentials for this device, including the default credentials, are invalid. This is causing the device to appear offline.\n * `bridgeOffline`: The bridge that connects this device to the cloud is offline. However, both the device and the bridge may still be operational locally, even though the cloud has no visibility into their status.\n * `off`: The device is online, but has been turned off by the user.\n * `error`: The device is offline due to some problem that has not been described by any of the other statuses.\n * `busy`: The device is currently busy and unavailable for other operations.\n * `unknown`: The device state is unknown for some reason.\n" enum: - online - deviceOffline - invalidCredentials - bridgeOffline - 'off' - error - busy - unknown ApiDevicePosition: type: object x-jsoninclude-nonnull-annotation: true properties: latitude: description: The latitude of the device. (WGS 84) type: - number - 'null' format: double minimum: -90 maximum: 90 example: 52.3074013 longitude: description: The longitude of the device. (WGS 84). type: - number - 'null' format: double minimum: -180 maximum: 180 example: 4.9459903 azimuth: type: - number - 'null' format: double minimum: 0 maximum: 360 example: 7.419435 rangeInMeters: type: - number - 'null' format: double minimum: 0 example: 50.4 floor: type: - integer - 'null' minimum: -30 maximum: 300 example: 50 fieldOfView: description: Field of view is the range of the observable world visible at any given time through camera viewfinder. type: - number - 'null' format: double minimum: 0 maximum: 360 example: 100 IpAddress: type: - string - 'null' pattern: ^(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})){3}$ example: 10.143.55.140 MainVideoResolutions: readOnly: true type: object description: Read-only listing of resolutions and quality settings supported by the camera. additionalProperties: $ref: '#/components/schemas/MainVideoResolutionsItem' example: 4MP: width: 2592 height: 1520 qualities: low: kbps: 1200 fps: 12 med: kbps: 1400 fps: 10 DeviceNotes: type: string example: Painted black to better blend with its environment. maxLength: 5000 ApiDeviceIOCapabilities: type: object properties: capable: type: boolean description: Indicates that the device support input / output ports default: false sharedTrigger: type: boolean description: Indicates an input can trigger video record on many devices on the bridge default: false PaginatedPortResponse: allOf: - $ref: '#/components/schemas/PaginatedResponseWithSize' - type: object properties: results: type: array items: $ref: '#/components/schemas/PortGet' ApiAddCamera: description: 'Base schema to describe all new cameras to be created. ' oneOf: - $ref: '#/components/schemas/ApiBridgeCameraCreate' - $ref: '#/components/schemas/ApiRtspCameraCreate' - $ref: '#/components/schemas/ApiCameraDirectCreate' - $ref: '#/components/schemas/ApiAxisCameraDirectCreate' - $ref: '#/components/schemas/ApiChannelCameraCreate' discriminator: propertyName: registrationStrategy mapping: bridge: '#/components/schemas/ApiBridgeCameraCreate' rtspUrl: '#/components/schemas/ApiRtspCameraCreate' cameraDirect: '#/components/schemas/ApiCameraDirectCreate' axisCameraDirect: '#/components/schemas/ApiAxisCameraDirectCreate' channel: '#/components/schemas/ApiChannelCameraCreate' properties: registrationStrategy: $ref: '#/components/schemas/ApiRegistrationStrategy' required: - registrationStrategy Imaging: type: object description: 'Camera imaging sensor settings. Not all properties are supported by every camera. Only properties supported by the specific camera will appear in the response. Use `?include=schema` to discover which properties a camera supports and their allowed values. The schema endpoint returns camera-specific ranges and enum values that may be a subset of what is documented here. ' properties: brightness: type: number format: double description: 'Overall luminance level of the captured image. Higher values produce a brighter image; lower values produce a darker image. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 contrast: type: number format: double description: 'Difference in luminance between shadows and highlights. Higher values increase separation between dark and light areas. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 saturation: type: number format: double description: 'Intensity of colors. Lower values shift toward grayscale; higher values produce more vivid colors. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 sharpness: type: number format: double description: 'Edge enhancement applied to the image. Higher values increase definition of fine detail but may introduce artifacts at extremes. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 exposureMaxGain: type: number format: double description: 'Maximum gain ceiling for auto-exposure. Limits how much electronic amplification the camera applies in low light. Lower values reduce noise at the cost of darker images; higher values allow brighter images but with more noise. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 irCutFilter: type: string description: 'Infrared cut filter mode. `on` blocks infrared for accurate daytime color; `off` allows infrared through for improved low-light sensitivity; `auto` switches based on scene conditions. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - auto - 'on' - 'off' wideDynamicRange: type: string description: 'Wide dynamic range mode. Captures detail in both very bright and very dark areas of the same scene simultaneously. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - 'on' - 'off' wideDynamicRangeLevel: type: number format: double description: 'Strength of WDR processing. Only effective when wideDynamicRange is on. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 whiteBalanceMode: type: string description: 'White balance mode. `auto` tracks and adjusts to changing light conditions. `manual` holds a fixed color point using the gain values in whiteBalanceRedGain and whiteBalanceBlueGain. `rbgain` is a camera-specific mode that enables direct R/B gain ratio control; use the schema endpoint to check if available. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - auto - manual - rbgain whiteBalanceRedGain: type: number format: double description: 'Red channel gain. Active when whiteBalanceMode is manual or rbgain. Increasing this value warms the image. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 whiteBalanceBlueGain: type: number format: double description: 'Blue channel gain. Active when whiteBalanceMode is manual or rbgain. Increasing this value cools the image. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 exposureMode: type: string description: 'Exposure control mode. `auto` lets the camera determine exposure; `manual` uses the shutter speed set in exposureTime. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - auto - manual exposureTime: type: string description: 'Shutter speed as a fraction string (e.g. 1/1000). Only effective when exposureMode is manual. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' example: 1/1000 rotation: type: string description: 'Image rotation in degrees applied clockwise. Use when the camera is physically mounted at an angle. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - '0' - '90' - '180' - '270' mirror: type: string description: 'Flips the image horizontally, producing a left-right mirror image. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - 'on' - 'off' flip: type: string description: 'Flips the image vertically. Use when the camera is mounted upside down. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - 'on' - 'off' backlightCompensation: type: string description: 'Backlight compensation mode. Adjusts exposure to prevent subjects in front of a bright background from appearing as silhouettes. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - 'on' - 'off' noiseReductionLevel: type: number format: double description: 'Strength of digital noise reduction. Higher values produce a cleaner image in low light but may soften fine detail or introduce motion artifacts. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 defoggingMode: type: string description: 'Electronic defogging mode. Enhances contrast and visibility in scenes obscured by fog, haze, or smoke. `auto` applies defogging as needed; `on` enables it continuously; `off` disables it. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - auto - 'on' - 'off' defoggingLevel: type: number format: double description: 'Strength of defogging processing. Only effective when defoggingMode is on. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: 0 maximum: 100 example: 50 dayNightMode: type: string description: 'Day/night switching mode. `day` forces color output; `night` forces monochrome for maximum low-light sensitivity; `auto` switches based on scene brightness. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - auto - day - night dayNightSensitivityDayToNight: type: string description: 'How readily the camera transitions from color to monochrome as light falls. `low` requires a larger drop before switching; `medium` switches at a moderate threshold; `high` switches earlier. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - low - medium - high dayNightSensitivityNightToDay: type: string description: 'How readily the camera transitions from monochrome back to color as light rises. `low` requires a larger increase before switching; `medium` switches at a moderate threshold; `high` switches earlier. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - low - medium - high focusMode: type: string description: 'Focus control mode. `auto` continuously adjusts focus based on scene content; `manual` holds the current focus position. Not all values are supported by every camera. Use `?include=schema` to discover the values supported by a specific camera. ' enum: - auto - manual focusDefaultSpeed: type: number format: double description: 'Default speed used for focus motor movements when no explicit speed is provided with a focus command. Higher values produce faster lens movement. The value is a magnitude, not a direction. Only effective when focusMode is manual. Not all cameras support this property. Use `?include=schema` to confirm availability and the valid range for a specific camera. ' minimum: -1 maximum: 1 example: 0.5 MainVideoResolutionsItem: allOf: - $ref: '#/components/schemas/PreviewResolutionsItem' properties: qualities: $ref: '#/components/schemas/MainVideoResolutionQualities' ApiPaginatedCameraResponse: allOf: - $ref: '#/components/schemas/PaginatedResponseWithSize' - type: object properties: results: type: array items: $ref: '#/components/schemas/ApiCameraForList' ApiCameraPTZCapabilities: type: object properties: capable: type: boolean description: 'Indicates that the camera has some PTZ capability. Check the other capabilities for what exact capability it has. ' default: false panTilt: type: boolean description: 'Indicates that the camera can be panned and tilted using the API. ' default: false zoom: type: boolean description: 'Indicates that the camera can be zoomed in and out using the API. ' default: false positionMove: type: boolean description: 'Indicates that the camera supports the "position" move, see the PTZ API for details. ' default: false directionMove: type: boolean description: 'Indicates that the camera supports the "direction" move, see the PTZ API for details. ' default: false centerOnMove: type: boolean description: 'Indicates that the camera supports the "centerOn" move, see the PTZ API for details. ' default: false fisheye: type: boolean description: 'Indicates that the camera has a circular panoramic view for which de-warping is supported. See Viewports API for details. ' default: false required: - capable LocationSummary: type: object x-jsoninclude-nonnull-annotation: true description: Summary of location information. properties: id: type: string name: type: string address: type: object properties: country: type: - string - 'null' region: type: - string - 'null' city: type: - string - 'null' streetAddress: type: - string - 'null' streetAddress2: type: - string - 'null' postalCode: type: - string - 'null' ApiCameraCapabilities: type: object x-jsoninclude-nonnull-annotation: true properties: ptz: $ref: '#/components/schemas/ApiCameraPTZCapabilities' audio: $ref: '#/components/schemas/ApiCameraAudioCapabilities' imageTuning: $ref: '#/components/schemas/ApiCameraImageTuningCapabilities' io: $ref: '#/components/schemas/ApiDeviceIOCapabilities' varifocal: $ref: '#/components/schemas/ApiCameraVarifocalCapability' required: - ptz - audio - imageTuning - io - varifocal DeviceCommonStatus: description: "Indicates the operational status of the device. The statuses defined here should be in sync with the DeviceStatus schema.\n * `operational`: The device is online and operational.\n * `error`: Device not working (requires error details).\n * `disabled`: Operational but intentionally not recording telemetry\n * `unreachable`: The device is not reachable (e.g., offline, out of service).\n * `unknown`: The device state is unknown for some reason.\n * `initializing`: The device is in the process of initializing.\n" type: string enum: - operational - error - disabled - unreachable - unknown - initializing example: operational 'On': type: boolean description: 'If off, all functionality of the camera will be disabled. This means that no recordings will be made, live streaming is not possible, and features like PTZ and talkdown are disabled. If on, the camera will behave normally. ' ApiCameraForList: allOf: - $ref: '#/components/schemas/ApiCameraMain' - $ref: '#/components/schemas/ApiCameraIncludes' - $ref: '#/components/schemas/ApiCameraFTSRelated' PaginatedResponseNoTotalSize: type: object description: 'Used to wrap results for a paginated response, containing information on how to retrieve further pages. ' properties: nextPageToken: type: - string - 'null' readOnly: true description: 'Token to retrieve the next page. The value of this token is passed into the field pageToken. This value can be null if there is no next page. ' prevPageToken: type: - string - 'null' readOnly: true description: 'Token to retrieve the previous page. The value of this token is passed into the field pageToken. This value can be null of there is no previous page. ' results: type: array readOnly: true description: The result set from a collection API call. items: type: object required: - nextPageToken - prevPageToken - results ApiCameraIncludes: type: object properties: status: $ref: '#/components/schemas/DeviceStatus' statusV2: $ref: '#/components/schemas/DeviceStatusV2' locationSummary: $ref: '#/components/schemas/LocationSummary' bridgeSummary: allOf: - $ref: '#/components/schemas/BridgeSummary' deviceAddress: $ref: '#/components/schemas/DeviceAddress' speakerId: $ref: '#/components/schemas/SpeakerId' timeZone: $ref: '#/components/schemas/ApiTimeZone' notes: $ref: '#/components/schemas/DeviceNotes' tags: $ref: '#/components/schemas/DeviceTags' devicePosition: $ref: '#/components/schemas/ApiDevicePosition' networkInfo: $ref: '#/components/schemas/ApiNetworkInfoWithMainIp' deviceInfo: $ref: '#/components/schemas/ApiDeviceInfo' firmware: $ref: '#/components/schemas/ApiFirmware' adminCredentials: $ref: '#/components/schemas/AdminCredentials' visibleByBridges: type: array x-jsoninclude-nonnull-annotation: true items: type: string pattern: ^(?:0[xX])?[0-9a-fA-F]{8}$ example: 1000f60d capabilities: $ref: '#/components/schemas/ApiCameraCapabilities' effectivePermissions: $ref: '#/components/schemas/EffectiveCameraPermissions' shareDetails: $ref: '#/components/schemas/ShareDetails' analog: $ref: '#/components/schemas/Analog' packages: readOnly: true type: array items: type: string example: - een.vsp - een.pos description: List of packages enabled for a camera. dewarpConfig: $ref: '#/components/schemas/ApiDewarpConfig' publicSafetySharing: $ref: '#/components/schemas/PublicSafetySharing' enabledAnalytics: $ref: '#/components/schemas/ApiCameraEnabledAnalytics' PortStatusPatch: type: object properties: state: type: string description: Set the state of the connected circuit. enum: - active - idle durationSeconds: type: integer description: 'Number of seconds to hold the circuit in the given state. If not provided, the state will hold indefinitely. ' example: 10 minimum: 1 maximum: 3600000 BulkUpdateResponse: type: object properties: status: type: integer ArgumentViolation: properties: argumentName: type: string description: Name of the argument description: type: string description: Description of the violation oak: description: Owner Authentication Key type: string pattern: ^[A-Z0-9]{12}$ example: 5A8Z09BD0091 WeeklyScheduleDaysAllRequired: allOf: - $ref: '#/components/schemas/WeeklyScheduleDays' required: - monday - tuesday - wednesday - thursday - friday - saturday - sunday ApiEsns: type: array items: type: string pattern: ^[a-fA-F0-9]{8},?$ example: - '00001106' - '00001107' OperatingSettings: type: object properties: 'on': $ref: '#/components/schemas/On' scheduledOverride: $ref: '#/components/schemas/ScheduledOverride' ApiDewarpConfigVector3: type: object properties: x: type: number example: 1 y: type: number example: -1 z: type: number example: 0.5 required: - x - y - z Analog1: type: object properties: videoStandard: type: string enum: - auto - ntsc - pal description: The 'auto' option will automatically choose the proper standard for a camera. badSignalProtection: type: boolean description: 'Certain bad analog signals can affect all analog cameras to the same device. If set to true, the other cameras are protected against this by disabling the camera altogether when signals with this effect are detected. ' badSignalDetected: type: boolean description: 'This value is set to true to indicate the camera was disabled due to bad analog signals. Set this value to false to enable the camera again, resetting the bad signal detection. ' ApiCameraAudioCapabilities: type: object properties: recordingEnabled: description: Indicates that audio is recorded by the camera. The source of audio can be microphone or other camera. type: boolean speaker: description: Indicates that audio can be broadcast by the camera, or an associated speaker. type: boolean halfDuplex: description: 'Indicates that audio can be used to communicate in both directions, but only one direction at a time. Also known as "push to talk", this behaves the same as most "walkie-talkie" systems: only one side can talk at a time. ' type: boolean fullDuplex: description: 'Indicates that audio can be used to communicate in both directions simultaneously. This behaves similarly to most telephone systems where both sides can talk at the same time. ' type: boolean Audio: type: object properties: microphoneEnabled: type: boolean description: 'Enables audio recording. Only one audio source can be active at the time. The microphone cannot be enabled if the audio is copied from another camera, which means `inputSourceId` should be set to null before enabling the microphone. ' inputSourceId: type: - string - 'null' description: 'Audio is copied from the camera with the given ID. The source camera needs to be attached to the same bridge to copy audio from it. Copying the audio stream from another camera is not possible if the microphone is enabled for this camera. ' ApiCameraDirectCreate: description: 'Schema used to describe a new camera to be created that directly connects to the cloud. ' allOf: - $ref: '#/components/schemas/ApiBaseCameraCreate' - type: object properties: macAddress: $ref: '#/components/schemas/MacAddress' required: - name - macAddress ErrorInfoExceptionDetail: properties: type: description: A string enum describing the type of detail object. type: string enum: - errorInfo reason: description: 'The reason for the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. ' type: string enum: - unauthenticated - unexpectedArgument - missingRequiredArgument - wrongArgumentValue - invalidPermission - wrongEdition - wrongAccountType - resourceNotFound - endpointNotFound - methodNotSupported - unexpectedError - acceptNotSupported - alreadyExists - foreignKeyConflict - childDevicesExist - contentNotSupported - deadlineExpired - tooManyRequests - deviceUnavailable - serviceUnavailable - invalidJSON - resourceLocked - notSupportedOnBridge - outOfRetention - deviceIdentificationFailed - credentialValidationFailed - credentialSetupFailed - localUrlValidationFailed - hwRegistrationFailed - failedAddingCameraAfterValidation - neverConnected - reconnectFailed - unsupportedModel - purged - userBlocked - userTemporarilyBlocked - quotaExceeded - alreadyValidated - reAuthenticationRequired - badGateway domain: description: 'Logical grouping to which the "reason" belongs ' type: string metadata: $ref: '#/components/schemas/ExceptionMetadata' MetricQueryResponse: type: array items: $ref: '#/components/schemas/MetricQuery' example: - target: kilobytesOnDisk dataPoints: - - 1450754160000 - 3823886336 - - 1450754220000 - 3823886336 Mount: type: string description: Mounting type example: ceiling enum: - ceiling - wall - floor ApiEsn: type: string example: '00001106' PortStatusGet: type: object properties: state: type: string description: Interpreted state of the connected circuit. enum: - active - idle - unknown ApiCameraFTSRelated: type: object properties: qRelevance: type: number description: 'Field is only returned when `q` parameter is used and its value indicates the relevance of the camera in relation to the terms in the `q` parameter. The range of this value is between 0 and 1, higher is better. ' format: float minimum: 0 maximum: 1 example: 0.5 readOnly: true BulkUpdateResponses: type: object description: 'Provides collection of individual responses of each camera update. ' additionalProperties: $ref: '#/components/schemas/BulkUpdateResponse' example: 10088cde: status: 400 10088ceb: status: 204 10088abc: status: 500 AdminCredentials: allOf: - description: 'Credentials that allow the bearer to access the camera''s internal UI. This UI, available via the [tunneling endpoint](https://developer.eagleeyenetworks.com/reference/putcameratunnel), can be used to apply certain advanced configurations. ' - $ref: '#/components/schemas/ApiDeviceCredentials' MainVideoQualitiesItem: allOf: - $ref: '#/components/schemas/PreviewQualitiesItem' properties: fps: type: integer example: 30 description: Frames per second for the video. CameraBulkUpdate: properties: response: $ref: '#/components/schemas/BulkUpdateResponses' DeviceErrorStatus: description: "Indicates the detailed error status of a device, grouped by device type:\nONVIF Camera / RTSP Camera / Multicamera:\n * `generalDeviceError`: Camera error\n * `networkError`: Network error\n * `invalidCredentials`: Invalid credentials\n * `deviceSupportIssue`: Device support issue\n * `queuedForConfiguration`: Queued for configuration\n * `configurationInProgress`: Configuration in progress\n * `deviceDisabled`: Device is turned off\n * `disconnectedFromBridge`: Disconnected from bridge\n\nAnalog Camera:\n * `analogNoPower`: Power loss detected\n * `analogBadSignal`: Signal quality issue\n * `analogIncompatibleSignal`: Incompatible signal\n * `analogNoSignal`: No signal\n * `disconnectedFromBridge`: Disconnected from bridge\n * `deviceDisabled`: Device is turned off\n\nManaged Switch:\n * `deviceSupportIssue`: Switch support issue\n * `disconnectedFromBridge`: Disconnected from bridge\n" x-een-device-type-error-status-mapping: onvifCamera: - generalDeviceError - networkError - invalidCredentials - deviceSupportIssue - queuedForConfiguration - configurationInProgress - deviceDisabled - disconnectedFromBridge rtspCamera: - generalDeviceError - networkError - invalidCredentials - deviceSupportIssue - queuedForConfiguration - configurationInProgress - deviceDisabled - disconnectedFromBridge analogCamera: - analogNoPower - analogBadSignal - analogIncompatibleSignal - analogNoSignal - disconnectedFromBridge - deviceDisabled multiCamera: - generalDeviceError - networkError - invalidCredentials - deviceSupportIssue - queuedForConfiguration - configurationInProgress - deviceDisabled - disconnectedFromBridge managedSwitch: - deviceSupportIssue - disconnectedFromBridge type: string enum: - disconnectedFromBridge - generalDeviceError - networkError - invalidCredentials - deviceSupportIssue - queuedForConfiguration - configurationInProgress - deviceDisabled - analogNoPower - analogBadSignal - analogIncompatibleSignal - analogNoSignal example: generalDeviceError MetricQuery: type: object required: - target - dataPoints properties: target: type: string example: bandwidth dataPoints: type: array example: - - 1557385723416 - 2.5 - - 1557385731634 - 3.5 items: type: array description: 'First value is unix timestamp in milliseconds. Second value is Metric value as a float. ' minItems: 2 maxItems: 2 items: type: number PortRules: type: object properties: recordOnActive: type: boolean description: If this value is set to true, the port is an input and the device can record video, then the bridge should start recording when the port becomes active. icon: type: - string - 'null' description: If enabled, the given icon is shown for all livestreams of the camera and highlighted when the port is active. For ports of "output" type the icon can then also be clicked to change the state of the camera. enum: - siren - light - dot - door - bell iconEnabled: type: boolean description: Inidicates if the icon should be visible on all livestreams. IpUsedByBridge: type: - string - 'null' pattern: ^(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})){3}$|(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(?::0{1,4}){0,1}:){0,1}(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3,3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3,3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) example: 10.143.55.140 description: The current IP address the bridge is using, in IPv4 or IPv6 format. serial: type: string pattern: ^[A-F0-9]{12}$ example: B8A44F8DC15B ApiFirmware: type: object x-jsoninclude-nonnull-annotation: true properties: currentVersion: type: - string - 'null' example: v20211019_542_3022 BridgeSummary: type: object x-jsoninclude-nonnull-annotation: true description: Summary of bridge information. properties: id: type: string pattern: ^(?:0[xX])?[0-9a-fA-F]{8}$ example: 1000f60d name: type: string example: Front Lobby Bridge ShareDetails: type: object properties: shared: type: boolean description: 'If true, this camera is owned by another account and shared with the current account. This includes cameras shared using the camera sharing feature, and cameras shared using the first responder feature. ' firstResponder: type: boolean description: If true, this camera is shared as a first responder camera. accountId: type: - string - 'null' description: 'If the camera is shared, this is the ID of the account that shared this camera with the current account. Null if the camera is not shared. ' example: 00009983 accountName: type: - string - 'null' description: 'If the camera is shared, this is the name of the account that shared this camera with the current account. Null if the camera is not shared. ' example: EEN Demo. PortOutputPatch: allOf: - $ref: '#/components/schemas/Port' - type: object properties: status: $ref: '#/components/schemas/PortStatusPatch' ApiCameraUpdate: type: object properties: name: $ref: '#/components/schemas/DeviceName' notes: $ref: '#/components/schemas/DeviceNotes' speakerId: description: Id of the speaker. type: - string - 'null' example: 10039dab locationId: $ref: '#/components/schemas/LocationId' tags: $ref: '#/components/schemas/DeviceTags' devicePosition: $ref: '#/components/schemas/ApiDevicePosition' deviceAddress: $ref: '#/components/schemas/DeviceAddress' publicSafetySharing: $ref: '#/components/schemas/PublicSafetySharing' ApiChannelCameraCreate: description: 'Schema used to describe a new channel camera to be created that should be attached to a multi camera. ' properties: guid: $ref: '#/components/schemas/Guid' name: $ref: '#/components/schemas/DeviceName' tags: $ref: '#/components/schemas/DeviceTags' locationId: $ref: '#/components/schemas/LocationId' bridgeId: $ref: '#/components/schemas/BridgeId' required: - name - bridgeId - guid ApiCameraVarifocalCapability: type: boolean description: 'This camera features a varifocal lens, allowing it to zoom in and out, similar to the PTZ feature. The difference between varifocal and PTZ zoom is that the PTZ hardware is meant for continuous usage while the varifocal capability is only meant for use during setup. ' WeeklyScheduleDays: type: object description: Days of the week that the start and end times are applied. properties: sunday: type: boolean monday: type: boolean tuesday: type: boolean wednesday: type: boolean thursday: type: boolean friday: type: boolean saturday: type: boolean CameraSettingsSchema: type: object readOnly: true description: Json schema of version draft 4. example: $schema: http://json-schema.org/draft-04/schema# type: object properties: retention: type: object properties: cloudDays: type: integer minimum: 1 maximum: 1825 audio: type: object properties: microphoneEnabled: type: boolean inputSourceId: type: string previewVideo: type: object properties: transmitMode: type: string enum: - onDemand - always - background - event resolution: type: string enum: - cif - std intervalMs: type: integer minimum: 250 maximum: 16000 quality: type: string enum: - low - med mainVideo: type: object properties: transmitMode: type: string enum: - onDemand - always - background - event resolution: type: string enum: - cif - std - high - 1080P kbpsFactor: type: integer minimum: 1 maximum: 4 quality: type: string enum: - low - med - high captureMode: type: string enum: - event - always talkdown: type: object properties: protocol: type: string enum: - sip - onvif audioMode: type: string enum: - disabled - talkDown - twoWayAudio sipCredentials: type: object properties: username: type: string password: type: string imaging: type: object description: 'Only properties supported by this camera appear here. Ranges and enum values may be a subset of those in the Imaging schema definition. ' properties: brightness: type: number minimum: 0 maximum: 100 contrast: type: number minimum: 0 maximum: 100 irCutFilter: type: string enum: - auto - 'on' - 'off' rotation: type: string enum: - '0' - '180' exposureTime: type: string enum: - 1/50 - 1/100 - 1/250 - 1/500 - 1/1000 - 1/2000 - 1/4000 MacAddress: type: - string - 'null' pattern: ^([A-F0-9]{2}:){5}[A-F0-9]{2}$ example: 8A:D4:AD:09:DF:91 ApiBridgedCameraCreate: description: 'Base schema for cameras that are attached to a bridge, vs cameras that are connected directly to the cloud. ' allOf: - $ref: '#/components/schemas/ApiBaseCameraCreate' - type: object properties: bridgeId: $ref: '#/components/schemas/BridgeId' credentials: $ref: '#/components/schemas/ApiDeviceCredentials' ApiDewarpConfigCompositeGetCreate: allOf: - $ref: '#/components/schemas/ApiDewarpConfigComposite' - type: object required: - id - name - aspect - panes ApiDeviceCredentials: type: object x-jsoninclude-nonnull-annotation: true properties: username: type: string description: Username to use when authenticating with the device maxLength: 126 password: type: string description: Password to use when authenticating with the device maxLength: 126 DeviceStatus: description: Indicates various aspects of the device's status. The statuses defined here should be in sync with the events schema defined for the Device Cloud Status Update. type: object x-jsoninclude-nonnull-annotation: true properties: connectionStatus: $ref: '#/components/schemas/DeviceConnectionStatus' ExceptionMetadata: properties: path: description: Path of the request type: string method: description: Method of the request type: string DeviceStatusV2: description: Status as reported by the edge device. type: object x-jsoninclude-nonnull-annotation: true properties: cloudConnectionStatus: $ref: '#/components/schemas/deviceCloudConnectionStatusV2' edgeReportedDeviceStatus: $ref: '#/components/schemas/DeviceCommonStatus' deviceSpecificError: $ref: '#/components/schemas/DeviceErrorStatus' required: - cloudConnectionStatus - edgeReportedDeviceStatus DeviceName: description: User-defined name for the device. type: string example: My new device minLength: 1 maxLength: 126 LocationId: description: ID Of the location. minLength: 1 type: - string - 'null' example: 2428fda3-389f-48ce-b062-85875dd6b2e2 Port: type: object properties: id: type: string readOnly: true description: Unique ID for the port. example: '1' enabled: type: boolean description: If the port is not enabled, no events will be created, and the icon will not show up in the live stream. name: type: string description: Human changeable name of the port, defaults to value of the id field. example: Input 1 minLength: 1 maxLength: 126 type: type: string readOnly: true description: Denotes whether this is an input or output port. enum: - input - output idleCircuitState: type: string description: 'Indicates the normal, inactive or idle, state of the connected circuit. Possible values: * `open`: means the port is "off" when in `idle` state (open circuit; has no voltage), and the port state being `active` means it is turned "on" (circuit is closed; has voltage). * `closed`: means the port is "on" when in `idle` state (closed circuit; has voltage), and the port state being active means it is turned "off" (open circuit; has no voltage). ' enum: - open - closed rules: $ref: '#/components/schemas/PortRules' responses: forbidden: description: You have no permission to access the specified resource. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' examples: invalidPermission: value: code: 403 status: permissionDenied message: The client caller does not have permission for the specified operation details: - type: errorInfo reason: invalidPermission domain: apiv3 metadata: path: /api/v3.0/ wrongEdition: value: code: 403 status: permissionDenied message: This feature is not enabled for the account details: - type: errorInfo reason: wrongEdition domain: apiv3 metadata: path: /api/v3.0/locations wrongAccountType: value: code: 403 status: permissionDenied message: This feature is only available for end users details: - type: errorInfo reason: wrongAccountType domain: apiv3 metadata: path: /api/v3.0/locations internalServerError: description: Something went wrong in the server. Please try again. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' example: code: 500 status: internal message: An internal error has occurred. Please try again later. details: - type: errorInfo reason: unexpectedError domain: apiv3 metadata: path: /api/v3.0/ resourceNotFound: description: Referenced resource could not be found. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' examples: endpointNotFound: value: code: 404 status: notFound message: The API endpoint was not found details: - type: errorInfo reason: endpointNotFound domain: apiv3 metadata: path: /api/v3.0/ resourceNotFound: value: code: 404 status: notFound message: The resource was not found details: - type: errorInfo reason: resourceNotFound domain: apiv3 metadata: path: /api/v3.0/ - type: resourceInfo resource: ids: - conflict: description: There was a conflict while trying to perform your request. See error details for more information. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' examples: alreadyExists: value: code: 409 status: conflict message: The resource already exists details: - type: errorInfo reason: alreadyExists domain: apiv3 metadata: path: /api/v3.0/ foreignKeyConflict: value: code: 409 status: conflict message: The resource cannot be deleted as other resources link to it. Please remove the links or delete the other resources first before deleting this resource. details: - type: errorInfo reason: foreignKeyConflict domain: apiv3 metadata: path: /api/v3.0/ childDevicesExist: value: code: 409 status: conflict message: This device can not be deleted before all attached cameras have been deleted. Please delete all cameras and then delete this device. details: - type: errorInfo reason: childDevicesExist domain: apiv3 metadata: path: /api/v3.0/ deviceUnavailable: value: code: 409 status: conflict message: Device is not available. details: - type: errorInfo reason: deviceUnavailable domain: apiv3 metadata: path: /api/v3.0/ unauthorized: description: You are not authenticated. Please authenticate and try again. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' example: code: 401 status: unauthenticated message: The client caller does not have a valid authentication credential details: - type: errorInfo reason: unauthenticated domain: apiv3 metadata: path: /api/v3.0/ validationError: description: The supplied object is invalid. Error detail will contain the validation error. content: application/json: schema: $ref: '#/components/schemas/ApiV3Error' examples: unexpectedArgument: value: code: 400 status: invalidArgument message: 'Unexpected argument: name' details: - type: errorInfo reason: unexpectedArgument domain: apiv3 metadata: path: /api/v3.0/ missingRequiredArgument: value: code: 400 status: invalidArgument message: 'Missing required arguments: name, id' details: - type: errorInfo reason: missingRequiredArgument domain: apiv3 metadata: path: /api/v3.0/ badRequestInvalidJSON: value: code: 400 status: invalidArgument message: Invalid JSON details: - type: errorInfo reason: invalidJSON domain: apiv3 metadata: path: /api/v3.0/ badRequestInvalidArgument: value: code: 400 status: invalidArgument message: 'Invalid Argument: Argument name is too long' details: - type: errorInfo reason: wrongArgumentValue domain: apiv3 metadata: path: /api/v3.0/ - type: badRequest argumentViolations: - argumentName: name description: Name is too long securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT x-provenance: method: searched source: https://developer.eagleeyenetworks.com/reference harvested: '2026-10-14' tool: harvest-readme-openapi.py note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored. assembled_from: - https://developer.eagleeyenetworks.com/reference/addcamera.md - https://developer.eagleeyenetworks.com/reference/addmulticamera.md - https://developer.eagleeyenetworks.com/reference/addspeaker.md - https://developer.eagleeyenetworks.com/reference/createbridge.md - https://developer.eagleeyenetworks.com/reference/deletebridge.md - https://developer.eagleeyenetworks.com/reference/deletecamera.md - https://developer.eagleeyenetworks.com/reference/deletecameratunnel.md - https://developer.eagleeyenetworks.com/reference/deletemulticamera.md - https://developer.eagleeyenetworks.com/reference/deletespeaker.md - https://developer.eagleeyenetworks.com/reference/getbridge.md - https://developer.eagleeyenetworks.com/reference/getbridgemetrics.md - https://developer.eagleeyenetworks.com/reference/getbridgesettings.md - https://developer.eagleeyenetworks.com/reference/getcamera.md - https://developer.eagleeyenetworks.com/reference/getcamerametrics.md - https://developer.eagleeyenetworks.com/reference/getcamerasettings.md - https://developer.eagleeyenetworks.com/reference/getcurrentposition.md - https://developer.eagleeyenetworks.com/reference/getmulticamera.md - https://developer.eagleeyenetworks.com/reference/getmulticamerachannels.md - https://developer.eagleeyenetworks.com/reference/getport.md - https://developer.eagleeyenetworks.com/reference/getport1.md - https://developer.eagleeyenetworks.com/reference/getportrecorder.md - https://developer.eagleeyenetworks.com/reference/getportrecorders.md - https://developer.eagleeyenetworks.com/reference/getports.md - https://developer.eagleeyenetworks.com/reference/getports1.md - https://developer.eagleeyenetworks.com/reference/getptzsettings.md - https://developer.eagleeyenetworks.com/reference/getspeaker.md - https://developer.eagleeyenetworks.com/reference/getspeakersettings.md - https://developer.eagleeyenetworks.com/reference/getswitch.md - https://developer.eagleeyenetworks.com/reference/listavailabledevices.md - https://developer.eagleeyenetworks.com/reference/listbridges.md - https://developer.eagleeyenetworks.com/reference/listcameras.md - https://developer.eagleeyenetworks.com/reference/listmulticameras.md - https://developer.eagleeyenetworks.com/reference/listspeakers.md - https://developer.eagleeyenetworks.com/reference/listswitches.md - https://developer.eagleeyenetworks.com/reference/moveto.md - https://developer.eagleeyenetworks.com/reference/putcameratunnel.md - https://developer.eagleeyenetworks.com/reference/swapbridge.md - https://developer.eagleeyenetworks.com/reference/swapcamera.md - https://developer.eagleeyenetworks.com/reference/switchaction.md - https://developer.eagleeyenetworks.com/reference/updateallports.md - https://developer.eagleeyenetworks.com/reference/updatebridge.md - https://developer.eagleeyenetworks.com/reference/updatebridgesettings.md - https://developer.eagleeyenetworks.com/reference/updatebulkbridges.md - https://developer.eagleeyenetworks.com/reference/updatebulkcameras.md - https://developer.eagleeyenetworks.com/reference/updatecamera.md - https://developer.eagleeyenetworks.com/reference/updatecamerasettings.md - https://developer.eagleeyenetworks.com/reference/updatemulticamera.md - https://developer.eagleeyenetworks.com/reference/updateport.md - https://developer.eagleeyenetworks.com/reference/updateport1.md - https://developer.eagleeyenetworks.com/reference/updateport2.md - https://developer.eagleeyenetworks.com/reference/updateport3.md - https://developer.eagleeyenetworks.com/reference/updateportrecorder.md - https://developer.eagleeyenetworks.com/reference/updateptzsettings.md - https://developer.eagleeyenetworks.com/reference/updatespeaker.md - https://developer.eagleeyenetworks.com/reference/updatespeakersettings.md - https://developer.eagleeyenetworks.com/reference/updateswitch.md merge: pages: 56 deduped: 1179 conflicts_kept_first: 0