> ## Documentation Index
> Fetch the complete documentation index at: https://crsdk.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Get all camera properties in one call

> Returns every property the camera currently reports, deduplicated by name
(the SDK occasionally returns multiple internal entries for the same
property — the server picks the entry that has values or is writable).

## Important: response shape differs from single-property GET

The per-property entries here use a DIFFERENT shape than
`getProperty` — see `BulkPropertyEntry` vs `PropertyData`. Highlights:

- Field names: `current_value` / `current_hex_value` / `current_formatted`
  instead of `value` / `formatted`
- `writable` is a real boolean here (not the stringified `"true"`/`"false"`
  you get from single GET)
- `available_values` entries carry both numeric `value` and `hex_value`

Use this endpoint for "load everything once" UI flows. Use single GET
when you need just one property and want the consistent setter format.




## OpenAPI

````yaml /openapi.yaml get /api/cameras/{cameraId}/properties/all
openapi: 3.1.0
info:
  title: Alpha Camera REST API
  version: 3.0.0
  description: >
    RESTful control for Sony cameras — shooting, settings, live view with OSD
    overlay,

    focus control, and file transfer through a clean HTTP interface.


    Built on the Sony Camera Remote SDK. Supports USB and network camera
    connections

    with multi-camera simultaneous operation.


    ## Connection Modes


    | Mode | Description |

    |------|-------------|

    | `remote` | Full camera control: shooting, settings, live view.
    Auto-transfer images to host PC. |

    | `remote-transfer` | Camera control + explicit SD card file access. Most
    capable mode. |

    | `contents` | SD card file access only. No shooting or settings control. |


    ## Quick Start


    1. `GET /api/cameras` — discover cameras

    2. `POST /api/cameras/{id}/connection` — connect

    3. `PUT /api/cameras/{id}/priority-key` — set to `pc-remote`

    4. `PUT /api/cameras/{id}/properties/{name}` — configure settings

    5. `POST /api/cameras/{id}/actions/af-shutter` — shoot

    6. `DELETE /api/cameras/{id}/connection` — disconnect


    ## Priority Key Requirement


    The camera's priority key **must** be set to `pc-remote` before it accepts
    any

    remote property changes or shooting commands.
  license:
    name: Proprietary
  contact:
    name: Camera Remote SDK
    url: https://github.com/ocjlee888/camera-remote-sdk-project
servers:
  - url: http://{host}:{port}
    description: |
      Local camera server. The server binary runs on the host that has the
      camera physically connected (USB or network). Defaults to
      `http://localhost:8080`; override `host` and `port` when the server
      runs on a different machine (e.g. a Raspberry Pi next to the camera).
    variables:
      host:
        default: localhost
        description: Host running the camera server binary
      port:
        default: '8080'
        description: Port the camera server is listening on
security: []
tags:
  - name: Connection
    description: Camera discovery, connection, and disconnection
  - name: Properties
    description: Read and write camera properties (ISO, aperture, shutter speed, etc.)
  - name: Actions
    description: Shooting commands and motor control (shutter, zoom, focus)
  - name: Live View
    description: Live view streaming and OSD overlay control
  - name: Events
    description: Server-Sent Events for real-time camera callbacks
  - name: SD Card
    description: SD card file browsing and download
  - name: Settings
    description: Save path configuration and camera settings file management
  - name: Server
    description: Server health, status, and log retrieval
