> ## Documentation index
> Fetch the complete documentation index at: https://developer.rhombus.com/llms.txt
> Use it to discover all available pages before exploring further.

# Get PTZ patrol

> Get the patrol of a first-party mechanical PTZ camera: whether it is on and the points it visits

```http
POST https://api2.rhombussystems.com/api/camera/getPtzPatrol
```

EU organizations send the same request to `https://api2.eu.rhombussystems.com`.

## Authentication and parameters

- `x-auth-apikey` (header, required): Your Rhombus API key. Must be accompanied by the `x-auth-scheme` header set to `api-token` (or `partner-api-token` for partner endpoints).
- `Authorization` (header): instead of an API key, an OAuth access token (`Bearer <token>`) with the `read` scope.
- `x-auth-scheme` (header, string, default: `api-token`): Authentication scheme identifier. Use `api-token` or `partner-api-token` with the `x-auth-apikey` header, `api` or `partner-api` with `x-auth-apikey` plus a client certificate, `api-oauth-token` or `partner-api-oauth-token` with `x-auth-access-token`, and `federated-token` with `x-auth-ft`. A request with `Authorization: Bearer <token>` and no `x-auth-scheme` is treated as OAuth, and `federated-token` may also be sent as the `x-auth-scheme` and `x-auth-ft` query parameters. One of: `api-token`, `api`, `api-oauth-token`, `federated-token`, `partner-api-token`, `partner-api`, `partner-api-oauth-token`.
- `x-auth-org` (header, string<RUUID>): Client organization UUID (22-character RUUID), for partner credentials only. With it the call runs in that client organization with the partner support authority's role. Without it a partner credential runs as the partner organization, which outside the partner endpoints is deprecated (responses carry `Deprecation` and `Sunset: Tue, 05 Jan 2027 00:00:00 GMT`). A malformed value returns 400 `INVALID_AUTH_ORG`; a client organization the partner cannot access returns 403 `PARTNER_CLIENT_ACCESS_DENIED`.

## Request body

Content type: `application/json`. Request for a mechanical PTZ camera's patrol.

- `cameraUuid` (string<DeviceFacetUuid> | null): RUUID with optional appended facet information

## Response 200

OK. Content type: `application/json`

- `error` (boolean | null)
- `errorCode` (string | null): Stable, machine-readable code for the failure (one of the ApiErrorCode catalog) when error is true. Branch on this, not on errorMsg.
- `errorMsg` (string | null)
- `patrol` (object): A mechanical PTZ (R650) patrol. While enabled, the camera visits the points in order, stays at each for its dwell, and wraps back to the first. Any user move pauses the patrol for 30 seconds.
- `warningMsg` (string | null)

## Errors

Also 400, 401, 403, 429, 500, 503 with the standard error body (`errorCode`, `errorMsg`): https://developer.rhombus.com/errors

## OpenAPI

````yaml
openapi: 3.0.1
info:
  title: Rhombus API
  version: "1.0"
servers:
  - description: Production Server
    url: https://api2.rhombussystems.com
security:
  - ApiKeyAuth: []
paths:
  /api/camera/getPtzPatrol:
    post:
      description: "Get the patrol of a first-party mechanical PTZ camera: whether it is on and the points it visits"
      operationId: getCameraPtzPatrol
      parameters:
        - description: "Authentication scheme identifier. Use `api-token` or `partner-api-token` with the `x-auth-apikey` header, `api` or `partner-api` with `x-auth-apikey` plus a client certificate, `api-oauth-token` or `partner-api-oauth-token` with `x-auth-access-token`, and `federated-token` with `x-auth-ft`. A request with `Authorization: Bearer <token>` and no `x-auth-scheme` is treated as OAuth, and `federated-token` may also be sent as the `x-auth-scheme` and `x-auth-ft` query parameters."
          example: api-token
          in: header
          name: x-auth-scheme
          required: false
          schema:
            default: api-token
            enum:
              - api-token
              - api
              - api-oauth-token
              - federated-token
              - partner-api-token
              - partner-api
              - partner-api-oauth-token
            type: string
        - description: "Client organization UUID (22-character RUUID), for partner credentials only. With it the call runs in that client organization with the partner support authority's role. Without it a partner credential runs as the partner organization, which outside the partner endpoints is deprecated (responses carry `Deprecation` and `Sunset: Tue, 05 Jan 2027 00:00:00 GMT`). A malformed value returns 400 `INVALID_AUTH_ORG`; a client organization the partner cannot access returns 403 `PARTNER_CLIENT_ACCESS_DENIED`."
          in: header
          name: x-auth-org
          required: false
          schema:
            format: RUUID
            maxLength: 22
            minLength: 22
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Camera_GetCameraPtzPatrolWSRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Camera_GetCameraPtzPatrolWSResponse"
          description: OK
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
        - ApiKeyAuth: []
        - oauth2:
            - read
      summary: Get PTZ patrol
      tags:
        - Camera Webservice
