> ## Documentation Index
> Fetch the complete documentation index at: https://dynamo-csms.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Charge Points: Identity, Connector Status, Lifecycle

> Learn what a charge point is, how connectors work, the commissioning lifecycle, and how to group charge points into projects and sites.

A charge point is the physical EV charging unit that drivers interact with to charge their vehicles. In Dynamo CSMS, every charge point is a first-class resource with its own identity, configuration, and lifecycle. You manage charge points through the API to control availability, trigger charging sessions, apply pricing, and monitor real-time status.

## What is a charge point?

A charge point represents a single physical charger installed at a location. Each charge point has a globally unique `charge_point_id` that you use in all API requests that target it. This identifier is assigned during registration and cannot be changed.

```json theme={null}
{
  "charge_point_id": "cp_01HXYZ123ABC",
  "name": "Parking Lot A - Bay 3",
  "site_id": "site_01HXYZ000AAA",
  "project_id": "proj_01HXYZ999ZZZ",
  "ocpp_version": "1.6",
  "status": "online"
}
```

<Note>
  The `charge_point_id` is immutable after creation. Store it in your system as the canonical reference for the physical unit.
</Note>

## Charge points and connectors

A charge point contains one or more **connectors** — the physical sockets that plug into a vehicle. The charge point is the parent device; connectors are the individual charging outlets it exposes.

For example, a dual-port charger is one charge point with two connectors. You start and stop sessions on a specific connector, not the charge point as a whole.

| Concept      | Description                            | Example                                  |
| ------------ | -------------------------------------- | ---------------------------------------- |
| Charge point | The physical device                    | A wall-mounted unit in a parking garage  |
| Connector    | A single charging outlet on the device | Connector 1 (CCS), Connector 2 (CHAdeMO) |

## Connector statuses

Each connector reports a status at all times. Dynamo CSMS tracks status updates delivered via OCPP `StatusNotification` messages.

| Status        | Meaning                                                                   |
| ------------- | ------------------------------------------------------------------------- |
| `Available`   | The connector is idle and ready to accept a new charging session          |
| `Occupied`    | A vehicle is actively charging on this connector                          |
| `Faulted`     | The connector has reported a hardware or software fault and cannot charge |
| `Unavailable` | The connector has been administratively taken offline                     |
| `Reserved`    | The connector is held for a specific driver via a reservation             |

<Warning>
  A connector in `Faulted` status will not accept remote start commands. Resolve the fault or use `ChangeAvailability` to reset the connector before attempting to start a session.
</Warning>

## Charge point lifecycle

New charge points go through a commissioning workflow before they go live. Each stage must complete successfully before moving to the next.

<Steps>
  <Step title="Register">
    Call `POST /api/v1/installer/charge-points` with the device's serial number and OCPP credentials. The charge point is created in `pending` state and assigned its `charge_point_id`.
  </Step>

  <Step title="Configure">
    Push the required OCPP configuration keys to the charge point using `POST /api/v1/ocpp16/send_command` with the `ChangeConfiguration` action. Set heartbeat intervals, authorization modes, and network parameters.
  </Step>

  <Step title="Test connection">
    Confirm the charger has established a WebSocket connection and is sending heartbeats. Check `GET /api/v1/installer/charge-points/{charge_point_id}/connection-status` for `connected: true`.
  </Step>

  <Step title="Commission">
    Mark the charge point as commissioned by calling `POST /api/v1/installer/charge-points/{charge_point_id}/commission`. This transitions the unit to `commissioned` state and makes it eligible to accept sessions.
  </Step>

  <Step title="Online">
    Once the charge point sends its first `BootNotification` after commissioning, Dynamo CSMS transitions it to `online`. It is now fully operational.
  </Step>
</Steps>

<Tip>
  You can automate the registration and configuration steps using the bulk provisioning endpoints if you are deploying multiple charge points at once.
</Tip>

## Projects and sites

Charge points can be organized into two grouping levels: **projects** and **sites**.

<AccordionGroup>
  <Accordion title="Projects">
    A project is a logical grouping of charge points, typically representing a deployment contract or business unit. Projects let you apply billing rules, tariffs, and access policies across a collection of chargers at once.

    ```json theme={null}
    {
      "project_id": "proj_01HXYZ999ZZZ",
      "name": "Downtown Retail Deployment",
      "organization_id": "org_01HXYZ111BBB"
    }
    ```
  </Accordion>

  <Accordion title="Sites">
    A site represents a physical location — a parking garage, office campus, or shopping center. Charge points assigned to a site share geographic context and can be filtered together in reporting and monitoring queries.

    ```json theme={null}
    {
      "site_id": "site_01HXYZ000AAA",
      "name": "Maple Street Garage",
      "address": "100 Maple Street, Springfield",
      "project_id": "proj_01HXYZ999ZZZ"
    }
    ```
  </Accordion>
</AccordionGroup>

A charge point belongs to exactly one site and one project. Both are optional during registration but required before commissioning.

## Querying charge points

Use the list endpoint to retrieve charge points filtered by site, project, or status:

```bash theme={null}
GET /api/v1/installer/charge-points?site_id=site_01HXYZ000AAA&status=online
```

```json theme={null}
{
  "data": [
    {
      "charge_point_id": "cp_01HXYZ123ABC",
      "name": "Parking Lot A - Bay 3",
      "connectors": [
        { "connector_id": 1, "status": "Available" },
        { "connector_id": 2, "status": "Occupied" }
      ],
      "ocpp_version": "1.6",
      "status": "online",
      "last_heartbeat": "2026-05-01T10:22:00Z"
    }
  ],
  "total": 1
}
```

<CardGroup cols={2}>
  <Card title="OCPP protocols" icon="plug" href="/concepts/ocpp-protocols">
    Learn how charge points communicate with Dynamo CSMS over WebSocket using OCPP 1.6 and 2.0.1.
  </Card>

  <Card title="Billing model" icon="credit-card" href="/concepts/billing-model">
    Understand how charging sessions on connectors generate billing records and receipts.
  </Card>
</CardGroup>