paths:
  /api/cameras/{cameraId}/properties/all:
    get:
      tags:
        - Properties
      summary: Get all camera properties in one call
      description: >
        Returns every property the camera currently reports, deduplicated by
        name

        (the SDK occasionally returns multiple internal entries for the same

        property — the server picks the entry that has values or is writable).


        ## Important: response shape differs from single-property GET


        The per-property entries here use a DIFFERENT shape than

        `getProperty` — see `BulkPropertyEntry` vs `PropertyData`. Highlights:


        - Field names: `current_value` / `current_hex_value` /
        `current_formatted`
          instead of `value` / `formatted`
        - `writable` is a real boolean here (not the stringified
        `"true"`/`"false"`
          you get from single GET)
        - `available_values` entries carry both numeric `value` and `hex_value`


        Use this endpoint for "load everything once" UI flows. Use single GET

        when you need just one property and want the consistent setter format.
      operationId: getAllProperties
      parameters:
        - $ref: '#/components/parameters/cameraId'
      responses:
        '200':
          description: All properties retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAllPropertiesResponse'
        '400':
          description: Camera not connected or bulk property retrieval failed in the SDK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  parameters:
    cameraId:
      name: cameraId
      in: path
      required: true
      description: Camera identifier (e.g. `D10F60149B0C`)
      schema:
        type: string
  schemas:
    GetAllPropertiesResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
        message:
          type: string
        camera:
          $ref: '#/components/schemas/CameraSummary'
        data:
          $ref: '#/components/schemas/BulkPropertiesData'
    ErrorResponse:
      type: object
      description: |
        Standard non-2xx response envelope. The API does not currently expose a
        stable machine-readable error code in the JSON body, so clients should
        branch on HTTP status first and then inspect `message` for the
        human-readable reason.
      example:
        success: false
        message: Camera not connected
        camera:
          connected: false
          model: ILCE-7M4
          id: D06CE05E3323
      required:
        - success
        - message
      properties:
        success:
          type: boolean
          const: false
          example: false
        message:
          type: string
          example: Camera not connected
        camera:
          $ref: '#/components/schemas/CameraSummary'
    CameraSummary:
      type: object
      description: Camera info embedded in API responses
      properties:
        connected:
          type: boolean
          example: false
        model:
          type: string
          example: ILCE-7M4
        id:
          type: string
          example: D06CE05E3323
    BulkPropertiesData:
      type: object
      description: |
        Wrapper object inside the bulk-GET `data` field. The
        `properties` member is a map of property name → entry.
      required:
        - properties
        - total_properties
      properties:
        properties:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BulkPropertyEntry'
          description: >-
            Map of property name (matches `PropertyName`) to its current value
            entry
        total_properties:
          type: integer
          description: >
            Total number of property entries the camera reported (BEFORE
            deduplication).
          x-fern-property-name: totalProperties
    BulkPropertyEntry:
      type: object
      description: |
        Per-property entry inside the `data.properties` map returned by
        `GET /api/cameras/{id}/properties/all`. Note that this schema is NOT
        the same as `PropertyData`:

        - Field names are prefixed with `current_` (`current_value`,
          `current_hex_value`, `current_formatted`)
        - `writable` is a real JSON boolean, not a stringified one
        - Each entry in `available_values` includes BOTH a numeric `value`
          and a `hex_value` string

        This is because the bulk handler serializes property data inline rather
        than going through the string-string `data` map.
      required:
        - current_value
        - current_hex_value
        - current_formatted
        - writable
        - available_values
      properties:
        current_value:
          type: number
          format: double
          description: |
            Numeric SDK value. Typed as `number` (rather than `int64`) because
            some properties (e.g. `exposure-compensation`, `image-id-num`) emit
            UInt64-range values on the wire that don't fit in a signed 64-bit
            integer. Treat this field as opaque — use `current_hex_value` in
            SET requests.
          example: 100
          x-fern-property-name: currentValue
        current_hex_value:
          type: string
          example: '0x1007d'
          x-fern-property-name: currentHexValue
        current_formatted:
          type: string
          example: 1/125
          x-fern-property-name: currentFormatted
        writable:
          type: boolean
        available_values:
          type: array
          items:
            $ref: '#/components/schemas/BulkAvailableValue'
          x-fern-property-name: availableValues
    BulkAvailableValue:
      type: object
      required:
        - value
        - hex_value
        - formatted
      properties:
        value:
          type: number
          format: double
          description: |
            Numeric SDK value. Typed as `number` (rather than `int64`) because
            some properties emit UInt64-range values on the wire that don't fit
            in a signed 64-bit integer. Treat this field as opaque — use
            `hex_value` in SET requests.
          example: 32000
        hex_value:
          type: string
          example: '0x11f40'
          x-fern-property-name: hexValue
        formatted:
          type: string
          example: 1/8000

````