The `/osc/info` API returns basic information about the camera and functionality
it supports.

## Input

- This command takes no input.

## Output

| Name | Type | Description |
|---|---|---|
| `manufacturer` | String | The camera manufacturer. |
| `model` | String | The camera model. |
| `serialNumber` | String | Serial number. |
| `firmwareVersion` | String | Current firmware version. |
| `supportUrl` | String | URL for the camera's support webpage. |
| `gps` | Boolean | True if the camera has GPS. |
| `gyro` | Boolean | True if the camera has Gyroscope. |
| `uptime` | Integer | Number of seconds since the camera boot. |
| `api` | String Array | List of supported APIs. |
| `endpoints` | Object | A JSON object containing information about the camera's endpoints. See the next table. |
| `apiLevel` | Integer Array | It is \[1\] by default when this field is missing. \[1, 2\] represents both API 1 and 2 are supported while \[2\] represents only API 2 is supported. It is the developer's responsibility to retrieve this information and implement differently based on the value. **This field was added in API level 2. Please also use 2 if you support API 2.1.** |
| `cameraId` | String | A unique id representing the camera. **This field was added in API level 2.1 and is relevant to [Direct Upload](https://developers.google.com/streetview/open-spherical-camera/guides/direct-upload).** |
| `_vendorSpecific` | [type](https://developers.google.com/streetview/open-spherical-camera/guides/osc/optional) | Vendor specific additional info about the camera. Please prefix vendor-specific keys with an underscore ( _ ) to avoid namespace collisions. |

### `endpoints` object

This JSON object provides information on the ports the camera uses for endpoints.

***Note: HTTPS endpoints are optional.***

| Name | Type | Description |
|---|---|---|
| `httpPort` | Integer | Port for HTTP server. (Default 80) |
| `httpUpdatesPort` | Integer | Port to receive updates over HTTP |
| `httpsPort` | Integer | (Optional) Port for HTTPs server. (Default 443) |
| `httpsUpdatesPort` | Integer | (Optional) Port to receive updates over HTTPs. |

## Error

- This command returns no errors.

| ## Example ||
|---|---|
| **Request** | ``` GET /osc/info HTTP/1.1 Host: [camera ip address]:[httpPort] Accept: application/json X-XSRF-Protected: 1 ``` |
| **Response (API 2)** | ``` HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: {CONTENT_LENGTH} X-Content-Type-Options: nosniff { "manufacturer": "AAA", "model": "BBB", "serialNumber": "CCC", "firmwareVersion": "DDD", "supportUrl": "EEE", "endpoints": { "httpPort": 80, "httpUpdatesPort": 10080, ... }, "gps": true, "gyro": false, "uptime": 600, "api": [ "/osc/info", "/osc/state", "/osc/checkForUpdates", "/osc/commands/execute", "/osc/commands/status" ], "apiLevel": [1, 2] } ``` |
| **Response (API 1)** | ``` HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: {CONTENT_LENGTH} X-Content-Type-Options: nosniff { "manufacturer": "AAA", "model": "BBB", "serialNumber": "CCC", "firmwareVersion": "DDD", "supportUrl": "EEE", "endpoints": { "httpPort": 80, "httpUpdatesPort": 10080, ... }, "gps": true, "gyro": false, "uptime": 600, "api": [ "/osc/info", "/osc/state", "/osc/checkForUpdates", "/osc/commands/execute", "/osc/commands/status" ] } ``` |