components:
  schemas:
    Camera_GetCameraPtzPatrolWSRequest:
      description: Request for a mechanical PTZ camera's patrol.
      properties:
        cameraUuid:
          description: RUUID with optional appended facet information
          example: AAAAAAAAAAAAAAAAAAAAAA.v0
          format: DeviceFacetUuid
          nullable: true
          type: string
      type: object
    Camera_GetCameraPtzPatrolWSResponse:
      description: A mechanical PTZ camera's patrol. A camera that never had one is disabled with no points.
      properties:
        error:
          nullable: true
          type: boolean
        errorCode:
          description: Stable, machine-readable code for the failure (one of the ApiErrorCode catalog) when error is true. Branch on this, not on errorMsg.
          nullable: true
          type: string
        errorMsg:
          nullable: true
          type: string
        patrol:
          $ref: "#/components/schemas/Camera_CameraPtzPatrolType"
        warningMsg:
          nullable: true
          type: string
      type: object
    Camera_CameraPtzPatrolType:
      description: A mechanical PTZ (R650) patrol. While enabled, the camera visits the points in order, stays at each for its dwell, and wraps back to the first. Any user move pauses the patrol for 30 seconds.
      properties:
        enabled:
          description: Whether the camera is patrolling
          nullable: true
          type: boolean
        points:
          description: The patrol points in visiting order, at most 32
          items:
            $ref: "#/components/schemas/Camera_CameraPtzPatrolPointType"
          nullable: true
          type: array
      type: object
    Camera_CameraPtzPatrolPointType:
      description: "One stop of a mechanical PTZ (R650) patrol: a position, captured from the camera's live position, and how long to stay there."
      properties:
        dwellSecs:
          description: Seconds to stay at this point once the camera arrives, [1, 86400]. Defaults to 15 when left out of an update.
          example: 15
          format: int32
          nullable: true
          type: integer
        name:
          description: Label shown in the console, e.g. "Gate entrance". Optional, at most 64 characters; surrounding whitespace is trimmed and a blank name is stored as none.
          example: Gate entrance
          nullable: true
          type: string
        panDegrees:
          description: Horizontal rotation in degrees, [0, 360)
          example: 90.5
          format: float
          nullable: true
          type: number
        tiltDegrees:
          description: Vertical rotation in degrees, [-20, 200]
          example: 10
          format: float
          nullable: true
          type: number
        zoom:
          description: Zoom motor step, 0 or more
          example: 400
          format: int32
          nullable: true
          type: integer
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: Your Rhombus API key. Must be accompanied by the `x-auth-scheme` header set to `api-token` (or `partner-api-token` for partner endpoints).
      in: header
      name: x-auth-apikey
      type: apiKey
    oauth2:
      description: 'OAuth 2.0 authorization code flow with PKCE (`S256`). Send the access token as `Authorization: Bearer <token>`. Each operation lists the scopes it requires; a token without them is refused 403 with `WWW-Authenticate: Bearer error="insufficient_scope"`.'
      flows:
        authorizationCode:
          authorizationUrl: https://console.rhombus.com/oauth/authorize
          refreshUrl: https://auth-web.rhombussystems.com/oauth/token
          scopes:
            physical: Unlock doors and elevators, lockdown, alarms, speakers and robots
            read: View cameras, footage and settings
            write: Change settings and data
          tokenUrl: https://auth-web.rhombussystems.com/oauth/token
      type: oauth2
````
