# Onboarding

> Bringing an asset onto the platform: onboarding workflows and the tasks assigned to you — gates, DPL rows, RfI fields, document upload and download, partner and asset owner access links, and prequalification submission.

API reference

Bringing an asset onto the platform: onboarding workflows and the tasks assigned to you — gates, DPL rows, RfI fields, document upload and download, partner and asset owner access links, and prequalification submission.

80 endpoints

· GET · /v1/onboarding-branding/{organization\_id}

### Get organization onboarding branding

onboarding.read

Returns branding for the caller's organization. EBX users may read branding for any organization.

Path parameters

organization\_id · REQUIRED

string · Organization identifier the branding belongs to.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboarding-branding/your-org" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboarding-branding/your-org" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-branding/your-org" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "organization_id" · : ·   · "<string>" · , · 
   · "organization_name" · : ·   · "<string>" · , · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · , · 
     · "email_banner_url" · : ·   · "<string>" · , · 
     · "magic_link_default_language" · : ·   · "de" · , · 
     · "magic_link_email_templates" · : ·   · "<string>" · 
   · } · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

 · PUT · /v1/onboarding-branding/{organization\_id}

### Create or update organization onboarding branding

onboarding.write

Updates the caller's organization branding. EBX writers may update any organization.

Path parameters

organization\_id · REQUIRED

string · Organization identifier the branding belongs to.

Request body · required

display\_name · REQUIRED

string

primary\_color · REQUIRED

string · Hex color, e.g. #1f4fff

support\_email · REQUIRED

string<email>

magic\_link\_default\_language

enum · `de` · `en`

magic\_link\_email\_templates

object

Example value

cURL:

```bash
curl ·   · -X ·  PUT  · "https://api.ebx.energy/v1/onboarding-branding/your-org" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"display_name":"<string>","primary_color":"<string>","support_email":"name@example.com","magic_link_default_language":"de","magic_link_email_templates":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.put(
     · "https://api.ebx.energy/v1/onboarding-branding/your-org" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "display_name" · : ·   · "<string>" · , · 
         · "primary_color" · : ·   · "<string>" · , · 
         · "support_email" · : ·   · "name@example.com" · , · 
         · "magic_link_default_language" · : ·   · "de" · , · 
         · "magic_link_email_templates" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-branding/your-org" · , ·   · { · 
   · method · : ·   · "PUT" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "display_name" · : · "<string>" · , · "primary_color" · : · "<string>" · , · "support_email" · : · "name@example.com" · , · "magic_link_default_language" · : · "de" · , · "magic_link_email_templates" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "display_name" · : ·   · "<string>" · , · 
   · "primary_color" · : ·   · "<string>" · , · 
   · "support_email" · : ·   · "<string>" · , · 
   · "logo_url" · : ·   · "<string>" · , · 
   · "email_banner_url" · : ·   · "<string>" · , · 
   · "magic_link_default_language" · : ·   · "de" · , · 
   · "magic_link_email_templates" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)· PUT · /v1/onboarding-branding/{organization\_id}/email-banner

### Upload an organization onboarding email banner

onboarding.write

Uploads the caller's organization-wide email banner as PNG, SVG, or JPEG (maximum 2 MB). EBX writers may upload for any organization.

Path parameters

organization\_id · REQUIRED

string · Organization identifier the branding belongs to.

Example value

cURL:

```bash
curl ·   · -X ·  PUT  · "https://api.ebx.energy/v1/onboarding-branding/your-org/email-banner" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.put(
     · "https://api.ebx.energy/v1/onboarding-branding/your-org/email-banner" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-branding/your-org/email-banner" · , ·   · { · 
   · method · : ·   · "PUT" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "display_name" · : ·   · "<string>" · , · 
   · "primary_color" · : ·   · "<string>" · , · 
   · "support_email" · : ·   · "<string>" · , · 
   · "logo_url" · : ·   · "<string>" · , · 
   · "email_banner_url" · : ·   · "<string>" · , · 
   · "magic_link_default_language" · : ·   · "de" · , · 
   · "magic_link_email_templates" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PUT · /v1/onboarding-branding/{organization\_id}/logo

### Upload an organization onboarding logo

onboarding.write

Uploads the caller's organization logo as PNG, SVG, or JPEG (maximum 512 KB). EBX writers may upload for any organization.

Path parameters

organization\_id · REQUIRED

string · Organization identifier the branding belongs to.

Example value

cURL:

```bash
curl ·   · -X ·  PUT  · "https://api.ebx.energy/v1/onboarding-branding/your-org/logo" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.put(
     · "https://api.ebx.energy/v1/onboarding-branding/your-org/logo" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-branding/your-org/logo" · , ·   · { · 
   · method · : ·   · "PUT" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "display_name" · : ·   · "<string>" · , · 
   · "primary_color" · : ·   · "<string>" · , · 
   · "support_email" · : ·   · "<string>" · , · 
   · "logo_url" · : ·   · "<string>" · , · 
   · "email_banner_url" · : ·   · "<string>" · , · 
   · "magic_link_default_language" · : ·   · "de" · , · 
   · "magic_link_email_templates" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboarding-magic/{token}/exchange

### Exchange an onboarding magic link

Validates a reusable external onboarding magic link and returns Cognito tokens scoped to the assigned task principal.

Path parameters

token · REQUIRED

string · Raw magic-link token from the external onboarding email.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboarding-magic/ml_9f2c4b8a1d3e/exchange" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboarding-magic/ml_9f2c4b8a1d3e/exchange" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-magic/ml_9f2c4b8a1d3e/exchange" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "access_token" · : ·   · "<string>" · , · 
   · "id_token" · : ·   · "<string>" · , · 
   · "refresh_token" · : ·   · "<string>" · , · 
   · "token_type" · : ·   · "Bearer" · , · 
   · "expires_at" · : ·   · 0 · , · 
   · "session_id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "contact_name" · : ·   · "<string>" · , · 
   · "contact_email" · : ·   · "<string>" · , · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboarding-magic/refresh

### Refresh an onboarding magic-link session

Refreshes a Cognito access token for an active external onboarding magic-link session.

Request body · required

session\_id · REQUIRED

string

refresh\_token · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboarding-magic/refresh" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"session_id":"<string>","refresh_token":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboarding-magic/refresh" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "session_id" · : ·   · "<string>" · , · 
         · "refresh_token" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-magic/refresh" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "session_id" · : · "<string>" · , · "refresh_token" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "access_token" · : ·   · "<string>" · , · 
   · "id_token" · : ·   · "<string>" · , · 
   · "token_type" · : ·   · "Bearer" · , · 
   · "expires_at" · : ·   · 0 · 
 · }
```

Can raise

-   400 · malformed request
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboarding-tasks

### List assigned onboarding tasks

Returns the asset-owner, EPC, or EMS onboarding tasks assigned to the authenticated caller.

This endpoint takes no parameters.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboarding-tasks" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboarding-tasks" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "tasks" · : ·   · [ · 
     · { · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "overall_status" · : ·   · "in_progress" · , · 
       · "role" · : ·   · "asset_owner" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "gate_title" · : ·   · "<string>" · , · 
       · "gate_status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "ready" · : ·   · false · , · 
       · "branding" · : ·   · { · 
         · "display_name" · : ·   · "<string>" · , · 
         · "primary_color" · : ·   · "<string>" · , · 
         · "support_email" · : ·   · "<string>" · , · 
         · "logo_url" · : ·   · "<string>" · 
       · }, · 
       · "updated_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboarding-tasks/{onboarding\_id}

### Get onboarding task detail

Returns the guided-task payload for an assigned onboarding without exposing the full control-center workspace.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

Query parameters

role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · Assigned task role to load when the caller has multiple roles on the same onboarding.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "viewer_contact_name" · : ·   · "<string>" · , · 
   · "task_gate_ids" · : ·   · [ · 
     · "mon_rfi" · 
   · ], · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "process_document_slots" · : ·   · [ · 
     · { · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "description" · : ·   · "<string>" · , · 
       · "required" · : ·   · false · , · 
       · "allow_multiple" · : ·   · false · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · }, · 
   · "updated_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   404 · unknown or not visible
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· DELETE · /v1/onboarding-tasks/{onboarding\_id}/documents/{document\_id}

### Remove a task-scoped uploaded document

Soft-deletes a document the caller uploaded through their onboarding task so it no longer appears on the task or receives download URLs. The S3 object is not deleted synchronously.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

document\_id · REQUIRED

string<uuid> · Document identifier returned by the presigned upload request.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Example value

cURL:

```bash
curl ·   · -X ·  DELETE  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.delete(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "DELETE" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "viewer_contact_name" · : ·   · "<string>" · , · 
   · "task_gate_ids" · : ·   · [ · 
     · "mon_rfi" · 
   · ], · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "process_document_slots" · : ·   · [ · 
     · { · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "description" · : ·   · "<string>" · , · 
       · "required" · : ·   · false · , · 
       · "allow_multiple" · : ·   · false · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · }, · 
   · "updated_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboarding-tasks/{onboarding\_id}/documents/{document\_id}/download

### Download a task-scoped document

Returns a short-lived presigned S3 GET URL for a document the caller can access through their assigned onboarding task.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

document\_id · REQUIRED

string<uuid> · Document identifier returned by the presigned upload request.

Query parameters

role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · Assigned task role to download as when the caller has multiple roles on the same onboarding.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/download" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/download" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/download" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "download_url" · : ·   · "<string>" · , · 
   · "expires_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   404 · unknown or not visible
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboarding-tasks/{onboarding\_id}/documents/{document\_id}/finalize

### Finalize a task-scoped uploaded document

Marks a pending task evidence upload as available after the client has uploaded bytes to S3.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

document\_id · REQUIRED

string<uuid> · Document identifier returned by the presigned upload request.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/finalize" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/finalize" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/finalize" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "viewer_contact_name" · : ·   · "<string>" · , · 
   · "task_gate_ids" · : ·   · [ · 
     · "mon_rfi" · 
   · ], · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "process_document_slots" · : ·   · [ · 
     · { · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "description" · : ·   · "<string>" · , · 
       · "required" · : ·   · false · , · 
       · "allow_multiple" · : ·   · false · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · }, · 
   · "updated_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboarding-tasks/{onboarding\_id}/documents/presigned-upload

### Create a task-scoped document upload URL

Creates pending document metadata for task-owned evidence and returns a short-lived presigned S3 PUT URL.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

document\_type · REQUIRED

enum · `installation_photo_mdevice` · `installation_photo_antenna` · `test_results_signed` · `betriebsfahrt_data` · `pq_frequency_analysis` · `pq_doublestroke_file` · `pq_approval` · `eigentuemer` · `betreiber` · `other`

gate\_definition\_id

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved`

filename · REQUIRED

string

size\_bytes · REQUIRED

integer

content\_type · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/presigned-upload" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"document_type":"installation_photo_mdevice","gate_definition_id":"mon_rfi","filename":"<string>","size_bytes":0,"content_type":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/presigned-upload" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/documents/presigned-upload" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "document_type" · : · "installation_photo_mdevice" · , · "gate_definition_id" · : · "mon_rfi" · , · "filename" · : · "<string>" · , · "size_bytes" · : · 0 · , · "content_type" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "upload_url" · : ·   · "<string>" · , · 
   · "document_id" · : ·   · "<string>" · , · 
   · "expires_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboarding-tasks/{onboarding\_id}/dpl/rows/{row\_id}

### Update an EMS DPL task row

Updates externally editable implementation fields for one DPL row on the EMS software task.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

row\_id · REQUIRED

string · DPL row identifier from the onboarding software task payload.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

implementation\_status

enum · `pending` · `implemented` · `deviation` · `not_available`

received\_test\_value

number | integer

excluded

boolean

asset\_notes

string

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"implementation_status":"pending","received_test_value":0,"excluded":false,"asset_notes":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "implementation_status" · : ·   · "pending" · , · 
         · "received_test_value" · : ·   · 0 · , · 
         · "excluded" · : ·   · False · , · 
         · "asset_notes" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "implementation_status" · : · "pending" · , · "received_test_value" · : · 0 · , · "excluded" · : · false · , · "asset_notes" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "viewer_contact_name" · : ·   · "<string>" · , · 
   · "task_gate_ids" · : ·   · [ · 
     · "mon_rfi" · 
   · ], · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "process_document_slots" · : ·   · [ · 
     · { · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "description" · : ·   · "<string>" · , · 
       · "required" · : ·   · false · , · 
       · "allow_multiple" · : ·   · false · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · }, · 
   · "updated_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboarding-tasks/{onboarding\_id}/dpl/rows/{row\_id}/comments

### Comment on an EMS DPL task row

Adds an EMS clarification comment to one DPL row and opens the row discussion.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

row\_id · REQUIRED

string · DPL row identifier from the onboarding software task payload.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

body · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/comments" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"body":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/comments" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "body" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/comments" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "body" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "open" · , · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "author_user_name" · : ·   · "<string>" · , · 
       · "author_org_name" · : ·   · "<string>" · , · 
       · "author_side" · : ·   · "ebx" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "body" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "last_comment_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboarding-tasks/{onboarding\_id}/dpl/rows/{row\_id}/thread

### Update an EMS DPL task row discussion status

Opens or resolves the discussion thread for a DPL row without changing the row implementation values.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

row\_id · REQUIRED

string · DPL row identifier from the onboarding software task payload.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

status · REQUIRED

enum · `open` · `resolved`

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/thread" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"status":"open"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/thread" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "status" · : ·   · "open" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/thread" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "status" · : · "open" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "viewer_contact_name" · : ·   · "<string>" · , · 
   · "task_gate_ids" · : ·   · [ · 
     · "mon_rfi" · 
   · ], · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "process_document_slots" · : ·   · [ · 
     · { · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "description" · : ·   · "<string>" · , · 
       · "required" · : ·   · false · , · 
       · "allow_multiple" · : ·   · false · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · }, · 
   · "updated_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboarding-tasks/{onboarding\_id}/gates/{gate\_id}/auto-check

### Run a task-scoped gate auto-check

Returns the current automated check result visible from the external working view.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Externally owned workflow gate identifier.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/gates/mon_rfi/auto-check" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/gates/mon_rfi/auto-check" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/gates/mon_rfi/auto-check" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "pass" · , · 
   · "summary" · : ·   · "<string>" · , · 
   · "facts" · : ·   · [ · 
     · { · 
       · "label" · : ·   · "<string>" · , · 
       · "value" · : ·   · "<string>" · , · 
       · "pass" · : ·   · false · 
     · } · 
   · ], · 
   · "last_checked_at" · : ·   · "<string>" · , · 
   · "hardware_signal" · : ·   · { · 
     · "boxes" · : ·   · [ · 
       · { · 
         · "device" · : ·   · 0 · , · 
         · "signal_strength_pct" · : ·   · 0 · , · 
         · "lan_connected" · : ·   · false · , · 
         · "last_seen_at" · : ·   · "<string>" · 
       · } · 
     · ] · 
   · } · 
 · }
```

Can raise

-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboarding-tasks/{onboarding\_id}/gates/{gate\_id}/submit

### Submit an external onboarding task for EBX confirmation

Validates task-owned evidence/progress and moves the canonical gate to awaiting\_confirmation without passing it.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Externally owned workflow gate identifier.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

note

string

hardware

object

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/gates/mon_rfi/submit" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"note":"<string>","hardware":{"package_received_confirmed":false,"installation_confirmed":false,"notes":"<string>"}}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/gates/mon_rfi/submit" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "note" · : ·   · "<string>" · , · 
         · "hardware" · : ·   · { · 
             · "package_received_confirmed" · : ·   · False · , · 
             · "installation_confirmed" · : ·   · False · , · 
             · "notes" · : ·   · "<string>" · , · 
         · }, · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/gates/mon_rfi/submit" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "note" · : · "<string>" · , · "hardware" · :{ · "package_received_confirmed" · : · false · , · "installation_confirmed" · : · false · , · "notes" · : · "<string>" · }} · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "viewer_contact_name" · : ·   · "<string>" · , · 
   · "task_gate_ids" · : ·   · [ · 
     · "mon_rfi" · 
   · ], · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "process_document_slots" · : ·   · [ · 
     · { · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "description" · : ·   · "<string>" · , · 
       · "required" · : ·   · false · , · 
       · "allow_multiple" · : ·   · false · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · }, · 
   · "updated_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboarding-tasks/{onboarding\_id}/rfi

### Update an asset-owner RfI task

Stores asset-owner RfI/site-readiness progress without passing the canonical onboarding gate.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

rfi · REQUIRED

object

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"rfi":{"m_device":{"shipping_address":{"street":"<string>","postal_code":"<string>","city":"<string>","country":"<string>","attention":"<string>"},"site_contact":{"name":"<string>","email":"name@example.com","phone":"<string>"},"network_config":{"ems_server_ip":"","ebx_box_1_client_ip":"","ebx_box_2_client_ip":""},"planned_hw_installation_date":"<string>","delivery_mode":"loose_components","power_supply":"24v_dc","ethernet_available":false,"antenna_location_outdoors":false,"antenna_extension_cable":"none","notes":"<string>"},"control":{"ems_vendor":"<string>","ems_vendor_other":"<string>","ems_supports_modbus_tcp":false,"pq_submission_targeted":false,"ems_technical_contact":{"name":"<string>","email":"name@example.com","phone":"<string>"},"pq_data":"<string>","pq_documents":"<string>","notes":"<string>"},"field_meta":"<string>"}}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "rfi" · : ·   · { · 
             · "m_device" · : ·   · { · 
                 · "shipping_address" · : ·   · { · 
                     · "street" · : ·   · "<string>" · , · 
                     · "postal_code" · : ·   · "<string>" · , · 
                     · "city" · : ·   · "<string>" · , · 
                     · "country" · : ·   · "<string>" · , · 
                     · "attention" · : ·   · "<string>" · , · 
                 · }, · 
                 · "site_contact" · : ·   · { · 
                     · "name" · : ·   · "<string>" · , · 
                     · "email" · : ·   · "name@example.com" · , · 
                     · "phone" · : ·   · "<string>" · , · 
                 · }, · 
                 · "network_config" · : ·   · { · 
                     · "ems_server_ip" · : ·   · "" · , · 
                     · "ebx_box_1_client_ip" · : ·   · "" · , · 
                     · "ebx_box_2_client_ip" · : ·   · "" · , · 
                 · }, · 
                 · "planned_hw_installation_date" · : ·   · "<string>" · , · 
                 · "delivery_mode" · : ·   · "loose_components" · , · 
                 · "power_supply" · : ·   · "24v_dc" · , · 
                 · "ethernet_available" · : ·   · False · , · 
                 · "antenna_location_outdoors" · : ·   · False · , · 
                 · "antenna_extension_cable" · : ·   · "none" · , · 
                 · "notes" · : ·   · "<string>" · , · 
             · }, · 
             · "control" · : ·   · { · 
                 · "ems_vendor" · : ·   · "<string>" · , · 
                 · "ems_vendor_other" · : ·   · "<string>" · , · 
                 · "ems_supports_modbus_tcp" · : ·   · False · , · 
                 · "pq_submission_targeted" · : ·   · False · , · 
                 · "ems_technical_contact" · : ·   · { · 
                     · "name" · : ·   · "<string>" · , · 
                     · "email" · : ·   · "name@example.com" · , · 
                     · "phone" · : ·   · "<string>" · , · 
                 · }, · 
                 · "pq_data" · : ·   · "<string>" · , · 
                 · "pq_documents" · : ·   · "<string>" · , · 
                 · "notes" · : ·   · "<string>" · , · 
             · }, · 
             · "field_meta" · : ·   · "<string>" · , · 
         · }, · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "rfi" · :{ · "m_device" · :{ · "shipping_address" · :{ · "street" · : · "<string>" · , · "postal_code" · : · "<string>" · , · "city" · : · "<string>" · , · "country" · : · "<string>" · , · "attention" · : · "<string>" · }, · "site_contact" · :{ · "name" · : · "<string>" · , · "email" · : · "name@example.com" · , · "phone" · : · "<string>" · }, · "network_config" · :{ · "ems_server_ip" · : · "" · , · "ebx_box_1_client_ip" · : · "" · , · "ebx_box_2_client_ip" · : · "" · }, · "planned_hw_installation_date" · : · "<string>" · , · "delivery_mode" · : · "loose_components" · , · "power_supply" · : · "24v_dc" · , · "ethernet_available" · : · false · , · "antenna_location_outdoors" · : · false · , · "antenna_extension_cable" · : · "none" · , · "notes" · : · "<string>" · }, · "control" · :{ · "ems_vendor" · : · "<string>" · , · "ems_vendor_other" · : · "<string>" · , · "ems_supports_modbus_tcp" · : · false · , · "pq_submission_targeted" · : · false · , · "ems_technical_contact" · :{ · "name" · : · "<string>" · , · "email" · : · "name@example.com" · , · "phone" · : · "<string>" · }, · "pq_data" · : · "<string>" · , · "pq_documents" · : · "<string>" · , · "notes" · : · "<string>" · }, · "field_meta" · : · "<string>" · }} · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "role" · : ·   · "asset_owner" · , · 
   · "viewer_contact_name" · : ·   · "<string>" · , · 
   · "task_gate_ids" · : ·   · [ · 
     · "mon_rfi" · 
   · ], · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "process_document_slots" · : ·   · [ · 
     · { · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "description" · : ·   · "<string>" · , · 
       · "required" · : ·   · false · , · 
       · "allow_multiple" · : ·   · false · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "branding" · : ·   · { · 
     · "display_name" · : ·   · "<string>" · , · 
     · "primary_color" · : ·   · "<string>" · , · 
     · "support_email" · : ·   · "<string>" · , · 
     · "logo_url" · : ·   · "<string>" · 
   · }, · 
   · "updated_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboarding-tasks/{onboarding\_id}/rfi/fields/{field\_key}/comments

### Comment on an asset-owner RfI field

Adds a clarification comment to an RfI field on the asset-owner task and opens the field discussion thread.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

field\_key · REQUIRED

string · RfI field key from the RfI task field\_meta payload, for example `m_device.shipping_address`.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

body · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/comments" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"body":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/comments" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "body" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/comments" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "body" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "open" · , · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "author_user_name" · : ·   · "<string>" · , · 
       · "author_org_name" · : ·   · "<string>" · , · 
       · "author_side" · : ·   · "ebx" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "body" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "last_comment_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboarding-tasks/{onboarding\_id}/rfi/fields/{field\_key}/thread

### Update an asset-owner RfI field discussion status

Opens or resolves the clarification thread for an RfI field without changing the field values.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by the task list.

field\_key · REQUIRED

string · RfI field key from the RfI task field\_meta payload, for example `m_device.shipping_address`.

Header parameters

X-Onboarding-Preview-Role

enum · `asset_owner` · `epc` · `ems_provider` · `entrix_onboarding` · `ebx` · `tso` · EBX-internal view-as role. Requires onboarding.read for reads and onboarding.write for mutations.

Request body · required

status · REQUIRED

enum · `open` · `resolved`

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/thread" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"status":"open"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/thread" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "status" · : ·   · "open" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboarding-tasks/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/thread" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "status" · : · "open" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "open" · , · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "author_user_name" · : ·   · "<string>" · , · 
       · "author_org_name" · : ·   · "<string>" · , · 
       · "author_side" · : ·   · "ebx" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "body" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "last_comment_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings

### List visible onboardings

onboarding.read

Returns onboardings the caller can read. EBX users see all onboardings. Asset-owner users see onboardings for their organization. Task-principal users are intentionally scoped to /onboarding-tasks.

Query parameters

status

enum · `in_progress` · `blocked` · `completed` · `aborted` · Filter by overall onboarding status.

integration\_type

enum · `monitoring_only` · `full_control` · Filter by integration path: monitoring-only or full-control.

attention\_only

boolean · default false · When true, return only blocked and in-progress onboardings.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboardings" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "tso" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "target_hc_date" · : ·   · "2026-01-01" · , · 
       · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "overall_status" · : ·   · "in_progress" · , · 
       · "asset_owner_org_id" · : ·   · "<string>" · , · 
       · "asset_owner_org_name" · : ·   · "<string>" · , · 
       · "whitelabel" · : ·   · false · , · 
       · "process_definition" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "integration_type" · : ·   · "monitoring_only" · , · 
         · "version" · : ·   · "<string>" · , · 
         · "source_label" · : ·   · "<string>" · , · 
         · "gate_sequence" · : ·   · [ · 
           · "mon_rfi" · 
         · ], · 
         · "gate_definitions" · : ·   · "<string>" · , · 
         · "process_document_slots" · : ·   · [ · 
           · { · 
             · "document_type" · : ·   · "installation_photo_mdevice" · , · 
             · "label" · : ·   · "<string>" · , · 
             · "description" · : ·   · "<string>" · , · 
             · "required" · : ·   · false · , · 
             · "allow_multiple" · : ·   · false · 
           · } · 
         · ], · 
         · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
         · "schema_version" · : ·   · 0 · 
       · }, · 
       · "gate_definitions" · : ·   · "<string>" · , · 
       · "asset_profile" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "asset_id" · : ·   · "<string>" · , · 
         · "asset_name" · : ·   · "<string>" · , · 
         · "location" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "asset_owner_org_id" · : ·   · "<string>" · , · 
         · "asset_owner_org_name" · : ·   · "<string>" · , · 
         · "shipping_address" · : ·   · { · 
           · "street" · : ·   · "<string>" · , · 
           · "postal_code" · : ·   · "<string>" · , · 
           · "city" · : ·   · "<string>" · , · 
           · "country" · : ·   · "<string>" · , · 
           · "attention" · : ·   · "<string>" · 
         · }, · 
         · "site_contact" · : ·   · { · 
           · "name" · : ·   · "<string>" · , · 
           · "email" · : ·   · "name@example.com" · , · 
           · "phone" · : ·   · "<string>" · 
         · }, · 
         · "power_supply" · : ·   · "24v_dc" · , · 
         · "ethernet_available" · : ·   · false · , · 
         · "antenna_location_outdoors" · : ·   · false · , · 
         · "ems_vendor" · : ·   · "<string>" · , · 
         · "ems_vendor_other" · : ·   · "<string>" · , · 
         · "ems_supports_modbus_tcp" · : ·   · false · , · 
         · "pq_submission_targeted" · : ·   · false · , · 
         · "ems_technical_contact" · : ·   · { · 
           · "name" · : ·   · "<string>" · , · 
           · "email" · : ·   · "name@example.com" · , · 
           · "phone" · : ·   · "<string>" · 
         · }, · 
         · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "source_gate_passed_at" · : ·   · "<string>" · , · 
         · "source_gate_updated_at" · : ·   · "<string>" · , · 
         · "synced_at" · : ·   · "<string>" · , · 
         · "sync_reason" · : ·   · "<string>" · 
       · }, · 
       · "asset_owner_contact" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · }, · 
       · "asset_owner_contacts" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "contact_name" · : ·   · "<string>" · , · 
           · "contact_email" · : ·   · "<string>" · , · 
           · "access" · : ·   · { · 
             · "status" · : ·   · "<string>" · 
           · } · 
         · } · 
       · ], · 
       · "partners" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "role" · : ·   · "epc" · , · 
           · "org_name" · : ·   · "<string>" · , · 
           · "contact_name" · : ·   · "<string>" · , · 
           · "contact_email" · : ·   · "<string>" · , · 
           · "access" · : ·   · { · 
             · "status" · : ·   · "<string>" · 
           · } · 
         · } · 
       · ], · 
       · "created_at" · : ·   · "<string>" · , · 
       · "updated_at" · : ·   · "<string>" · , · 
       · "gates" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "definition_id" · : ·   · "mon_rfi" · , · 
           · "status" · : ·   · "pending" · , · 
           · "deadline" · : ·   · "2026-01-01" · , · 
           · "last_note" · : ·   · "<string>" · , · 
           · "passed_at" · : ·   · "<string>" · , · 
           · "passed_by_user_name" · : ·   · "<string>" · , · 
           · "structured_data" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "documents" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "onboarding_id" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · , · 
           · "document_type" · : ·   · "installation_photo_mdevice" · , · 
           · "filename" · : ·   · "<string>" · , · 
           · "size_bytes" · : ·   · 0 · , · 
           · "content_type" · : ·   · "<string>" · , · 
           · "uploaded_at" · : ·   · "<string>" · , · 
           · "uploaded_by_user_name" · : ·   · "<string>" · , · 
           · "version" · : ·   · 0 · 
         · } · 
       · ], · 
       · "activity" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "onboarding_id" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · , · 
           · "actor_user_name" · : ·   · "<string>" · , · 
           · "actor_org_name" · : ·   · "<string>" · , · 
           · "event_type" · : ·   · "onboarding_created" · , · 
           · "note" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "internal_tracker" · : ·   · { · 
         · "tasks" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "title" · : ·   · "<string>" · , · 
             · "description" · : ·   · "<string>" · , · 
             · "status" · : ·   · "open" · , · 
             · "category" · : ·   · "<string>" · , · 
             · "template_key" · : ·   · "<string>" · , · 
             · "due_date" · : ·   · "<string>" · , · 
             · "created_by_user_name" · : ·   · "<string>" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "updated_at" · : ·   · "<string>" · , · 
             · "completed_at" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "open_points" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "title" · : ·   · "<string>" · , · 
             · "status" · : ·   · "open" · , · 
             · "ref" · : ·   · { · 
               · "kind" · : ·   · "<string>" · , · 
               · "gate_definition_id" · : ·   · "mon_rfi" · 
             · }, · 
             · "comments" · : ·   · [ · 
               · { · 
                 · "id" · : ·   · "<string>" · , · 
                 · "author_user_name" · : ·   · "<string>" · , · 
                 · "author_org_name" · : ·   · "<string>" · , · 
                 · "author_side" · : ·   · "ebx" · , · 
                 · "created_at" · : ·   · "<string>" · , · 
                 · "body" · : ·   · "<string>" · 
               · } · 
             · ], · 
             · "created_by_user_name" · : ·   · "<string>" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "updated_at" · : ·   · "<string>" · , · 
             · "resolved_at" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "applied_templates" · : ·   · [ · 
           · "<string>" · 
         · ] · 
       · } · 
     · } · 
   · ] · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings

### Create an onboarding workflow

onboarding.write

Creates a version-pinned onboarding workflow for a new asset. The service stores the selected process definition, creates all gates, starts the first gate, initializes gate payloads such as RFI/DPL data where applicable, and records the initial activity log entries. Organization writers create onboardings for their own organization; EBX writers may select any registered organization.

Request body · required

asset\_name · REQUIRED

string

location · REQUIRED

string

country · REQUIRED

string

tso

string · Control area, canonical TSO short id (e.g. 50HZ)

integration\_type · REQUIRED

enum · `monitoring_only` · `full_control`

target\_hc\_date · REQUIRED

string<date>

asset\_owner\_org\_id · REQUIRED

string

asset\_owner\_org\_name · REQUIRED

string

asset\_owner\_contact

object

asset\_id

string

register\_asset

boolean · default false · Create and atomically link the onboarding stub asset. Mutually exclusive with asset\_id.

partners

array\[object\]

whitelabel

boolean · default false · Brand the external onboarding surface with the owner org's branding. Requires branding to be configured for the org.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"asset_name":"<string>","location":"<string>","country":"<string>","tso":"<string>","integration_type":"monitoring_only","target_hc_date":"2026-01-01","asset_owner_org_id":"<string>","asset_owner_org_name":"<string>","asset_owner_contact":{"contact_name":"<string>","contact_email":"name@example.com"},"asset_id":"<string>","register_asset":false,"partners":[{"role":"epc","org_name":"<string>","contact_name":"<string>","contact_email":"name@example.com"}],"whitelabel":false}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "asset_name" · : ·   · "<string>" · , · 
         · "location" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "tso" · : ·   · "<string>" · , · 
         · "integration_type" · : ·   · "monitoring_only" · , · 
         · "target_hc_date" · : ·   · "2026-01-01" · , · 
         · "asset_owner_org_id" · : ·   · "<string>" · , · 
         · "asset_owner_org_name" · : ·   · "<string>" · , · 
         · "asset_owner_contact" · : ·   · { · 
             · "contact_name" · : ·   · "<string>" · , · 
             · "contact_email" · : ·   · "name@example.com" · , · 
         · }, · 
         · "asset_id" · : ·   · "<string>" · , · 
         · "register_asset" · : ·   · False · , · 
         · "partners" · : ·   · [ · 
             · { · 
                 · "role" · : ·   · "epc" · , · 
                 · "org_name" · : ·   · "<string>" · , · 
                 · "contact_name" · : ·   · "<string>" · , · 
                 · "contact_email" · : ·   · "name@example.com" · , · 
             · }, · 
         · ], · 
         · "whitelabel" · : ·   · False · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "asset_name" · : · "<string>" · , · "location" · : · "<string>" · , · "country" · : · "<string>" · , · "tso" · : · "<string>" · , · "integration_type" · : · "monitoring_only" · , · "target_hc_date" · : · "2026-01-01" · , · "asset_owner_org_id" · : · "<string>" · , · "asset_owner_org_name" · : · "<string>" · , · "asset_owner_contact" · :{ · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · }, · "asset_id" · : · "<string>" · , · "register_asset" · : · false · , · "partners" · :[{ · "role" · : · "epc" · , · "org_name" · : · "<string>" · , · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · }], · "whitelabel" · : · false · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}

### Get onboarding details

onboarding.read

Returns the complete onboarding state for a visible onboarding, including the persisted process definition, current gate states, partner assignments, document metadata, activity log, DPL discussions, and synced asset profile when available.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}

### Update onboarding metadata

onboarding.write

Updates onboarding metadata within the caller's authorized organization. Changing the target HC date recalculates gate deadlines from the persisted process definition. Changing the asset id updates the synced asset profile identity when a profile already exists.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

target\_hc\_date

string<date>

asset\_id

string

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"target_hc_date":"2026-01-01","asset_id":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "target_hc_date" · : ·   · "2026-01-01" · , · 
         · "asset_id" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "target_hc_date" · : · "2026-01-01" · , · "asset_id" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/asset-owner-contact

### Set or edit the asset-owner contact

onboarding.write

Creates or updates the asset-owner contact without sending a magic link. Changing the contact email — or editing a previously revoked contact — resets external access to not\_invited and invalidates outstanding magic links; a name-only edit keeps the current access state.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

contact\_name

string

contact\_email

string<email>

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner-contact" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"contact_name":"<string>","contact_email":"name@example.com"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner-contact" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "name@example.com" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner-contact" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/asset-owner/access/revoke

### Revoke asset-owner onboarding task access

onboarding.write

Revokes active links, refresh sessions, database access state, and the matching Cognito task-principal group for one asset-owner contact.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

contact\_name

string

contact\_email

string<email>

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/access/revoke" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"contact_name":"<string>","contact_email":"name@example.com"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/access/revoke" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "name@example.com" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/access/revoke" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "tso" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "target_hc_date" · : ·   · "2026-01-01" · , · 
     · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "overall_status" · : ·   · "in_progress" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "whitelabel" · : ·   · false · , · 
     · "process_definition" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "version" · : ·   · "<string>" · , · 
       · "source_label" · : ·   · "<string>" · , · 
       · "gate_sequence" · : ·   · [ · 
         · "mon_rfi" · 
       · ], · 
       · "gate_definitions" · : ·   · "<string>" · , · 
       · "process_document_slots" · : ·   · [ · 
         · { · 
           · "document_type" · : ·   · "installation_photo_mdevice" · , · 
           · "label" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "required" · : ·   · false · , · 
           · "allow_multiple" · : ·   · false · 
         · } · 
       · ], · 
       · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
       · "schema_version" · : ·   · 0 · 
     · }, · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "asset_profile" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "asset_owner_org_id" · : ·   · "<string>" · , · 
       · "asset_owner_org_name" · : ·   · "<string>" · , · 
       · "shipping_address" · : ·   · { · 
         · "street" · : ·   · "<string>" · , · 
         · "postal_code" · : ·   · "<string>" · , · 
         · "city" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "attention" · : ·   · "<string>" · 
       · }, · 
       · "site_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "power_supply" · : ·   · "24v_dc" · , · 
       · "ethernet_available" · : ·   · false · , · 
       · "antenna_location_outdoors" · : ·   · false · , · 
       · "ems_vendor" · : ·   · "<string>" · , · 
       · "ems_vendor_other" · : ·   · "<string>" · , · 
       · "ems_supports_modbus_tcp" · : ·   · false · , · 
       · "pq_submission_targeted" · : ·   · false · , · 
       · "ems_technical_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "source_gate_passed_at" · : ·   · "<string>" · , · 
       · "source_gate_updated_at" · : ·   · "<string>" · , · 
       · "synced_at" · : ·   · "<string>" · , · 
       · "sync_reason" · : ·   · "<string>" · 
     · }, · 
     · "asset_owner_contact" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · }, · 
     · "asset_owner_contacts" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "partners" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "created_at" · : ·   · "<string>" · , · 
     · "updated_at" · : ·   · "<string>" · , · 
     · "gates" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "definition_id" · : ·   · "mon_rfi" · , · 
         · "status" · : ·   · "pending" · , · 
         · "deadline" · : ·   · "2026-01-01" · , · 
         · "last_note" · : ·   · "<string>" · , · 
         · "passed_at" · : ·   · "<string>" · , · 
         · "passed_by_user_name" · : ·   · "<string>" · , · 
         · "structured_data" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "documents" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
         · "uploaded_at" · : ·   · "<string>" · , · 
         · "uploaded_by_user_name" · : ·   · "<string>" · , · 
         · "version" · : ·   · 0 · 
       · } · 
     · ], · 
     · "activity" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "actor_user_name" · : ·   · "<string>" · , · 
         · "actor_org_name" · : ·   · "<string>" · , · 
         · "event_type" · : ·   · "onboarding_created" · , · 
         · "note" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "internal_tracker" · : ·   · { · 
       · "tasks" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "category" · : ·   · "<string>" · , · 
           · "template_key" · : ·   · "<string>" · , · 
           · "due_date" · : ·   · "<string>" · , · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "completed_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "open_points" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "ref" · : ·   · { · 
             · "kind" · : ·   · "<string>" · , · 
             · "gate_definition_id" · : ·   · "mon_rfi" · 
           · }, · 
           · "comments" · : ·   · [ · 
             · { · 
               · "id" · : ·   · "<string>" · , · 
               · "author_user_name" · : ·   · "<string>" · , · 
               · "author_org_name" · : ·   · "<string>" · , · 
               · "author_side" · : ·   · "ebx" · , · 
               · "created_at" · : ·   · "<string>" · , · 
               · "body" · : ·   · "<string>" · 
             · } · 
           · ], · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "resolved_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "applied_templates" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · } · 
   · }, · 
   · "revoked_link_count" · : ·   · 0 · , · 
   · "revoked_session_count" · : ·   · 0 · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/asset-owner/magic-link

### Send an asset-owner onboarding magic link

onboarding.write

Creates a six-month reusable magic link for the asset-owner site-readiness task and sends it to the contact email.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

language

enum · `de` · `en`

email\_template

object

contact\_name

string

contact\_email

string<email>

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/magic-link" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"language":"de","email_template":{"subject":"<string>","greeting":"<string>","body":"<string>","button_label":"<string>","fallback_text":"<string>","signature":"<string>","generated":"<string>"},"contact_name":"<string>","contact_email":"name@example.com"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/magic-link" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "language" · : ·   · "de" · , · 
         · "email_template" · : ·   · { · 
             · "subject" · : ·   · "<string>" · , · 
             · "greeting" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · , · 
             · "button_label" · : ·   · "<string>" · , · 
             · "fallback_text" · : ·   · "<string>" · , · 
             · "signature" · : ·   · "<string>" · , · 
             · "generated" · : ·   · "<string>" · , · 
         · }, · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "name@example.com" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/magic-link" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "language" · : · "de" · , · "email_template" · :{ · "subject" · : · "<string>" · , · "greeting" · : · "<string>" · , · "body" · : · "<string>" · , · "button_label" · : · "<string>" · , · "fallback_text" · : · "<string>" · , · "signature" · : · "<string>" · , · "generated" · : · "<string>" · }, · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "tso" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "target_hc_date" · : ·   · "2026-01-01" · , · 
     · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "overall_status" · : ·   · "in_progress" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "whitelabel" · : ·   · false · , · 
     · "process_definition" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "version" · : ·   · "<string>" · , · 
       · "source_label" · : ·   · "<string>" · , · 
       · "gate_sequence" · : ·   · [ · 
         · "mon_rfi" · 
       · ], · 
       · "gate_definitions" · : ·   · "<string>" · , · 
       · "process_document_slots" · : ·   · [ · 
         · { · 
           · "document_type" · : ·   · "installation_photo_mdevice" · , · 
           · "label" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "required" · : ·   · false · , · 
           · "allow_multiple" · : ·   · false · 
         · } · 
       · ], · 
       · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
       · "schema_version" · : ·   · 0 · 
     · }, · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "asset_profile" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "asset_owner_org_id" · : ·   · "<string>" · , · 
       · "asset_owner_org_name" · : ·   · "<string>" · , · 
       · "shipping_address" · : ·   · { · 
         · "street" · : ·   · "<string>" · , · 
         · "postal_code" · : ·   · "<string>" · , · 
         · "city" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "attention" · : ·   · "<string>" · 
       · }, · 
       · "site_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "power_supply" · : ·   · "24v_dc" · , · 
       · "ethernet_available" · : ·   · false · , · 
       · "antenna_location_outdoors" · : ·   · false · , · 
       · "ems_vendor" · : ·   · "<string>" · , · 
       · "ems_vendor_other" · : ·   · "<string>" · , · 
       · "ems_supports_modbus_tcp" · : ·   · false · , · 
       · "pq_submission_targeted" · : ·   · false · , · 
       · "ems_technical_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "source_gate_passed_at" · : ·   · "<string>" · , · 
       · "source_gate_updated_at" · : ·   · "<string>" · , · 
       · "synced_at" · : ·   · "<string>" · , · 
       · "sync_reason" · : ·   · "<string>" · 
     · }, · 
     · "asset_owner_contact" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · }, · 
     · "asset_owner_contacts" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "partners" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "created_at" · : ·   · "<string>" · , · 
     · "updated_at" · : ·   · "<string>" · , · 
     · "gates" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "definition_id" · : ·   · "mon_rfi" · , · 
         · "status" · : ·   · "pending" · , · 
         · "deadline" · : ·   · "2026-01-01" · , · 
         · "last_note" · : ·   · "<string>" · , · 
         · "passed_at" · : ·   · "<string>" · , · 
         · "passed_by_user_name" · : ·   · "<string>" · , · 
         · "structured_data" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "documents" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
         · "uploaded_at" · : ·   · "<string>" · , · 
         · "uploaded_by_user_name" · : ·   · "<string>" · , · 
         · "version" · : ·   · 0 · 
       · } · 
     · ], · 
     · "activity" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "actor_user_name" · : ·   · "<string>" · , · 
         · "actor_org_name" · : ·   · "<string>" · , · 
         · "event_type" · : ·   · "onboarding_created" · , · 
         · "note" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "internal_tracker" · : ·   · { · 
       · "tasks" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "category" · : ·   · "<string>" · , · 
           · "template_key" · : ·   · "<string>" · , · 
           · "due_date" · : ·   · "<string>" · , · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "completed_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "open_points" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "ref" · : ·   · { · 
             · "kind" · : ·   · "<string>" · , · 
             · "gate_definition_id" · : ·   · "mon_rfi" · 
           · }, · 
           · "comments" · : ·   · [ · 
             · { · 
               · "id" · : ·   · "<string>" · , · 
               · "author_user_name" · : ·   · "<string>" · , · 
               · "author_org_name" · : ·   · "<string>" · , · 
               · "author_side" · : ·   · "ebx" · , · 
               · "created_at" · : ·   · "<string>" · , · 
               · "body" · : ·   · "<string>" · 
             · } · 
           · ], · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "resolved_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "applied_templates" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · } · 
   · }, · 
   · "dev_magic_link" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/asset-owner/magic-link/revoke

### Revoke active asset-owner onboarding magic links

onboarding.write

Revokes active reusable magic links and refresh sessions for one asset-owner contact without revoking future access.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

contact\_name

string

contact\_email

string<email>

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/magic-link/revoke" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"contact_name":"<string>","contact_email":"name@example.com"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/magic-link/revoke" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "name@example.com" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/asset-owner/magic-link/revoke" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "tso" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "target_hc_date" · : ·   · "2026-01-01" · , · 
     · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "overall_status" · : ·   · "in_progress" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "whitelabel" · : ·   · false · , · 
     · "process_definition" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "version" · : ·   · "<string>" · , · 
       · "source_label" · : ·   · "<string>" · , · 
       · "gate_sequence" · : ·   · [ · 
         · "mon_rfi" · 
       · ], · 
       · "gate_definitions" · : ·   · "<string>" · , · 
       · "process_document_slots" · : ·   · [ · 
         · { · 
           · "document_type" · : ·   · "installation_photo_mdevice" · , · 
           · "label" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "required" · : ·   · false · , · 
           · "allow_multiple" · : ·   · false · 
         · } · 
       · ], · 
       · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
       · "schema_version" · : ·   · 0 · 
     · }, · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "asset_profile" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "asset_owner_org_id" · : ·   · "<string>" · , · 
       · "asset_owner_org_name" · : ·   · "<string>" · , · 
       · "shipping_address" · : ·   · { · 
         · "street" · : ·   · "<string>" · , · 
         · "postal_code" · : ·   · "<string>" · , · 
         · "city" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "attention" · : ·   · "<string>" · 
       · }, · 
       · "site_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "power_supply" · : ·   · "24v_dc" · , · 
       · "ethernet_available" · : ·   · false · , · 
       · "antenna_location_outdoors" · : ·   · false · , · 
       · "ems_vendor" · : ·   · "<string>" · , · 
       · "ems_vendor_other" · : ·   · "<string>" · , · 
       · "ems_supports_modbus_tcp" · : ·   · false · , · 
       · "pq_submission_targeted" · : ·   · false · , · 
       · "ems_technical_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "source_gate_passed_at" · : ·   · "<string>" · , · 
       · "source_gate_updated_at" · : ·   · "<string>" · , · 
       · "synced_at" · : ·   · "<string>" · , · 
       · "sync_reason" · : ·   · "<string>" · 
     · }, · 
     · "asset_owner_contact" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · }, · 
     · "asset_owner_contacts" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "partners" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "created_at" · : ·   · "<string>" · , · 
     · "updated_at" · : ·   · "<string>" · , · 
     · "gates" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "definition_id" · : ·   · "mon_rfi" · , · 
         · "status" · : ·   · "pending" · , · 
         · "deadline" · : ·   · "2026-01-01" · , · 
         · "last_note" · : ·   · "<string>" · , · 
         · "passed_at" · : ·   · "<string>" · , · 
         · "passed_by_user_name" · : ·   · "<string>" · , · 
         · "structured_data" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "documents" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
         · "uploaded_at" · : ·   · "<string>" · , · 
         · "uploaded_by_user_name" · : ·   · "<string>" · , · 
         · "version" · : ·   · 0 · 
       · } · 
     · ], · 
     · "activity" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "actor_user_name" · : ·   · "<string>" · , · 
         · "actor_org_name" · : ·   · "<string>" · , · 
         · "event_type" · : ·   · "onboarding_created" · , · 
         · "note" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "internal_tracker" · : ·   · { · 
       · "tasks" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "category" · : ·   · "<string>" · , · 
           · "template_key" · : ·   · "<string>" · , · 
           · "due_date" · : ·   · "<string>" · , · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "completed_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "open_points" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "ref" · : ·   · { · 
             · "kind" · : ·   · "<string>" · , · 
             · "gate_definition_id" · : ·   · "mon_rfi" · 
           · }, · 
           · "comments" · : ·   · [ · 
             · { · 
               · "id" · : ·   · "<string>" · , · 
               · "author_user_name" · : ·   · "<string>" · , · 
               · "author_org_name" · : ·   · "<string>" · , · 
               · "author_side" · : ·   · "ebx" · , · 
               · "created_at" · : ·   · "<string>" · , · 
               · "body" · : ·   · "<string>" · 
             · } · 
           · ], · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "resolved_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "applied_templates" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · } · 
   · }, · 
   · "revoked_link_count" · : ·   · 0 · , · 
   · "revoked_session_count" · : ·   · 0 · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}/betriebsfahrt

### Betriebsfahrt status of the onboarding

onboarding.read

The milestone's poll target: whether the automated Betriebsfahrt is available, which preconditions still fail, the plan defaults and the session being worked on.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "enabled" · : ·   · false · , · 
   · "server_now" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "preconditions" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "status" · : ·   · "ok" · , · 
       · "detail" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "can_create_session" · : ·   · false · , · 
   · "defaults" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · 
   · }, · 
   · "session" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "draft" · , · 
     · "execution_mode" · : ·   · "real" · , · 
     · "supersedes_session_id" · : ·   · "<string>" · , · 
     · "parameters" · : ·   · { · 
       · "first_direction" · : ·   · "positive" · , · 
       · "single_direction" · : ·   · false · , · 
       · "extended_stroke_minutes" · : ·   · 0 · , · 
       · "extended_stroke_min_minutes" · : ·   · 0 · , · 
       · "extended_stroke_max_minutes" · : ·   · 0 · , · 
       · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
       · "capacity_mw" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "products" · : ·   · { · 
         · "positive" · : ·   · [ · 
           · "<string>" · 
         · ], · 
         · "negative" · : ·   · [ · 
           · "<string>" · 
         · ] · 
       · }, · 
       · "product_capacity_mw" · : ·   · "<string>" · , · 
       · "usable_energy_mwh" · : ·   · "<string>" · , · 
       · "energy_safety_margin" · : ·   · "<string>" · , · 
       · "energy_per_run_mwh" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "ramp_mw_per_s" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "fcr_ramp_required_mw_per_s" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "measurement_point" · : ·   · "<string>" · , · 
       · "retention_minutes" · : ·   · 0 · , · 
       · "stroke_minutes" · : ·   · 0 · 
     · }, · 
     · "findings" · : ·   · [ · 
       · { · 
         · "code" · : ·   · "<string>" · , · 
         · "severity" · : ·   · "blocker" · , · 
         · "message" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "plan_sha256" · : ·   · "<string>" · , · 
     · "plan" · : ·   · "<string>" · , · 
     · "runs" · : ·   · [ · 
       · { · 
         · "index" · : ·   · 0 · , · 
         · "direction" · : ·   · "positive" · , · 
         · "products" · : ·   · [ · 
           · "<string>" · 
         · ], · 
         · "requested_capacity_mw" · : ·   · "<string>" · , · 
         · "phases" · : ·   · [ · 
           · { · 
             · "index" · : ·   · 0 · , · 
             · "kind" · : ·   · "retention" · , · 
             · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "setpoint_mw" · : ·   · "<string>" · , · 
             · "window_id" · : ·   · "<string>" · , · 
             · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
           · } · 
         · ], · 
         · "status" · : ·   · "pending" · , · 
         · "follow_checks" · : ·   · [ · 
           · { · 
             · "phase_index" · : ·   · 0 · , · 
             · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "expected_mw" · : ·   · "<string>" · , · 
             · "measured_mw" · : ·   · "<string>" · , · 
             · "passed" · : ·   · false · , · 
             · "detail" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "proofs" · : ·   · "<string>" · , · 
         · "uploads" · : ·   · "<string>" · , · 
         · "verdicts" · : ·   · "<string>" · , · 
         · "overrides" · : ·   · [ · 
           · { · 
             · "product" · : ·   · "<string>" · , · 
             · "reason" · : ·   · "<string>" · , · 
             · "by_user_id" · : ·   · "<string>" · , · 
             · "by_user_name" · : ·   · "<string>" · , · 
             · "at" · : ·   · "2026-09-10T13:30:00Z" · 
           · } · 
         · ], · 
         · "error" · : ·   · "<string>" · , · 
         · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
       · } · 
     · ], · 
     · "driver" · : ·   · { · 
       · "request_id" · : ·   · "<string>" · , · 
       · "run_id" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "tracking_source" · : ·   · "<string>" · , · 
       · "events" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "progress" · : ·   · { · 
       · "current_run_index" · : ·   · 0 · , · 
       · "current_phase_index" · : ·   · 0 · , · 
       · "confidence" · : ·   · "confirmed" · , · 
       · "remaining_seconds" · : ·   · 0 · 
     · }, · 
     · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "confirmed_by_user_name" · : ·   · "<string>" · , · 
     · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "abort_reason" · : ·   · "<string>" · , · 
     · "last_error" · : ·   · "<string>" · , · 
     · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "row_version" · : ·   · 0 · , · 
     · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
   · }, · 
   · "history_count" · : ·   · 0 · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions

### Betriebsfahrt session history

onboarding.read

Every session of the onboarding, newest first, including superseded and ended ones.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
[ · 
   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "draft" · , · 
     · "execution_mode" · : ·   · "real" · , · 
     · "supersedes_session_id" · : ·   · "<string>" · , · 
     · "parameters" · : ·   · { · 
       · "first_direction" · : ·   · "positive" · , · 
       · "single_direction" · : ·   · false · , · 
       · "extended_stroke_minutes" · : ·   · 0 · , · 
       · "extended_stroke_min_minutes" · : ·   · 0 · , · 
       · "extended_stroke_max_minutes" · : ·   · 0 · , · 
       · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
       · "capacity_mw" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "products" · : ·   · { · 
         · "positive" · : ·   · [ · 
           · "<string>" · 
         · ], · 
         · "negative" · : ·   · [ · 
           · "<string>" · 
         · ] · 
       · }, · 
       · "product_capacity_mw" · : ·   · "<string>" · , · 
       · "usable_energy_mwh" · : ·   · "<string>" · , · 
       · "energy_safety_margin" · : ·   · "<string>" · , · 
       · "energy_per_run_mwh" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "ramp_mw_per_s" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "fcr_ramp_required_mw_per_s" · : ·   · { · 
         · "positive" · : ·   · "<string>" · , · 
         · "negative" · : ·   · "<string>" · 
       · }, · 
       · "measurement_point" · : ·   · "<string>" · , · 
       · "retention_minutes" · : ·   · 0 · , · 
       · "stroke_minutes" · : ·   · 0 · 
     · }, · 
     · "findings" · : ·   · [ · 
       · { · 
         · "code" · : ·   · "<string>" · , · 
         · "severity" · : ·   · "blocker" · , · 
         · "message" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "plan_sha256" · : ·   · "<string>" · , · 
     · "plan" · : ·   · "<string>" · , · 
     · "runs" · : ·   · [ · 
       · { · 
         · "index" · : ·   · 0 · , · 
         · "direction" · : ·   · "positive" · , · 
         · "products" · : ·   · [ · 
           · "<string>" · 
         · ], · 
         · "requested_capacity_mw" · : ·   · "<string>" · , · 
         · "phases" · : ·   · [ · 
           · { · 
             · "index" · : ·   · 0 · , · 
             · "kind" · : ·   · "retention" · , · 
             · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "setpoint_mw" · : ·   · "<string>" · , · 
             · "window_id" · : ·   · "<string>" · , · 
             · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
           · } · 
         · ], · 
         · "status" · : ·   · "pending" · , · 
         · "follow_checks" · : ·   · [ · 
           · { · 
             · "phase_index" · : ·   · 0 · , · 
             · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
             · "expected_mw" · : ·   · "<string>" · , · 
             · "measured_mw" · : ·   · "<string>" · , · 
             · "passed" · : ·   · false · , · 
             · "detail" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "proofs" · : ·   · "<string>" · , · 
         · "uploads" · : ·   · "<string>" · , · 
         · "verdicts" · : ·   · "<string>" · , · 
         · "overrides" · : ·   · [ · 
           · { · 
             · "product" · : ·   · "<string>" · , · 
             · "reason" · : ·   · "<string>" · , · 
             · "by_user_id" · : ·   · "<string>" · , · 
             · "by_user_name" · : ·   · "<string>" · , · 
             · "at" · : ·   · "2026-09-10T13:30:00Z" · 
           · } · 
         · ], · 
         · "error" · : ·   · "<string>" · , · 
         · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
       · } · 
     · ], · 
     · "driver" · : ·   · { · 
       · "request_id" · : ·   · "<string>" · , · 
       · "run_id" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "tracking_source" · : ·   · "<string>" · , · 
       · "events" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "progress" · : ·   · { · 
       · "current_run_index" · : ·   · 0 · , · 
       · "current_phase_index" · : ·   · 0 · , · 
       · "confidence" · : ·   · "confirmed" · , · 
       · "remaining_seconds" · : ·   · 0 · 
     · }, · 
     · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "confirmed_by_user_name" · : ·   · "<string>" · , · 
     · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "abort_reason" · : ·   · "<string>" · , · 
     · "last_error" · : ·   · "<string>" · , · 
     · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "row_version" · : ·   · 0 · , · 
     · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
   · } · 
 · ]
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions

### Plan a Betriebsfahrt session

onboarding.write

Generates a draft session from the RfI, the PQ profile and the asset: two runs back to back (one per direction), each with three retention phases, two 15-minute delivery strokes and an extended third stroke sized from the usable energy. Replaces an existing draft. Nothing is sent to the asset or the TSO portal until the session is confirmed.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

Request body · required

first\_direction

enum · `positive` · `negative` · Direction of the first run: positive (discharge) needs a full battery, negative (charge) an empty one. Defaults to positive.

extended\_stroke\_minutes

integer · The first run's third delivery stroke: a multiple of 15 min within the range the usable energy allows, default the longest. The second run's follows from the energy moved.

planned\_start

string<date-time> · UTC start of run 1 on a quarter hour; defaults to the next quarter hour after the submission lead time.

single\_direction

boolean · default false · Drive the first direction alone (one run instead of two). FCR is symmetric and cannot be proven from a single direction; leave it false to drive both.

execution\_mode

enum · `real` · `dry_run`

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"first_direction":"positive","extended_stroke_minutes":0,"planned_start":"2026-09-10T13:30:00Z","single_direction":false,"execution_mode":"real"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "first_direction" · : ·   · "positive" · , · 
         · "extended_stroke_minutes" · : ·   · 0 · , · 
         · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "single_direction" · : ·   · False · , · 
         · "execution_mode" · : ·   · "real" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "first_direction" · : · "positive" · , · "extended_stroke_minutes" · : · 0 · , · "planned_start" · : · "2026-09-10T13:30:00Z" · , · "single_direction" · : · false · , · "execution_mode" · : · "real" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "draft" · , · 
   · "execution_mode" · : ·   · "real" · , · 
   · "supersedes_session_id" · : ·   · "<string>" · , · 
   · "parameters" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "single_direction" · : ·   · false · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "capacity_mw" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "products" · : ·   · { · 
       · "positive" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "negative" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "product_capacity_mw" · : ·   · "<string>" · , · 
     · "usable_energy_mwh" · : ·   · "<string>" · , · 
     · "energy_safety_margin" · : ·   · "<string>" · , · 
     · "energy_per_run_mwh" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "ramp_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "fcr_ramp_required_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "measurement_point" · : ·   · "<string>" · , · 
     · "retention_minutes" · : ·   · 0 · , · 
     · "stroke_minutes" · : ·   · 0 · 
   · }, · 
   · "findings" · : ·   · [ · 
     · { · 
       · "code" · : ·   · "<string>" · , · 
       · "severity" · : ·   · "blocker" · , · 
       · "message" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "plan_sha256" · : ·   · "<string>" · , · 
   · "plan" · : ·   · "<string>" · , · 
   · "runs" · : ·   · [ · 
     · { · 
       · "index" · : ·   · 0 · , · 
       · "direction" · : ·   · "positive" · , · 
       · "products" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "requested_capacity_mw" · : ·   · "<string>" · , · 
       · "phases" · : ·   · [ · 
         · { · 
           · "index" · : ·   · 0 · , · 
           · "kind" · : ·   · "retention" · , · 
           · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "setpoint_mw" · : ·   · "<string>" · , · 
           · "window_id" · : ·   · "<string>" · , · 
           · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "status" · : ·   · "pending" · , · 
       · "follow_checks" · : ·   · [ · 
         · { · 
           · "phase_index" · : ·   · 0 · , · 
           · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "expected_mw" · : ·   · "<string>" · , · 
           · "measured_mw" · : ·   · "<string>" · , · 
           · "passed" · : ·   · false · , · 
           · "detail" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "proofs" · : ·   · "<string>" · , · 
       · "uploads" · : ·   · "<string>" · , · 
       · "verdicts" · : ·   · "<string>" · , · 
       · "overrides" · : ·   · [ · 
         · { · 
           · "product" · : ·   · "<string>" · , · 
           · "reason" · : ·   · "<string>" · , · 
           · "by_user_id" · : ·   · "<string>" · , · 
           · "by_user_name" · : ·   · "<string>" · , · 
           · "at" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "error" · : ·   · "<string>" · , · 
       · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
     · } · 
   · ], · 
   · "driver" · : ·   · { · 
     · "request_id" · : ·   · "<string>" · , · 
     · "run_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "<string>" · , · 
     · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "tracking_source" · : ·   · "<string>" · , · 
     · "events" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · }, · 
   · "progress" · : ·   · { · 
     · "current_run_index" · : ·   · 0 · , · 
     · "current_phase_index" · : ·   · 0 · , · 
     · "confidence" · : ·   · "confirmed" · , · 
     · "remaining_seconds" · : ·   · 0 · 
   · }, · 
   · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "confirmed_by_user_name" · : ·   · "<string>" · , · 
   · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "abort_reason" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "row_version" · : ·   · 0 · , · 
   · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions/{session\_id}

### Get one Betriebsfahrt session

onboarding.read

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

session\_id · REQUIRED

string<uuid> · Betriebsfahrt session identifier from the status response.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "draft" · , · 
   · "execution_mode" · : ·   · "real" · , · 
   · "supersedes_session_id" · : ·   · "<string>" · , · 
   · "parameters" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "single_direction" · : ·   · false · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "capacity_mw" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "products" · : ·   · { · 
       · "positive" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "negative" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "product_capacity_mw" · : ·   · "<string>" · , · 
     · "usable_energy_mwh" · : ·   · "<string>" · , · 
     · "energy_safety_margin" · : ·   · "<string>" · , · 
     · "energy_per_run_mwh" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "ramp_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "fcr_ramp_required_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "measurement_point" · : ·   · "<string>" · , · 
     · "retention_minutes" · : ·   · 0 · , · 
     · "stroke_minutes" · : ·   · 0 · 
   · }, · 
   · "findings" · : ·   · [ · 
     · { · 
       · "code" · : ·   · "<string>" · , · 
       · "severity" · : ·   · "blocker" · , · 
       · "message" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "plan_sha256" · : ·   · "<string>" · , · 
   · "plan" · : ·   · "<string>" · , · 
   · "runs" · : ·   · [ · 
     · { · 
       · "index" · : ·   · 0 · , · 
       · "direction" · : ·   · "positive" · , · 
       · "products" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "requested_capacity_mw" · : ·   · "<string>" · , · 
       · "phases" · : ·   · [ · 
         · { · 
           · "index" · : ·   · 0 · , · 
           · "kind" · : ·   · "retention" · , · 
           · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "setpoint_mw" · : ·   · "<string>" · , · 
           · "window_id" · : ·   · "<string>" · , · 
           · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "status" · : ·   · "pending" · , · 
       · "follow_checks" · : ·   · [ · 
         · { · 
           · "phase_index" · : ·   · 0 · , · 
           · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "expected_mw" · : ·   · "<string>" · , · 
           · "measured_mw" · : ·   · "<string>" · , · 
           · "passed" · : ·   · false · , · 
           · "detail" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "proofs" · : ·   · "<string>" · , · 
       · "uploads" · : ·   · "<string>" · , · 
       · "verdicts" · : ·   · "<string>" · , · 
       · "overrides" · : ·   · [ · 
         · { · 
           · "product" · : ·   · "<string>" · , · 
           · "reason" · : ·   · "<string>" · , · 
           · "by_user_id" · : ·   · "<string>" · , · 
           · "by_user_name" · : ·   · "<string>" · , · 
           · "at" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "error" · : ·   · "<string>" · , · 
       · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
     · } · 
   · ], · 
   · "driver" · : ·   · { · 
     · "request_id" · : ·   · "<string>" · , · 
     · "run_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "<string>" · , · 
     · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "tracking_source" · : ·   · "<string>" · , · 
     · "events" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · }, · 
   · "progress" · : ·   · { · 
     · "current_run_index" · : ·   · 0 · , · 
     · "current_phase_index" · : ·   · 0 · , · 
     · "confidence" · : ·   · "confirmed" · , · 
     · "remaining_seconds" · : ·   · 0 · 
   · }, · 
   · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "confirmed_by_user_name" · : ·   · "<string>" · , · 
   · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "abort_reason" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "row_version" · : ·   · 0 · , · 
   · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions/{session\_id}

### Adjust a draft Betriebsfahrt session

onboarding.write

Regenerates the draft with the given parameters (first direction, extended stroke, start, execution mode). Only drafts can be adjusted.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

session\_id · REQUIRED

string<uuid> · Betriebsfahrt session identifier from the status response.

Request body · required

first\_direction

enum · `positive` · `negative`

extended\_stroke\_minutes

integer

planned\_start

string<date-time>

execution\_mode

enum · `real` · `dry_run`

single\_direction

boolean · Drive the first direction alone (one run instead of two); FCR cannot be proven from it.

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"first_direction":"positive","extended_stroke_minutes":0,"planned_start":"2026-09-10T13:30:00Z","execution_mode":"real","single_direction":false}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "first_direction" · : ·   · "positive" · , · 
         · "extended_stroke_minutes" · : ·   · 0 · , · 
         · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "execution_mode" · : ·   · "real" · , · 
         · "single_direction" · : ·   · False · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "first_direction" · : · "positive" · , · "extended_stroke_minutes" · : · 0 · , · "planned_start" · : · "2026-09-10T13:30:00Z" · , · "execution_mode" · : · "real" · , · "single_direction" · : · false · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "draft" · , · 
   · "execution_mode" · : ·   · "real" · , · 
   · "supersedes_session_id" · : ·   · "<string>" · , · 
   · "parameters" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "single_direction" · : ·   · false · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "capacity_mw" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "products" · : ·   · { · 
       · "positive" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "negative" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "product_capacity_mw" · : ·   · "<string>" · , · 
     · "usable_energy_mwh" · : ·   · "<string>" · , · 
     · "energy_safety_margin" · : ·   · "<string>" · , · 
     · "energy_per_run_mwh" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "ramp_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "fcr_ramp_required_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "measurement_point" · : ·   · "<string>" · , · 
     · "retention_minutes" · : ·   · 0 · , · 
     · "stroke_minutes" · : ·   · 0 · 
   · }, · 
   · "findings" · : ·   · [ · 
     · { · 
       · "code" · : ·   · "<string>" · , · 
       · "severity" · : ·   · "blocker" · , · 
       · "message" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "plan_sha256" · : ·   · "<string>" · , · 
   · "plan" · : ·   · "<string>" · , · 
   · "runs" · : ·   · [ · 
     · { · 
       · "index" · : ·   · 0 · , · 
       · "direction" · : ·   · "positive" · , · 
       · "products" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "requested_capacity_mw" · : ·   · "<string>" · , · 
       · "phases" · : ·   · [ · 
         · { · 
           · "index" · : ·   · 0 · , · 
           · "kind" · : ·   · "retention" · , · 
           · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "setpoint_mw" · : ·   · "<string>" · , · 
           · "window_id" · : ·   · "<string>" · , · 
           · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "status" · : ·   · "pending" · , · 
       · "follow_checks" · : ·   · [ · 
         · { · 
           · "phase_index" · : ·   · 0 · , · 
           · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "expected_mw" · : ·   · "<string>" · , · 
           · "measured_mw" · : ·   · "<string>" · , · 
           · "passed" · : ·   · false · , · 
           · "detail" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "proofs" · : ·   · "<string>" · , · 
       · "uploads" · : ·   · "<string>" · , · 
       · "verdicts" · : ·   · "<string>" · , · 
       · "overrides" · : ·   · [ · 
         · { · 
           · "product" · : ·   · "<string>" · , · 
           · "reason" · : ·   · "<string>" · , · 
           · "by_user_id" · : ·   · "<string>" · , · 
           · "by_user_name" · : ·   · "<string>" · , · 
           · "at" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "error" · : ·   · "<string>" · , · 
       · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
     · } · 
   · ], · 
   · "driver" · : ·   · { · 
     · "request_id" · : ·   · "<string>" · , · 
     · "run_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "<string>" · , · 
     · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "tracking_source" · : ·   · "<string>" · , · 
     · "events" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · }, · 
   · "progress" · : ·   · { · 
     · "current_run_index" · : ·   · 0 · , · 
     · "current_phase_index" · : ·   · 0 · , · 
     · "confidence" · : ·   · "confirmed" · , · 
     · "remaining_seconds" · : ·   · 0 · 
   · }, · 
   · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "confirmed_by_user_name" · : ·   · "<string>" · , · 
   · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "abort_reason" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "row_version" · : ·   · 0 · , · 
   · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions/{session\_id}/abort

### Abort a Betriebsfahrt session

onboarding.write

Ends the session and sends the driver's kill switch (zero every product on the asset; cancel the run when known). Aborting again resends the kill switch.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

session\_id · REQUIRED

string<uuid> · Betriebsfahrt session identifier from the status response.

Request body · required

reason · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/abort" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"reason":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/abort" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "reason" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/abort" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "reason" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "draft" · , · 
   · "execution_mode" · : ·   · "real" · , · 
   · "supersedes_session_id" · : ·   · "<string>" · , · 
   · "parameters" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "single_direction" · : ·   · false · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "capacity_mw" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "products" · : ·   · { · 
       · "positive" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "negative" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "product_capacity_mw" · : ·   · "<string>" · , · 
     · "usable_energy_mwh" · : ·   · "<string>" · , · 
     · "energy_safety_margin" · : ·   · "<string>" · , · 
     · "energy_per_run_mwh" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "ramp_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "fcr_ramp_required_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "measurement_point" · : ·   · "<string>" · , · 
     · "retention_minutes" · : ·   · 0 · , · 
     · "stroke_minutes" · : ·   · 0 · 
   · }, · 
   · "findings" · : ·   · [ · 
     · { · 
       · "code" · : ·   · "<string>" · , · 
       · "severity" · : ·   · "blocker" · , · 
       · "message" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "plan_sha256" · : ·   · "<string>" · , · 
   · "plan" · : ·   · "<string>" · , · 
   · "runs" · : ·   · [ · 
     · { · 
       · "index" · : ·   · 0 · , · 
       · "direction" · : ·   · "positive" · , · 
       · "products" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "requested_capacity_mw" · : ·   · "<string>" · , · 
       · "phases" · : ·   · [ · 
         · { · 
           · "index" · : ·   · 0 · , · 
           · "kind" · : ·   · "retention" · , · 
           · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "setpoint_mw" · : ·   · "<string>" · , · 
           · "window_id" · : ·   · "<string>" · , · 
           · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "status" · : ·   · "pending" · , · 
       · "follow_checks" · : ·   · [ · 
         · { · 
           · "phase_index" · : ·   · 0 · , · 
           · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "expected_mw" · : ·   · "<string>" · , · 
           · "measured_mw" · : ·   · "<string>" · , · 
           · "passed" · : ·   · false · , · 
           · "detail" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "proofs" · : ·   · "<string>" · , · 
       · "uploads" · : ·   · "<string>" · , · 
       · "verdicts" · : ·   · "<string>" · , · 
       · "overrides" · : ·   · [ · 
         · { · 
           · "product" · : ·   · "<string>" · , · 
           · "reason" · : ·   · "<string>" · , · 
           · "by_user_id" · : ·   · "<string>" · , · 
           · "by_user_name" · : ·   · "<string>" · , · 
           · "at" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "error" · : ·   · "<string>" · , · 
       · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
     · } · 
   · ], · 
   · "driver" · : ·   · { · 
     · "request_id" · : ·   · "<string>" · , · 
     · "run_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "<string>" · , · 
     · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "tracking_source" · : ·   · "<string>" · , · 
     · "events" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · }, · 
   · "progress" · : ·   · { · 
     · "current_run_index" · : ·   · 0 · , · 
     · "current_phase_index" · : ·   · 0 · , · 
     · "confidence" · : ·   · "confirmed" · , · 
     · "remaining_seconds" · : ·   · 0 · 
   · }, · 
   · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "confirmed_by_user_name" · : ·   · "<string>" · , · 
   · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "abort_reason" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "row_version" · : ·   · 0 · , · 
   · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions/{session\_id}/confirm

### Confirm a Betriebsfahrt session

onboarding.write

Freezes the plan and hands it to the control-test driver: the typed asset id must match, the plan must still be the reviewed one, the asset must be full (positive run first) or empty (negative run first) with telemetry arriving, and the TSO portal pre-flight must have created the technical unit, the reserve unit and the planned prequalifications. The drive starts at the planned quarter hour without further prompts; the plan is published to the driver ten minutes before.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

session\_id · REQUIRED

string<uuid> · Betriebsfahrt session identifier from the status response.

Request body · required

confirm\_asset\_id · REQUIRED

string · The asset id typed by the operator; must equal the session's asset.

row\_version · REQUIRED

integer · The row version of the draft the operator reviewed; any adjustment since (plan, start, mode) is refused.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/confirm" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"confirm_asset_id":"<string>","row_version":0}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/confirm" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "confirm_asset_id" · : ·   · "<string>" · , · 
         · "row_version" · : ·   · 0 · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/confirm" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "confirm_asset_id" · : · "<string>" · , · "row_version" · : · 0 · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 202

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "draft" · , · 
   · "execution_mode" · : ·   · "real" · , · 
   · "supersedes_session_id" · : ·   · "<string>" · , · 
   · "parameters" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "single_direction" · : ·   · false · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "capacity_mw" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "products" · : ·   · { · 
       · "positive" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "negative" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "product_capacity_mw" · : ·   · "<string>" · , · 
     · "usable_energy_mwh" · : ·   · "<string>" · , · 
     · "energy_safety_margin" · : ·   · "<string>" · , · 
     · "energy_per_run_mwh" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "ramp_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "fcr_ramp_required_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "measurement_point" · : ·   · "<string>" · , · 
     · "retention_minutes" · : ·   · 0 · , · 
     · "stroke_minutes" · : ·   · 0 · 
   · }, · 
   · "findings" · : ·   · [ · 
     · { · 
       · "code" · : ·   · "<string>" · , · 
       · "severity" · : ·   · "blocker" · , · 
       · "message" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "plan_sha256" · : ·   · "<string>" · , · 
   · "plan" · : ·   · "<string>" · , · 
   · "runs" · : ·   · [ · 
     · { · 
       · "index" · : ·   · 0 · , · 
       · "direction" · : ·   · "positive" · , · 
       · "products" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "requested_capacity_mw" · : ·   · "<string>" · , · 
       · "phases" · : ·   · [ · 
         · { · 
           · "index" · : ·   · 0 · , · 
           · "kind" · : ·   · "retention" · , · 
           · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "setpoint_mw" · : ·   · "<string>" · , · 
           · "window_id" · : ·   · "<string>" · , · 
           · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "status" · : ·   · "pending" · , · 
       · "follow_checks" · : ·   · [ · 
         · { · 
           · "phase_index" · : ·   · 0 · , · 
           · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "expected_mw" · : ·   · "<string>" · , · 
           · "measured_mw" · : ·   · "<string>" · , · 
           · "passed" · : ·   · false · , · 
           · "detail" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "proofs" · : ·   · "<string>" · , · 
       · "uploads" · : ·   · "<string>" · , · 
       · "verdicts" · : ·   · "<string>" · , · 
       · "overrides" · : ·   · [ · 
         · { · 
           · "product" · : ·   · "<string>" · , · 
           · "reason" · : ·   · "<string>" · , · 
           · "by_user_id" · : ·   · "<string>" · , · 
           · "by_user_name" · : ·   · "<string>" · , · 
           · "at" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "error" · : ·   · "<string>" · , · 
       · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
     · } · 
   · ], · 
   · "driver" · : ·   · { · 
     · "request_id" · : ·   · "<string>" · , · 
     · "run_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "<string>" · , · 
     · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "tracking_source" · : ·   · "<string>" · , · 
     · "events" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · }, · 
   · "progress" · : ·   · { · 
     · "current_run_index" · : ·   · 0 · , · 
     · "current_phase_index" · : ·   · 0 · , · 
     · "confidence" · : ·   · "confirmed" · , · 
     · "remaining_seconds" · : ·   · 0 · 
   · }, · 
   · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "confirmed_by_user_name" · : ·   · "<string>" · , · 
   · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "abort_reason" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "row_version" · : ·   · 0 · , · 
   · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions/{session\_id}/runs/{run\_index}/validate

### Validate a run again

onboarding.write

Re-runs the instant validation of one run for every product whose verdict is not PASS: the workbook is generated again from telemetry, uploaded to the planned prequalification when its bytes changed, and the portal's analysis is fetched and judged. For a recording the telemetry store received late, or a portal hiccup.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

session\_id · REQUIRED

string<uuid> · Betriebsfahrt session identifier from the status response.

run\_index · REQUIRED

integer · Run index within the session: 0 = first run, 1 = second run.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/runs/0/validate" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/runs/0/validate" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/runs/0/validate" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "draft" · , · 
   · "execution_mode" · : ·   · "real" · , · 
   · "supersedes_session_id" · : ·   · "<string>" · , · 
   · "parameters" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "single_direction" · : ·   · false · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "capacity_mw" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "products" · : ·   · { · 
       · "positive" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "negative" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "product_capacity_mw" · : ·   · "<string>" · , · 
     · "usable_energy_mwh" · : ·   · "<string>" · , · 
     · "energy_safety_margin" · : ·   · "<string>" · , · 
     · "energy_per_run_mwh" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "ramp_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "fcr_ramp_required_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "measurement_point" · : ·   · "<string>" · , · 
     · "retention_minutes" · : ·   · 0 · , · 
     · "stroke_minutes" · : ·   · 0 · 
   · }, · 
   · "findings" · : ·   · [ · 
     · { · 
       · "code" · : ·   · "<string>" · , · 
       · "severity" · : ·   · "blocker" · , · 
       · "message" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "plan_sha256" · : ·   · "<string>" · , · 
   · "plan" · : ·   · "<string>" · , · 
   · "runs" · : ·   · [ · 
     · { · 
       · "index" · : ·   · 0 · , · 
       · "direction" · : ·   · "positive" · , · 
       · "products" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "requested_capacity_mw" · : ·   · "<string>" · , · 
       · "phases" · : ·   · [ · 
         · { · 
           · "index" · : ·   · 0 · , · 
           · "kind" · : ·   · "retention" · , · 
           · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "setpoint_mw" · : ·   · "<string>" · , · 
           · "window_id" · : ·   · "<string>" · , · 
           · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "status" · : ·   · "pending" · , · 
       · "follow_checks" · : ·   · [ · 
         · { · 
           · "phase_index" · : ·   · 0 · , · 
           · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "expected_mw" · : ·   · "<string>" · , · 
           · "measured_mw" · : ·   · "<string>" · , · 
           · "passed" · : ·   · false · , · 
           · "detail" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "proofs" · : ·   · "<string>" · , · 
       · "uploads" · : ·   · "<string>" · , · 
       · "verdicts" · : ·   · "<string>" · , · 
       · "overrides" · : ·   · [ · 
         · { · 
           · "product" · : ·   · "<string>" · , · 
           · "reason" · : ·   · "<string>" · , · 
           · "by_user_id" · : ·   · "<string>" · , · 
           · "by_user_name" · : ·   · "<string>" · , · 
           · "at" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "error" · : ·   · "<string>" · , · 
       · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
     · } · 
   · ], · 
   · "driver" · : ·   · { · 
     · "request_id" · : ·   · "<string>" · , · 
     · "run_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "<string>" · , · 
     · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "tracking_source" · : ·   · "<string>" · , · 
     · "events" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · }, · 
   · "progress" · : ·   · { · 
     · "current_run_index" · : ·   · 0 · , · 
     · "current_phase_index" · : ·   · 0 · , · 
     · "confidence" · : ·   · "confirmed" · , · 
     · "remaining_seconds" · : ·   · 0 · 
   · }, · 
   · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "confirmed_by_user_name" · : ·   · "<string>" · , · 
   · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "abort_reason" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "row_version" · : ·   · 0 · , · 
   · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/betriebsfahrt/sessions/{session\_id}/runs/{run\_index}/verdict-override

### Accept a REDO verdict with a reason

onboarding.write

An EBX admin accepts one product's REDO verdict on a run; the reason is recorded on the session, the gate and the activity log, and the sign-off counts the run as accepted.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier.

session\_id · REQUIRED

string<uuid> · Betriebsfahrt session identifier from the status response.

run\_index · REQUIRED

integer · Run index within the session: 0 = first run, 1 = second run.

Request body · required

product · REQUIRED

string · Product slug of the run's verdict to accept, e.g. AutomaticFrequencyRestorationReserve/Positive.

reason · REQUIRED

string

verdict\_computed\_at · REQUIRED

string<date-time> · The `computed_at` of the verdict the operator reviewed; a verdict computed since is refused.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/runs/0/verdict-override" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"product":"<string>","reason":"<string>","verdict_computed_at":"2026-09-10T13:30:00Z"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/runs/0/verdict-override" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "product" · : ·   · "<string>" · , · 
         · "reason" · : ·   · "<string>" · , · 
         · "verdict_computed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/betriebsfahrt/sessions/00000000-0000-0000-0000-000000000000/runs/0/verdict-override" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "product" · : · "<string>" · , · "reason" · : · "<string>" · , · "verdict_computed_at" · : · "2026-09-10T13:30:00Z" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "draft" · , · 
   · "execution_mode" · : ·   · "real" · , · 
   · "supersedes_session_id" · : ·   · "<string>" · , · 
   · "parameters" · : ·   · { · 
     · "first_direction" · : ·   · "positive" · , · 
     · "single_direction" · : ·   · false · , · 
     · "extended_stroke_minutes" · : ·   · 0 · , · 
     · "extended_stroke_min_minutes" · : ·   · 0 · , · 
     · "extended_stroke_max_minutes" · : ·   · 0 · , · 
     · "second_run_extended_stroke_minutes" · : ·   · 0 · , · 
     · "capacity_mw" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "products" · : ·   · { · 
       · "positive" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "negative" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · }, · 
     · "product_capacity_mw" · : ·   · "<string>" · , · 
     · "usable_energy_mwh" · : ·   · "<string>" · , · 
     · "energy_safety_margin" · : ·   · "<string>" · , · 
     · "energy_per_run_mwh" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "ramp_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "fcr_ramp_required_mw_per_s" · : ·   · { · 
       · "positive" · : ·   · "<string>" · , · 
       · "negative" · : ·   · "<string>" · 
     · }, · 
     · "measurement_point" · : ·   · "<string>" · , · 
     · "retention_minutes" · : ·   · 0 · , · 
     · "stroke_minutes" · : ·   · 0 · 
   · }, · 
   · "findings" · : ·   · [ · 
     · { · 
       · "code" · : ·   · "<string>" · , · 
       · "severity" · : ·   · "blocker" · , · 
       · "message" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "planned_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "planned_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "plan_sha256" · : ·   · "<string>" · , · 
   · "plan" · : ·   · "<string>" · , · 
   · "runs" · : ·   · [ · 
     · { · 
       · "index" · : ·   · 0 · , · 
       · "direction" · : ·   · "positive" · , · 
       · "products" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "requested_capacity_mw" · : ·   · "<string>" · , · 
       · "phases" · : ·   · [ · 
         · { · 
           · "index" · : ·   · 0 · , · 
           · "kind" · : ·   · "retention" · , · 
           · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "setpoint_mw" · : ·   · "<string>" · , · 
           · "window_id" · : ·   · "<string>" · , · 
           · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "status" · : ·   · "pending" · , · 
       · "follow_checks" · : ·   · [ · 
         · { · 
           · "phase_index" · : ·   · 0 · , · 
           · "checked_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
           · "expected_mw" · : ·   · "<string>" · , · 
           · "measured_mw" · : ·   · "<string>" · , · 
           · "passed" · : ·   · false · , · 
           · "detail" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "proofs" · : ·   · "<string>" · , · 
       · "uploads" · : ·   · "<string>" · , · 
       · "verdicts" · : ·   · "<string>" · , · 
       · "overrides" · : ·   · [ · 
         · { · 
           · "product" · : ·   · "<string>" · , · 
           · "reason" · : ·   · "<string>" · , · 
           · "by_user_id" · : ·   · "<string>" · , · 
           · "by_user_name" · : ·   · "<string>" · , · 
           · "at" · : ·   · "2026-09-10T13:30:00Z" · 
         · } · 
       · ], · 
       · "error" · : ·   · "<string>" · , · 
       · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
       · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · 
     · } · 
   · ], · 
   · "driver" · : ·   · { · 
     · "request_id" · : ·   · "<string>" · , · 
     · "run_id" · : ·   · "<string>" · , · 
     · "status" · : ·   · "<string>" · , · 
     · "journal_written_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "tracking_source" · : ·   · "<string>" · , · 
     · "events" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · }, · 
   · "progress" · : ·   · { · 
     · "current_run_index" · : ·   · 0 · , · 
     · "current_phase_index" · : ·   · 0 · , · 
     · "confidence" · : ·   · "confirmed" · , · 
     · "remaining_seconds" · : ·   · 0 · 
   · }, · 
   · "actual_start" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "actual_end" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "confirmed_by_user_name" · : ·   · "<string>" · , · 
   · "confirmed_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "aborted_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "abort_reason" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "last_error_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "row_version" · : ·   · 0 · , · 
   · "created_at" · : ·   · "2026-09-10T13:30:00Z" · , · 
   · "updated_at" · : ·   · "2026-09-10T13:30:00Z" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· DELETE · /v1/onboardings/{onboarding\_id}/documents/{document\_id}

### Remove a document from an onboarding

onboarding.write

Soft-deletes document metadata so the document no longer appears on the onboarding or receives download URLs. The stored S3 object is not synchronously deleted.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

document\_id · REQUIRED

string<uuid> · Document identifier returned by the presigned upload request.

Example value

cURL:

```bash
curl ·   · -X ·  DELETE  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.delete(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "DELETE" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}/documents/{document\_id}/download

### Create a document download URL

onboarding.read

Returns a short-lived presigned S3 GET URL for an available, non-deleted onboarding document. The API does not proxy document bytes.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

document\_id · REQUIRED

string<uuid> · Document identifier returned by the presigned upload request.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/download" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/download" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/download" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "download_url" · : ·   · "<string>" · , · 
   · "expires_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/documents/{document\_id}/finalize

### Finalize an uploaded document

onboarding.write

Marks a pending document upload as available after the client has uploaded bytes to the presigned S3 URL and records document-upload activity.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

document\_id · REQUIRED

string<uuid> · Document identifier returned by the presigned upload request.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/finalize" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/finalize" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/00000000-0000-0000-0000-000000000000/finalize" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/documents/presigned-upload

### Create a document upload URL

onboarding.write

Creates pending document metadata and returns a short-lived presigned S3 PUT URL. Clients upload the file bytes directly to S3, then call finalize to make the document available on the onboarding. Maximum accepted metadata size is 100 MiB.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

document\_type · REQUIRED

enum · `installation_photo_mdevice` · `installation_photo_antenna` · `test_results_signed` · `betriebsfahrt_data` · `pq_frequency_analysis` · `pq_doublestroke_file` · `pq_approval` · `eigentuemer` · `betreiber` · `other`

gate\_definition\_id

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved`

filename · REQUIRED

string

size\_bytes · REQUIRED

integer

content\_type · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/presigned-upload" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"document_type":"installation_photo_mdevice","gate_definition_id":"mon_rfi","filename":"<string>","size_bytes":0,"content_type":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/presigned-upload" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/documents/presigned-upload" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "document_type" · : · "installation_photo_mdevice" · , · "gate_definition_id" · : · "mon_rfi" · , · "filename" · : · "<string>" · , · "size_bytes" · : · 0 · , · "content_type" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "upload_url" · : ·   · "<string>" · , · 
   · "document_id" · : ·   · "<string>" · , · 
   · "expires_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/dpl

### Replace the onboarding DPL

onboarding.write

Replaces the software-gate DPL payload for an onboarding. The target software gate is selected from the DPL standard id: monitoring DPLs update the monitoring software gate, and control DPLs update the control software gate.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

dpl · REQUIRED

object

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"dpl":{"standard_id":"ebx_monitor","standard_version":"<string>","rows":[{"id":"<string>","standard_datapoint_id":"<string>","name":"<string>","unit":"<string>","data_type":"float","direction":"control","register":0,"register_type":"holding","short_description":"<string>","long_description":"<string>","implementation_status":"pending","received_test_value":0,"excluded":false,"asset_notes":"<string>","discussion":{"status":"open","comments":[{"id":"<string>","author_user_name":"<string>","author_org_name":"<string>","author_side":"ebx","created_at":"<string>","body":"<string>"}],"last_comment_at":"<string>"}}],"updated_at":"<string>"}}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "dpl" · : ·   · { · 
             · "standard_id" · : ·   · "ebx_monitor" · , · 
             · "standard_version" · : ·   · "<string>" · , · 
             · "rows" · : ·   · [ · 
                 · { · 
                     · "id" · : ·   · "<string>" · , · 
                     · "standard_datapoint_id" · : ·   · "<string>" · , · 
                     · "name" · : ·   · "<string>" · , · 
                     · "unit" · : ·   · "<string>" · , · 
                     · "data_type" · : ·   · "float" · , · 
                     · "direction" · : ·   · "control" · , · 
                     · "register" · : ·   · 0 · , · 
                     · "register_type" · : ·   · "holding" · , · 
                     · "short_description" · : ·   · "<string>" · , · 
                     · "long_description" · : ·   · "<string>" · , · 
                     · "implementation_status" · : ·   · "pending" · , · 
                     · "received_test_value" · : ·   · 0 · , · 
                     · "excluded" · : ·   · False · , · 
                     · "asset_notes" · : ·   · "<string>" · , · 
                     · "discussion" · : ·   · { · 
                         · "status" · : ·   · "open" · , · 
                         · "comments" · : ·   · [ · 
                             · { · 
                                 · "id" · : ·   · "<string>" · , · 
                                 · "author_user_name" · : ·   · "<string>" · , · 
                                 · "author_org_name" · : ·   · "<string>" · , · 
                                 · "author_side" · : ·   · "ebx" · , · 
                                 · "created_at" · : ·   · "<string>" · , · 
                                 · "body" · : ·   · "<string>" · , · 
                             · }, · 
                         · ], · 
                         · "last_comment_at" · : ·   · "<string>" · , · 
                     · }, · 
                 · }, · 
             · ], · 
             · "updated_at" · : ·   · "<string>" · , · 
         · }, · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "dpl" · :{ · "standard_id" · : · "ebx_monitor" · , · "standard_version" · : · "<string>" · , · "rows" · :[{ · "id" · : · "<string>" · , · "standard_datapoint_id" · : · "<string>" · , · "name" · : · "<string>" · , · "unit" · : · "<string>" · , · "data_type" · : · "float" · , · "direction" · : · "control" · , · "register" · : · 0 · , · "register_type" · : · "holding" · , · "short_description" · : · "<string>" · , · "long_description" · : · "<string>" · , · "implementation_status" · : · "pending" · , · "received_test_value" · : · 0 · , · "excluded" · : · false · , · "asset_notes" · : · "<string>" · , · "discussion" · :{ · "status" · : · "open" · , · "comments" · :[{ · "id" · : · "<string>" · , · "author_user_name" · : · "<string>" · , · "author_org_name" · : · "<string>" · , · "author_side" · : · "ebx" · , · "created_at" · : · "<string>" · , · "body" · : · "<string>" · }], · "last_comment_at" · : · "<string>" · }}], · "updated_at" · : · "<string>" · }} · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/dpl/rows/{row\_id}/comments

### Comment on a DPL row

onboarding.write

Adds a discussion comment to a DPL row on the software gate, opens the row discussion thread, and records onboarding activity.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

row\_id · REQUIRED

string · DPL row identifier from the onboarding software-gate DPL payload.

Request body · required

body · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/comments" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"body":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/comments" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "body" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/comments" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "body" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "open" · , · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "author_user_name" · : ·   · "<string>" · , · 
       · "author_org_name" · : ·   · "<string>" · , · 
       · "author_side" · : ·   · "ebx" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "body" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "last_comment_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/dpl/rows/{row\_id}/thread

### Update a DPL row discussion status

onboarding.write

Opens or resolves the discussion thread for a DPL row without changing the row implementation values.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

row\_id · REQUIRED

string · DPL row identifier from the onboarding software-gate DPL payload.

Request body · required

status · REQUIRED

enum · `open` · `resolved`

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/thread" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"status":"open"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/thread" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "status" · : ·   · "open" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/dpl/rows/dpl_row_014/thread" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "status" · : · "open" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "open" · , · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "author_user_name" · : ·   · "<string>" · , · 
       · "author_org_name" · : ·   · "<string>" · , · 
       · "author_side" · : ·   · "ebx" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "body" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "last_comment_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}/gates/{gate\_id}/auto-check

### Run a gate auto-check

onboarding.read

Returns the current automated check result for a gate. RFI checks validate required stored fields. DPL checks summarize stored DPL implementation state only. Signal-strength, live telemetry, alarms, and plausibility checks are currently reported as pending until telemetry integration is added.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Workflow gate identifier from the onboarding process definition.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/auto-check" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/auto-check" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/auto-check" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "pass" · , · 
   · "summary" · : ·   · "<string>" · , · 
   · "facts" · : ·   · [ · 
     · { · 
       · "label" · : ·   · "<string>" · , · 
       · "value" · : ·   · "<string>" · , · 
       · "pass" · : ·   · false · 
     · } · 
   · ], · 
   · "last_checked_at" · : ·   · "<string>" · , · 
   · "hardware_signal" · : ·   · { · 
     · "boxes" · : ·   · [ · 
       · { · 
         · "device" · : ·   · 0 · , · 
         · "signal_strength_pct" · : ·   · 0 · , · 
         · "lan_connected" · : ·   · false · , · 
         · "last_seen_at" · : ·   · "<string>" · 
       · } · 
     · ] · 
   · } · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/gates/{gate\_id}/block

### Block a workflow gate

onboarding.write

Marks an in-progress or awaiting-confirmation gate as blocked, stores the blocking reason, records activity, and sets the overall onboarding status to blocked.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Workflow gate identifier from the onboarding process definition.

Request body · required

reason · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/block" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"reason":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/block" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "reason" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/block" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "reason" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/gates/{gate\_id}/note

### Update a gate note

onboarding.write

Stores the latest operational note on a gate and records an activity entry. This does not change the gate status.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Workflow gate identifier from the onboarding process definition.

Request body · required

note · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/note" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"note":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/note" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "note" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/note" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "note" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/gates/{gate\_id}/pass

### Pass a workflow gate

onboarding.write

Signs off a gate and advances the workflow. The service validates prerequisites, validates any gate-specific structured data, records the sign-off, starts the next pending gate, and recomputes the overall onboarding status from the persisted process definition. Passing the configured RFI gate also syncs the asset profile.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Workflow gate identifier from the onboarding process definition.

Request body · required

note

string

structured\_data

object

override\_reason

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/pass" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"note":"<string>","structured_data":"<string>","override_reason":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/pass" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "note" · : ·   · "<string>" · , · 
         · "structured_data" · : ·   · "<string>" · , · 
         · "override_reason" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/pass" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "note" · : · "<string>" · , · "structured_data" · : · "<string>" · , · "override_reason" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/gates/{gate\_id}/reopen

### Reopen a workflow gate

onboarding.write

Reopens a passed or blocked gate and resets all downstream gates to pending. Use this when a prior sign-off needs correction or new information invalidates later steps.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Workflow gate identifier from the onboarding process definition.

Request body · required

reason · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/reopen" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"reason":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/reopen" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "reason" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/reopen" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "reason" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/gates/{gate\_id}/structured-data

### Update gate structured data

onboarding.write

Persists the current structured payload for a gate without passing the gate. RFI, DPL, control-test, and Betriebsfahrt payloads are schema-validated. If the configured RFI gate has already passed, updating its payload also refreshes the synced asset profile.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

gate\_id · REQUIRED

enum · `mon_rfi` · `mon_hw` · `mon_sw` · `mon_val` · `ctl_rfi` · `ctl_hw` · `ctl_sw` · `ctl_mon_test` · `ctl_ctrl_test` · `ctl_pq_test` · `ctl_pq_submit` · `ctl_pq_approved` · Workflow gate identifier from the onboarding process definition.

Request body · required

structured\_data · REQUIRED

object

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/structured-data" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"structured_data":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/structured-data" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "structured_data" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/gates/mon_rfi/structured-data" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "structured_data" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/internal-tracker/open-points

### Add an internal tracker open point

onboarding.write

Adds an EBX-internal open point, optionally linked to a gate, RfI field, or DPL row, with an optional first comment.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

title · REQUIRED

string

ref

OpenPointGateRef | OpenPointRfiFieldRef | OpenPointDplRowRef

body

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"title":"<string>","ref":{"kind":"<string>","gate_definition_id":"mon_rfi"},"body":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "title" · : ·   · "<string>" · , · 
         · "ref" · : ·   · { · 
             · "kind" · : ·   · "<string>" · , · 
             · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · }, · 
         · "body" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "title" · : · "<string>" · , · "ref" · :{ · "kind" · : · "<string>" · , · "gate_definition_id" · : · "mon_rfi" · }, · "body" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/internal-tracker/open-points/{point\_id}

### Resolve or reopen an internal tracker open point

onboarding.write

Sets an open point's status. Resolving records an internal activity entry.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

point\_id · REQUIRED

string · Internal-tracker open-point identifier from the onboarding response.

Request body · required

status · REQUIRED

enum · `open` · `resolved`

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points/op-77" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"status":"open"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points/op-77" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "status" · : ·   · "open" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points/op-77" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "status" · : · "open" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/internal-tracker/open-points/{point\_id}/comments

### Comment on an internal tracker open point

onboarding.write

Appends an EBX-internal comment to an open point. Commenting on a resolved open point reopens it.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

point\_id · REQUIRED

string · Internal-tracker open-point identifier from the onboarding response.

Request body · required

body · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points/op-77/comments" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"body":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points/op-77/comments" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "body" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/open-points/op-77/comments" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "body" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/internal-tracker/tasks

### Add an internal tracker task

onboarding.write

Adds an EBX-internal task to the onboarding's internal tracker. The tracker is EBX-only: it is never included in the external /onboarding-tasks responses and is redacted from onboarding responses for non-EBX readers.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

title · REQUIRED

string

description

string

category

string · default general

due\_date

string<date>

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/tasks" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"title":"<string>","description":"<string>","category":"general","due_date":"2026-01-01"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/tasks" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "category" · : ·   · "general" · , · 
         · "due_date" · : ·   · "2026-01-01" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/tasks" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "title" · : · "<string>" · , · "description" · : · "<string>" · , · "category" · : · "general" · , · "due_date" · : · "2026-01-01" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/internal-tracker/tasks/{task\_id}

### Update an internal tracker task status

onboarding.write

Moves an internal task between open, in progress, and done. Completing a task records an internal activity entry.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

task\_id · REQUIRED

string · Internal-tracker task identifier from the onboarding response.

Request body · required

status · REQUIRED

enum · `open` · `in_progress` · `done`

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/tasks/trk-1042" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"status":"open"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/tasks/trk-1042" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "status" · : ·   · "open" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/internal-tracker/tasks/trk-1042" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "status" · : · "open" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/partners

### Add a partner assignment

onboarding.write

Adds an EPC or EMS partner assignment to an onboarding. This stores the partner organization/contact; EBX sends passwordless magic-link access separately.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

role · REQUIRED

enum · `epc` · `ems_provider`

org\_name · REQUIRED

string

contact\_name

string

contact\_email

string<email>

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"role":"epc","org_name":"<string>","contact_name":"<string>","contact_email":"name@example.com"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "name@example.com" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "role" · : · "epc" · , · "org_name" · : · "<string>" · , · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/partners/{assignment\_id}

### Edit or replace a partner contact

onboarding.write

Updates a partner assignment's organization and contact. Changing the contact email — or editing a previously revoked partner — resets external access to not\_invited and invalidates outstanding magic links, so the contact can be freshly invited; an org/name-only edit keeps the current access state.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

assignment\_id · REQUIRED

string<uuid> · Partner assignment identifier from the onboarding response.

Request body · required

role · REQUIRED

enum · `epc` · `ems_provider`

org\_name · REQUIRED

string

contact\_name

string

contact\_email

string<email>

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"role":"epc","org_name":"<string>","contact_name":"<string>","contact_email":"name@example.com"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "name@example.com" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "role" · : · "epc" · , · "org_name" · : · "<string>" · , · "contact_name" · : · "<string>" · , · "contact_email" · : · "name@example.com" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/partners/{assignment\_id}/access/revoke

### Revoke partner onboarding task access

onboarding.write

Revokes active links, refresh sessions, database access state, and the matching Cognito task-principal group for an EPC or EMS assignment.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

assignment\_id · REQUIRED

string<uuid> · Partner assignment identifier from the onboarding response.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/access/revoke" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/access/revoke" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/access/revoke" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "tso" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "target_hc_date" · : ·   · "2026-01-01" · , · 
     · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "overall_status" · : ·   · "in_progress" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "whitelabel" · : ·   · false · , · 
     · "process_definition" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "version" · : ·   · "<string>" · , · 
       · "source_label" · : ·   · "<string>" · , · 
       · "gate_sequence" · : ·   · [ · 
         · "mon_rfi" · 
       · ], · 
       · "gate_definitions" · : ·   · "<string>" · , · 
       · "process_document_slots" · : ·   · [ · 
         · { · 
           · "document_type" · : ·   · "installation_photo_mdevice" · , · 
           · "label" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "required" · : ·   · false · , · 
           · "allow_multiple" · : ·   · false · 
         · } · 
       · ], · 
       · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
       · "schema_version" · : ·   · 0 · 
     · }, · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "asset_profile" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "asset_owner_org_id" · : ·   · "<string>" · , · 
       · "asset_owner_org_name" · : ·   · "<string>" · , · 
       · "shipping_address" · : ·   · { · 
         · "street" · : ·   · "<string>" · , · 
         · "postal_code" · : ·   · "<string>" · , · 
         · "city" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "attention" · : ·   · "<string>" · 
       · }, · 
       · "site_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "power_supply" · : ·   · "24v_dc" · , · 
       · "ethernet_available" · : ·   · false · , · 
       · "antenna_location_outdoors" · : ·   · false · , · 
       · "ems_vendor" · : ·   · "<string>" · , · 
       · "ems_vendor_other" · : ·   · "<string>" · , · 
       · "ems_supports_modbus_tcp" · : ·   · false · , · 
       · "pq_submission_targeted" · : ·   · false · , · 
       · "ems_technical_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "source_gate_passed_at" · : ·   · "<string>" · , · 
       · "source_gate_updated_at" · : ·   · "<string>" · , · 
       · "synced_at" · : ·   · "<string>" · , · 
       · "sync_reason" · : ·   · "<string>" · 
     · }, · 
     · "asset_owner_contact" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · }, · 
     · "asset_owner_contacts" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "partners" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "created_at" · : ·   · "<string>" · , · 
     · "updated_at" · : ·   · "<string>" · , · 
     · "gates" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "definition_id" · : ·   · "mon_rfi" · , · 
         · "status" · : ·   · "pending" · , · 
         · "deadline" · : ·   · "2026-01-01" · , · 
         · "last_note" · : ·   · "<string>" · , · 
         · "passed_at" · : ·   · "<string>" · , · 
         · "passed_by_user_name" · : ·   · "<string>" · , · 
         · "structured_data" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "documents" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
         · "uploaded_at" · : ·   · "<string>" · , · 
         · "uploaded_by_user_name" · : ·   · "<string>" · , · 
         · "version" · : ·   · 0 · 
       · } · 
     · ], · 
     · "activity" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "actor_user_name" · : ·   · "<string>" · , · 
         · "actor_org_name" · : ·   · "<string>" · , · 
         · "event_type" · : ·   · "onboarding_created" · , · 
         · "note" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "internal_tracker" · : ·   · { · 
       · "tasks" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "category" · : ·   · "<string>" · , · 
           · "template_key" · : ·   · "<string>" · , · 
           · "due_date" · : ·   · "<string>" · , · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "completed_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "open_points" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "ref" · : ·   · { · 
             · "kind" · : ·   · "<string>" · , · 
             · "gate_definition_id" · : ·   · "mon_rfi" · 
           · }, · 
           · "comments" · : ·   · [ · 
             · { · 
               · "id" · : ·   · "<string>" · , · 
               · "author_user_name" · : ·   · "<string>" · , · 
               · "author_org_name" · : ·   · "<string>" · , · 
               · "author_side" · : ·   · "ebx" · , · 
               · "created_at" · : ·   · "<string>" · , · 
               · "body" · : ·   · "<string>" · 
             · } · 
           · ], · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "resolved_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "applied_templates" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · } · 
   · }, · 
   · "revoked_link_count" · : ·   · 0 · , · 
   · "revoked_session_count" · : ·   · 0 · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/partners/{assignment\_id}/magic-link

### Send a partner onboarding magic link

onboarding.write

Creates a six-month reusable magic link for an EPC or EMS assignment, stores only the token hash, and sends the link to the partner contact email.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

assignment\_id · REQUIRED

string<uuid> · Partner assignment identifier from the onboarding response.

Request body · optional

language

enum · `de` · `en`

email\_template

object

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/magic-link" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"language":"de","email_template":{"subject":"<string>","greeting":"<string>","body":"<string>","button_label":"<string>","fallback_text":"<string>","signature":"<string>","generated":"<string>"}}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/magic-link" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "language" · : ·   · "de" · , · 
         · "email_template" · : ·   · { · 
             · "subject" · : ·   · "<string>" · , · 
             · "greeting" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · , · 
             · "button_label" · : ·   · "<string>" · , · 
             · "fallback_text" · : ·   · "<string>" · , · 
             · "signature" · : ·   · "<string>" · , · 
             · "generated" · : ·   · "<string>" · , · 
         · }, · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/magic-link" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "language" · : · "de" · , · "email_template" · :{ · "subject" · : · "<string>" · , · "greeting" · : · "<string>" · , · "body" · : · "<string>" · , · "button_label" · : · "<string>" · , · "fallback_text" · : · "<string>" · , · "signature" · : · "<string>" · , · "generated" · : · "<string>" · }} · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "tso" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "target_hc_date" · : ·   · "2026-01-01" · , · 
     · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "overall_status" · : ·   · "in_progress" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "whitelabel" · : ·   · false · , · 
     · "process_definition" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "version" · : ·   · "<string>" · , · 
       · "source_label" · : ·   · "<string>" · , · 
       · "gate_sequence" · : ·   · [ · 
         · "mon_rfi" · 
       · ], · 
       · "gate_definitions" · : ·   · "<string>" · , · 
       · "process_document_slots" · : ·   · [ · 
         · { · 
           · "document_type" · : ·   · "installation_photo_mdevice" · , · 
           · "label" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "required" · : ·   · false · , · 
           · "allow_multiple" · : ·   · false · 
         · } · 
       · ], · 
       · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
       · "schema_version" · : ·   · 0 · 
     · }, · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "asset_profile" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "asset_owner_org_id" · : ·   · "<string>" · , · 
       · "asset_owner_org_name" · : ·   · "<string>" · , · 
       · "shipping_address" · : ·   · { · 
         · "street" · : ·   · "<string>" · , · 
         · "postal_code" · : ·   · "<string>" · , · 
         · "city" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "attention" · : ·   · "<string>" · 
       · }, · 
       · "site_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "power_supply" · : ·   · "24v_dc" · , · 
       · "ethernet_available" · : ·   · false · , · 
       · "antenna_location_outdoors" · : ·   · false · , · 
       · "ems_vendor" · : ·   · "<string>" · , · 
       · "ems_vendor_other" · : ·   · "<string>" · , · 
       · "ems_supports_modbus_tcp" · : ·   · false · , · 
       · "pq_submission_targeted" · : ·   · false · , · 
       · "ems_technical_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "source_gate_passed_at" · : ·   · "<string>" · , · 
       · "source_gate_updated_at" · : ·   · "<string>" · , · 
       · "synced_at" · : ·   · "<string>" · , · 
       · "sync_reason" · : ·   · "<string>" · 
     · }, · 
     · "asset_owner_contact" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · }, · 
     · "asset_owner_contacts" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "partners" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "created_at" · : ·   · "<string>" · , · 
     · "updated_at" · : ·   · "<string>" · , · 
     · "gates" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "definition_id" · : ·   · "mon_rfi" · , · 
         · "status" · : ·   · "pending" · , · 
         · "deadline" · : ·   · "2026-01-01" · , · 
         · "last_note" · : ·   · "<string>" · , · 
         · "passed_at" · : ·   · "<string>" · , · 
         · "passed_by_user_name" · : ·   · "<string>" · , · 
         · "structured_data" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "documents" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
         · "uploaded_at" · : ·   · "<string>" · , · 
         · "uploaded_by_user_name" · : ·   · "<string>" · , · 
         · "version" · : ·   · 0 · 
       · } · 
     · ], · 
     · "activity" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "actor_user_name" · : ·   · "<string>" · , · 
         · "actor_org_name" · : ·   · "<string>" · , · 
         · "event_type" · : ·   · "onboarding_created" · , · 
         · "note" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "internal_tracker" · : ·   · { · 
       · "tasks" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "category" · : ·   · "<string>" · , · 
           · "template_key" · : ·   · "<string>" · , · 
           · "due_date" · : ·   · "<string>" · , · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "completed_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "open_points" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "ref" · : ·   · { · 
             · "kind" · : ·   · "<string>" · , · 
             · "gate_definition_id" · : ·   · "mon_rfi" · 
           · }, · 
           · "comments" · : ·   · [ · 
             · { · 
               · "id" · : ·   · "<string>" · , · 
               · "author_user_name" · : ·   · "<string>" · , · 
               · "author_org_name" · : ·   · "<string>" · , · 
               · "author_side" · : ·   · "ebx" · , · 
               · "created_at" · : ·   · "<string>" · , · 
               · "body" · : ·   · "<string>" · 
             · } · 
           · ], · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "resolved_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "applied_templates" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · } · 
   · }, · 
   · "dev_magic_link" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/partners/{assignment\_id}/magic-link/revoke

### Revoke active partner onboarding magic links

onboarding.write

Revokes active reusable magic links and refresh sessions for an EPC or EMS assignment without revoking the assignment itself.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

assignment\_id · REQUIRED

string<uuid> · Partner assignment identifier from the onboarding response.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/magic-link/revoke" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/magic-link/revoke" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/partners/00000000-0000-0000-0000-000000000000/magic-link/revoke" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "onboarding" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "tso" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "target_hc_date" · : ·   · "2026-01-01" · , · 
     · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "overall_status" · : ·   · "in_progress" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "whitelabel" · : ·   · false · , · 
     · "process_definition" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "integration_type" · : ·   · "monitoring_only" · , · 
       · "version" · : ·   · "<string>" · , · 
       · "source_label" · : ·   · "<string>" · , · 
       · "gate_sequence" · : ·   · [ · 
         · "mon_rfi" · 
       · ], · 
       · "gate_definitions" · : ·   · "<string>" · , · 
       · "process_document_slots" · : ·   · [ · 
         · { · 
           · "document_type" · : ·   · "installation_photo_mdevice" · , · 
           · "label" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "required" · : ·   · false · , · 
           · "allow_multiple" · : ·   · false · 
         · } · 
       · ], · 
       · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
       · "schema_version" · : ·   · 0 · 
     · }, · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "asset_profile" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "asset_name" · : ·   · "<string>" · , · 
       · "location" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "asset_owner_org_id" · : ·   · "<string>" · , · 
       · "asset_owner_org_name" · : ·   · "<string>" · , · 
       · "shipping_address" · : ·   · { · 
         · "street" · : ·   · "<string>" · , · 
         · "postal_code" · : ·   · "<string>" · , · 
         · "city" · : ·   · "<string>" · , · 
         · "country" · : ·   · "<string>" · , · 
         · "attention" · : ·   · "<string>" · 
       · }, · 
       · "site_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "power_supply" · : ·   · "24v_dc" · , · 
       · "ethernet_available" · : ·   · false · , · 
       · "antenna_location_outdoors" · : ·   · false · , · 
       · "ems_vendor" · : ·   · "<string>" · , · 
       · "ems_vendor_other" · : ·   · "<string>" · , · 
       · "ems_supports_modbus_tcp" · : ·   · false · , · 
       · "pq_submission_targeted" · : ·   · false · , · 
       · "ems_technical_contact" · : ·   · { · 
         · "name" · : ·   · "<string>" · , · 
         · "email" · : ·   · "name@example.com" · , · 
         · "phone" · : ·   · "<string>" · 
       · }, · 
       · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "source_gate_passed_at" · : ·   · "<string>" · , · 
       · "source_gate_updated_at" · : ·   · "<string>" · , · 
       · "synced_at" · : ·   · "<string>" · , · 
       · "sync_reason" · : ·   · "<string>" · 
     · }, · 
     · "asset_owner_contact" · : ·   · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · }, · 
     · "asset_owner_contacts" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "partners" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "role" · : ·   · "epc" · , · 
         · "org_name" · : ·   · "<string>" · , · 
         · "contact_name" · : ·   · "<string>" · , · 
         · "contact_email" · : ·   · "<string>" · , · 
         · "access" · : ·   · { · 
           · "status" · : ·   · "<string>" · 
         · } · 
       · } · 
     · ], · 
     · "created_at" · : ·   · "<string>" · , · 
     · "updated_at" · : ·   · "<string>" · , · 
     · "gates" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "definition_id" · : ·   · "mon_rfi" · , · 
         · "status" · : ·   · "pending" · , · 
         · "deadline" · : ·   · "2026-01-01" · , · 
         · "last_note" · : ·   · "<string>" · , · 
         · "passed_at" · : ·   · "<string>" · , · 
         · "passed_by_user_name" · : ·   · "<string>" · , · 
         · "structured_data" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "documents" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "filename" · : ·   · "<string>" · , · 
         · "size_bytes" · : ·   · 0 · , · 
         · "content_type" · : ·   · "<string>" · , · 
         · "uploaded_at" · : ·   · "<string>" · , · 
         · "uploaded_by_user_name" · : ·   · "<string>" · , · 
         · "version" · : ·   · 0 · 
       · } · 
     · ], · 
     · "activity" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "onboarding_id" · : ·   · "<string>" · , · 
         · "gate_definition_id" · : ·   · "mon_rfi" · , · 
         · "actor_user_name" · : ·   · "<string>" · , · 
         · "actor_org_name" · : ·   · "<string>" · , · 
         · "event_type" · : ·   · "onboarding_created" · , · 
         · "note" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "internal_tracker" · : ·   · { · 
       · "tasks" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "description" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "category" · : ·   · "<string>" · , · 
           · "template_key" · : ·   · "<string>" · , · 
           · "due_date" · : ·   · "<string>" · , · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "completed_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "open_points" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "title" · : ·   · "<string>" · , · 
           · "status" · : ·   · "open" · , · 
           · "ref" · : ·   · { · 
             · "kind" · : ·   · "<string>" · , · 
             · "gate_definition_id" · : ·   · "mon_rfi" · 
           · }, · 
           · "comments" · : ·   · [ · 
             · { · 
               · "id" · : ·   · "<string>" · , · 
               · "author_user_name" · : ·   · "<string>" · , · 
               · "author_org_name" · : ·   · "<string>" · , · 
               · "author_side" · : ·   · "ebx" · , · 
               · "created_at" · : ·   · "<string>" · , · 
               · "body" · : ·   · "<string>" · 
             · } · 
           · ], · 
           · "created_by_user_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "updated_at" · : ·   · "<string>" · , · 
           · "resolved_at" · : ·   · "<string>" · 
         · } · 
       · ], · 
       · "applied_templates" · : ·   · [ · 
         · "<string>" · 
       · ] · 
     · } · 
   · }, · 
   · "revoked_link_count" · : ·   · 0 · , · 
   · "revoked_session_count" · : ·   · 0 · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/pq-proofs

### Generate the PQ Portal proof workbook for a Betriebsfahrt run

onboarding.write

Reads the asset's telemetry for the run window, writes the Doppelhubkurve workbook in the PQ Portal layout, stores it as a versioned onboarding document and records it on the run. An invalid result (gaps, missing signals) is stored and reported too.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

run\_index · REQUIRED

integer · Index of the run in the Betriebsfahrt gate's structured data.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-proofs" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"run_index":0}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-proofs" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "run_index" · : ·   · 0 · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-proofs" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "run_index" · : · 0 · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "run_index" · : ·   · 0 · , · 
   · "run" · : ·   · { · 
     · "product" · : ·   · "fcr" · , · 
     · "direction" · : ·   · "positive" · , · 
     · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "operating_point_mw" · : ·   · "0" · , · 
     · "requested_capacity_mw" · : ·   · "<string>" · , · 
     · "setpoint_schedule" · : ·   · [ · 
       · { · 
         · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "setpoint_mw" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "notes" · : ·   · "<string>" · , · 
     · "proof" · : ·   · { · 
       · "document_id" · : ·   · "<string>" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "source" · : ·   · "generated" · , · 
       · "generated_at" · : ·   · "<string>" · , · 
       · "generator_version" · : ·   · "<string>" · , · 
       · "rows" · : ·   · 0 · , · 
       · "missing_seconds" · : ·   · 0 · , · 
       · "max_gap_seconds" · : ·   · 0 · , · 
       · "sha256" · : ·   · "<string>" · , · 
       · "valid" · : ·   · false · , · 
       · "problems" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "warnings" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "run_fingerprint" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "measurement_point" · : ·   · "<string>" · 
     · }, · 
     · "source" · : ·   · "manual" · , · 
     · "session_id" · : ·   · "<string>" · , · 
     · "verdict_status" · : ·   · "pass" · , · 
     · "verdict_override_reason" · : ·   · "<string>" · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PUT · /v1/onboardings/{onboarding\_id}/pq-proofs

### Attach an uploaded proof workbook to a Betriebsfahrt run

onboarding.write

Links a pq\_doublestroke\_file document uploaded into the Betriebsfahrt gate to one run, replacing a generated proof.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

run\_index · REQUIRED

integer

document\_id · REQUIRED

string<uuid> · An available pq\_doublestroke\_file upload of this onboarding.

Example value

cURL:

```bash
curl ·   · -X ·  PUT  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-proofs" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"run_index":0,"document_id":"00000000-0000-0000-0000-000000000000"}'
```

Python:

```python
import ·  httpx

r = httpx.put(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-proofs" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "run_index" · : ·   · 0 · , · 
         · "document_id" · : ·   · "00000000-0000-0000-0000-000000000000" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-proofs" · , ·   · { · 
   · method · : ·   · "PUT" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "run_index" · : · 0 · , · "document_id" · : · "00000000-0000-0000-0000-000000000000" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "run_index" · : ·   · 0 · , · 
   · "run" · : ·   · { · 
     · "product" · : ·   · "fcr" · , · 
     · "direction" · : ·   · "positive" · , · 
     · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
     · "operating_point_mw" · : ·   · "0" · , · 
     · "requested_capacity_mw" · : ·   · "<string>" · , · 
     · "setpoint_schedule" · : ·   · [ · 
       · { · 
         · "start" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "end" · : ·   · "2026-09-10T13:30:00Z" · , · 
         · "setpoint_mw" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "notes" · : ·   · "<string>" · , · 
     · "proof" · : ·   · { · 
       · "document_id" · : ·   · "<string>" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "source" · : ·   · "generated" · , · 
       · "generated_at" · : ·   · "<string>" · , · 
       · "generator_version" · : ·   · "<string>" · , · 
       · "rows" · : ·   · 0 · , · 
       · "missing_seconds" · : ·   · 0 · , · 
       · "max_gap_seconds" · : ·   · 0 · , · 
       · "sha256" · : ·   · "<string>" · , · 
       · "valid" · : ·   · false · , · 
       · "problems" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "warnings" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "run_fingerprint" · : ·   · "<string>" · , · 
       · "asset_id" · : ·   · "<string>" · , · 
       · "measurement_point" · : ·   · "<string>" · 
     · }, · 
     · "source" · : ·   · "manual" · , · 
     · "session_id" · : ·   · "<string>" · , · 
     · "verdict_status" · : ·   · "pass" · , · 
     · "verdict_override_reason" · : ·   · "<string>" · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}/pq-submission

### Get PQ Portal submission status

onboarding.read

Returns the orchestration step timeline and the per-product prequalification states for this onboarding's PQ Portal submission.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "<string>" · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "run_kind" · : ·   · "<string>" · , · 
   · "current_step" · : ·   · "<string>" · , · 
   · "steps" · : ·   · [ · 
     · { · 
       · "step" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "started_at" · : ·   · "<string>" · , · 
       · "finished_at" · : ·   · "<string>" · , · 
       · "error" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "blockers" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "detail" · : ·   · "<string>" · , · 
       · "source" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "profile" · : ·   · { · 
     · "balance_group_responsible_name" · : ·   · "<string>" · , · 
     · "balance_group_eic_x" · : ·   · "<string>" · , · 
     · "contractor_name" · : ·   · "<string>" · , · 
     · "connection_type_control_system_name" · : ·   · "<string>" · , · 
     · "products" · : ·   · [ · 
       · "<string>" · 
     · ], · 
     · "power_caps_mw" · : ·   · "<string>" · 
   · }, · 
   · "technical_unit_id" · : ·   · "<string>" · , · 
   · "reserve_unit_id" · : ·   · "<string>" · , · 
   · "dso_id" · : ·   · "<string>" · , · 
   · "contract_ids" · : ·   · "<string>" · , · 
   · "concept_ids" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "attempt_count" · : ·   · 0 · , · 
   · "triggered_by_user_name" · : ·   · "<string>" · , · 
   · "triggered_at" · : ·   · "<string>" · , · 
   · "review_snapshot" · : ·   · "<string>" · , · 
   · "review_snapshot_hash" · : ·   · "<string>" · , · 
   · "review_inputs_changed" · : ·   · false · , · 
   · "reviewed_by_user_name" · : ·   · "<string>" · , · 
   · "reviewed_at" · : ·   · "<string>" · , · 
   · "review_note" · : ·   · "<string>" · , · 
   · "requested_at" · : ·   · "<string>" · , · 
   · "last_polled_at" · : ·   · "<string>" · , · 
   · "preflight_completed_at" · : ·   · "<string>" · , · 
   · "applications" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "reserve_type" · : ·   · "<string>" · , · 
       · "reserve_direction" · : ·   · "<string>" · , · 
       · "cycle" · : ·   · 0 · , · 
       · "reserve_id" · : ·   · "<string>" · , · 
       · "portal_prequalification_id" · : ·   · "<string>" · , · 
       · "portal_state" · : ·   · "<string>" · , · 
       · "portal_number" · : ·   · "<string>" · , · 
       · "valid_from" · : ·   · "<string>" · , · 
       · "valid_until" · : ·   · "<string>" · , · 
       · "proof" · : ·   · { · 
         · "document_id" · : ·   · "<string>" · , · 
         · "sha256" · : ·   · "<string>" · , · 
         · "portal_document_id" · : ·   · "<string>" · , · 
         · "portal_document_version_id" · : ·   · "<string>" · 
       · }, · 
       · "performance_proof" · : ·   · "<string>" · , · 
       · "dso_confirmation" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "state" · : ·   · "<string>" · , · 
         · "power_mw" · : ·   · "<string>" · , · 
         · "gradient_mw_per_min" · : ·   · "<string>" · 
       · }, · 
       · "requested_measurement" · : ·   · "<string>" · , · 
       · "requested_measurement_overrides" · : ·   · "<string>" · , · 
       · "confirmed_measurement" · : ·   · "<string>" · , · 
       · "calculated_measurement" · : ·   · "<string>" · , · 
       · "evaluation_status" · : ·   · "<string>" · , · 
       · "evaluation_details" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "comments" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "text" · : ·   · "<string>" · , · 
           · "author_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "is_ebx" · : ·   · false · 
         · } · 
       · ], · 
       · "unresolved_comment_count" · : ·   · 0 · , · 
       · "action_requested_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/pq-submission/applications/{application\_id}/comments

### Reply to a TSO clarification request (Nachfrage)

onboarding.write

Posts a reply on the prequalification's portal comment thread and refreshes the local snapshot.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

application\_id · REQUIRED

string<uuid> · PQ application identifier from the submission status response.

Request body · required

body · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/applications/00000000-0000-0000-0000-000000000000/comments" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"body":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/applications/00000000-0000-0000-0000-000000000000/comments" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "body" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/applications/00000000-0000-0000-0000-000000000000/comments" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "body" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 201

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "reserve_type" · : ·   · "<string>" · , · 
   · "reserve_direction" · : ·   · "<string>" · , · 
   · "cycle" · : ·   · 0 · , · 
   · "reserve_id" · : ·   · "<string>" · , · 
   · "portal_prequalification_id" · : ·   · "<string>" · , · 
   · "portal_state" · : ·   · "<string>" · , · 
   · "portal_number" · : ·   · "<string>" · , · 
   · "valid_from" · : ·   · "<string>" · , · 
   · "valid_until" · : ·   · "<string>" · , · 
   · "proof" · : ·   · { · 
     · "document_id" · : ·   · "<string>" · , · 
     · "sha256" · : ·   · "<string>" · , · 
     · "portal_document_id" · : ·   · "<string>" · , · 
     · "portal_document_version_id" · : ·   · "<string>" · 
   · }, · 
   · "performance_proof" · : ·   · "<string>" · , · 
   · "dso_confirmation" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "state" · : ·   · "<string>" · , · 
     · "power_mw" · : ·   · "<string>" · , · 
     · "gradient_mw_per_min" · : ·   · "<string>" · 
   · }, · 
   · "requested_measurement" · : ·   · "<string>" · , · 
   · "requested_measurement_overrides" · : ·   · "<string>" · , · 
   · "confirmed_measurement" · : ·   · "<string>" · , · 
   · "calculated_measurement" · : ·   · "<string>" · , · 
   · "evaluation_status" · : ·   · "<string>" · , · 
   · "evaluation_details" · : ·   · [ · 
     · "<string>" · 
   · ], · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "text" · : ·   · "<string>" · , · 
       · "author_name" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "is_ebx" · : ·   · false · 
     · } · 
   · ], · 
   · "unresolved_comment_count" · : ·   · 0 · , · 
   · "action_requested_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PUT · /v1/onboardings/{onboarding\_id}/pq-submission/applications/{application\_id}/requested-measurement

### Override requested values of one prequalification

onboarding.write

Records operator overrides (each with a reason) of the requested values computed from the RfI, the DSO confirmation and the portal's proof analysis. They apply on the next preparation run.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

application\_id · REQUIRED

string<uuid> · PQ application identifier from the case status response.

Request body · required

overrides

object

Example value

cURL:

```bash
curl ·   · -X ·  PUT  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/applications/00000000-0000-0000-0000-000000000000/requested-measurement" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"overrides":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.put(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/applications/00000000-0000-0000-0000-000000000000/requested-measurement" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "overrides" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/applications/00000000-0000-0000-0000-000000000000/requested-measurement" · , ·   · { · 
   · method · : ·   · "PUT" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "overrides" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "reserve_type" · : ·   · "<string>" · , · 
   · "reserve_direction" · : ·   · "<string>" · , · 
   · "cycle" · : ·   · 0 · , · 
   · "reserve_id" · : ·   · "<string>" · , · 
   · "portal_prequalification_id" · : ·   · "<string>" · , · 
   · "portal_state" · : ·   · "<string>" · , · 
   · "portal_number" · : ·   · "<string>" · , · 
   · "valid_from" · : ·   · "<string>" · , · 
   · "valid_until" · : ·   · "<string>" · , · 
   · "proof" · : ·   · { · 
     · "document_id" · : ·   · "<string>" · , · 
     · "sha256" · : ·   · "<string>" · , · 
     · "portal_document_id" · : ·   · "<string>" · , · 
     · "portal_document_version_id" · : ·   · "<string>" · 
   · }, · 
   · "performance_proof" · : ·   · "<string>" · , · 
   · "dso_confirmation" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "state" · : ·   · "<string>" · , · 
     · "power_mw" · : ·   · "<string>" · , · 
     · "gradient_mw_per_min" · : ·   · "<string>" · 
   · }, · 
   · "requested_measurement" · : ·   · "<string>" · , · 
   · "requested_measurement_overrides" · : ·   · "<string>" · , · 
   · "confirmed_measurement" · : ·   · "<string>" · , · 
   · "calculated_measurement" · : ·   · "<string>" · , · 
   · "evaluation_status" · : ·   · "<string>" · , · 
   · "evaluation_details" · : ·   · [ · 
     · "<string>" · 
   · ], · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "text" · : ·   · "<string>" · , · 
       · "author_name" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "is_ebx" · : ·   · false · 
     · } · 
   · ], · 
   · "unresolved_comment_count" · : ·   · 0 · , · 
   · "action_requested_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/pq-submission/preflight

### Create the PQ Portal entities ahead of the Betriebsfahrt

onboarding.write

The pre-flight of an automated Betriebsfahrt: validates the collected data (the recording is not required yet), resolves the portal master data, creates or updates the technical unit and reserve unit, the reserves and the planned prequalifications the recording will be uploaded to. A missing framework contract or delivery concept is a warning here. Runs to its end before answering; a complete pre-flight leaves the case blocked on `betriebsfahrt_required`.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/preflight" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/preflight" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/preflight" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "<string>" · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "run_kind" · : ·   · "<string>" · , · 
   · "current_step" · : ·   · "<string>" · , · 
   · "steps" · : ·   · [ · 
     · { · 
       · "step" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "started_at" · : ·   · "<string>" · , · 
       · "finished_at" · : ·   · "<string>" · , · 
       · "error" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "blockers" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "detail" · : ·   · "<string>" · , · 
       · "source" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "profile" · : ·   · { · 
     · "balance_group_responsible_name" · : ·   · "<string>" · , · 
     · "balance_group_eic_x" · : ·   · "<string>" · , · 
     · "contractor_name" · : ·   · "<string>" · , · 
     · "connection_type_control_system_name" · : ·   · "<string>" · , · 
     · "products" · : ·   · [ · 
       · "<string>" · 
     · ], · 
     · "power_caps_mw" · : ·   · "<string>" · 
   · }, · 
   · "technical_unit_id" · : ·   · "<string>" · , · 
   · "reserve_unit_id" · : ·   · "<string>" · , · 
   · "dso_id" · : ·   · "<string>" · , · 
   · "contract_ids" · : ·   · "<string>" · , · 
   · "concept_ids" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "attempt_count" · : ·   · 0 · , · 
   · "triggered_by_user_name" · : ·   · "<string>" · , · 
   · "triggered_at" · : ·   · "<string>" · , · 
   · "review_snapshot" · : ·   · "<string>" · , · 
   · "review_snapshot_hash" · : ·   · "<string>" · , · 
   · "review_inputs_changed" · : ·   · false · , · 
   · "reviewed_by_user_name" · : ·   · "<string>" · , · 
   · "reviewed_at" · : ·   · "<string>" · , · 
   · "review_note" · : ·   · "<string>" · , · 
   · "requested_at" · : ·   · "<string>" · , · 
   · "last_polled_at" · : ·   · "<string>" · , · 
   · "preflight_completed_at" · : ·   · "<string>" · , · 
   · "applications" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "reserve_type" · : ·   · "<string>" · , · 
       · "reserve_direction" · : ·   · "<string>" · , · 
       · "cycle" · : ·   · 0 · , · 
       · "reserve_id" · : ·   · "<string>" · , · 
       · "portal_prequalification_id" · : ·   · "<string>" · , · 
       · "portal_state" · : ·   · "<string>" · , · 
       · "portal_number" · : ·   · "<string>" · , · 
       · "valid_from" · : ·   · "<string>" · , · 
       · "valid_until" · : ·   · "<string>" · , · 
       · "proof" · : ·   · { · 
         · "document_id" · : ·   · "<string>" · , · 
         · "sha256" · : ·   · "<string>" · , · 
         · "portal_document_id" · : ·   · "<string>" · , · 
         · "portal_document_version_id" · : ·   · "<string>" · 
       · }, · 
       · "performance_proof" · : ·   · "<string>" · , · 
       · "dso_confirmation" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "state" · : ·   · "<string>" · , · 
         · "power_mw" · : ·   · "<string>" · , · 
         · "gradient_mw_per_min" · : ·   · "<string>" · 
       · }, · 
       · "requested_measurement" · : ·   · "<string>" · , · 
       · "requested_measurement_overrides" · : ·   · "<string>" · , · 
       · "confirmed_measurement" · : ·   · "<string>" · , · 
       · "calculated_measurement" · : ·   · "<string>" · , · 
       · "evaluation_status" · : ·   · "<string>" · , · 
       · "evaluation_details" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "comments" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "text" · : ·   · "<string>" · , · 
           · "author_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "is_ebx" · : ·   · false · 
         · } · 
       · ], · 
       · "unresolved_comment_count" · : ·   · 0 · , · 
       · "action_requested_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/pq-submission/prepare

### Prepare the PQ application in the PQ Portal

onboarding.write

Claims a preparation run and executes it in the background: validates the collected data, resolves the portal master data, creates or updates the technical unit, reserve unit, reserves, concept links and documents, requests the digital DSO confirmations, uploads the proof workbooks, waits for the portal's analysis, sets the requested values and reads the portal's evaluation. Nothing is requested from the TSO: the case ends blocked, waiting for the DSO or the analysis, or ready for review. Safe to repeat.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/prepare" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/prepare" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/prepare" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 202

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "<string>" · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "run_kind" · : ·   · "<string>" · , · 
   · "current_step" · : ·   · "<string>" · , · 
   · "steps" · : ·   · [ · 
     · { · 
       · "step" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "started_at" · : ·   · "<string>" · , · 
       · "finished_at" · : ·   · "<string>" · , · 
       · "error" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "blockers" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "detail" · : ·   · "<string>" · , · 
       · "source" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "profile" · : ·   · { · 
     · "balance_group_responsible_name" · : ·   · "<string>" · , · 
     · "balance_group_eic_x" · : ·   · "<string>" · , · 
     · "contractor_name" · : ·   · "<string>" · , · 
     · "connection_type_control_system_name" · : ·   · "<string>" · , · 
     · "products" · : ·   · [ · 
       · "<string>" · 
     · ], · 
     · "power_caps_mw" · : ·   · "<string>" · 
   · }, · 
   · "technical_unit_id" · : ·   · "<string>" · , · 
   · "reserve_unit_id" · : ·   · "<string>" · , · 
   · "dso_id" · : ·   · "<string>" · , · 
   · "contract_ids" · : ·   · "<string>" · , · 
   · "concept_ids" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "attempt_count" · : ·   · 0 · , · 
   · "triggered_by_user_name" · : ·   · "<string>" · , · 
   · "triggered_at" · : ·   · "<string>" · , · 
   · "review_snapshot" · : ·   · "<string>" · , · 
   · "review_snapshot_hash" · : ·   · "<string>" · , · 
   · "review_inputs_changed" · : ·   · false · , · 
   · "reviewed_by_user_name" · : ·   · "<string>" · , · 
   · "reviewed_at" · : ·   · "<string>" · , · 
   · "review_note" · : ·   · "<string>" · , · 
   · "requested_at" · : ·   · "<string>" · , · 
   · "last_polled_at" · : ·   · "<string>" · , · 
   · "preflight_completed_at" · : ·   · "<string>" · , · 
   · "applications" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "reserve_type" · : ·   · "<string>" · , · 
       · "reserve_direction" · : ·   · "<string>" · , · 
       · "cycle" · : ·   · 0 · , · 
       · "reserve_id" · : ·   · "<string>" · , · 
       · "portal_prequalification_id" · : ·   · "<string>" · , · 
       · "portal_state" · : ·   · "<string>" · , · 
       · "portal_number" · : ·   · "<string>" · , · 
       · "valid_from" · : ·   · "<string>" · , · 
       · "valid_until" · : ·   · "<string>" · , · 
       · "proof" · : ·   · { · 
         · "document_id" · : ·   · "<string>" · , · 
         · "sha256" · : ·   · "<string>" · , · 
         · "portal_document_id" · : ·   · "<string>" · , · 
         · "portal_document_version_id" · : ·   · "<string>" · 
       · }, · 
       · "performance_proof" · : ·   · "<string>" · , · 
       · "dso_confirmation" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "state" · : ·   · "<string>" · , · 
         · "power_mw" · : ·   · "<string>" · , · 
         · "gradient_mw_per_min" · : ·   · "<string>" · 
       · }, · 
       · "requested_measurement" · : ·   · "<string>" · , · 
       · "requested_measurement_overrides" · : ·   · "<string>" · , · 
       · "confirmed_measurement" · : ·   · "<string>" · , · 
       · "calculated_measurement" · : ·   · "<string>" · , · 
       · "evaluation_status" · : ·   · "<string>" · , · 
       · "evaluation_details" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "comments" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "text" · : ·   · "<string>" · , · 
           · "author_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "is_ebx" · : ·   · false · 
         · } · 
       · ], · 
       · "unresolved_comment_count" · : ·   · 0 · , · 
       · "action_requested_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PUT · /v1/onboardings/{onboarding\_id}/pq-submission/profile

### Update the EBX-maintained PQ profile

onboarding.write

Stores the balance-group responsible, balance group EIC, supplier, IT connection type, targeted products and power caps for this onboarding's PQ case. A prepared case must be prepared again afterwards.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

balance\_group\_responsible\_name

string

balance\_group\_eic\_x

string

contractor\_name

string

connection\_type\_control\_system\_name

string

products

array\[string\]

power\_caps\_mw

object

Example value

cURL:

```bash
curl ·   · -X ·  PUT  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/profile" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"balance_group_responsible_name":"<string>","balance_group_eic_x":"<string>","contractor_name":"<string>","connection_type_control_system_name":"<string>","products":["<string>"],"power_caps_mw":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.put(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/profile" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "balance_group_responsible_name" · : ·   · "<string>" · , · 
         · "balance_group_eic_x" · : ·   · "<string>" · , · 
         · "contractor_name" · : ·   · "<string>" · , · 
         · "connection_type_control_system_name" · : ·   · "<string>" · , · 
         · "products" · : ·   · [ · 
             · "<string>" · , · 
         · ], · 
         · "power_caps_mw" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/profile" · , ·   · { · 
   · method · : ·   · "PUT" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "balance_group_responsible_name" · : · "<string>" · , · "balance_group_eic_x" · : · "<string>" · , · "contractor_name" · : · "<string>" · , · "connection_type_control_system_name" · : · "<string>" · , · "products" · :[ · "<string>" · ], · "power_caps_mw" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "<string>" · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "run_kind" · : ·   · "<string>" · , · 
   · "current_step" · : ·   · "<string>" · , · 
   · "steps" · : ·   · [ · 
     · { · 
       · "step" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "started_at" · : ·   · "<string>" · , · 
       · "finished_at" · : ·   · "<string>" · , · 
       · "error" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "blockers" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "detail" · : ·   · "<string>" · , · 
       · "source" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "profile" · : ·   · { · 
     · "balance_group_responsible_name" · : ·   · "<string>" · , · 
     · "balance_group_eic_x" · : ·   · "<string>" · , · 
     · "contractor_name" · : ·   · "<string>" · , · 
     · "connection_type_control_system_name" · : ·   · "<string>" · , · 
     · "products" · : ·   · [ · 
       · "<string>" · 
     · ], · 
     · "power_caps_mw" · : ·   · "<string>" · 
   · }, · 
   · "technical_unit_id" · : ·   · "<string>" · , · 
   · "reserve_unit_id" · : ·   · "<string>" · , · 
   · "dso_id" · : ·   · "<string>" · , · 
   · "contract_ids" · : ·   · "<string>" · , · 
   · "concept_ids" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "attempt_count" · : ·   · 0 · , · 
   · "triggered_by_user_name" · : ·   · "<string>" · , · 
   · "triggered_at" · : ·   · "<string>" · , · 
   · "review_snapshot" · : ·   · "<string>" · , · 
   · "review_snapshot_hash" · : ·   · "<string>" · , · 
   · "review_inputs_changed" · : ·   · false · , · 
   · "reviewed_by_user_name" · : ·   · "<string>" · , · 
   · "reviewed_at" · : ·   · "<string>" · , · 
   · "review_note" · : ·   · "<string>" · , · 
   · "requested_at" · : ·   · "<string>" · , · 
   · "last_polled_at" · : ·   · "<string>" · , · 
   · "preflight_completed_at" · : ·   · "<string>" · , · 
   · "applications" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "reserve_type" · : ·   · "<string>" · , · 
       · "reserve_direction" · : ·   · "<string>" · , · 
       · "cycle" · : ·   · 0 · , · 
       · "reserve_id" · : ·   · "<string>" · , · 
       · "portal_prequalification_id" · : ·   · "<string>" · , · 
       · "portal_state" · : ·   · "<string>" · , · 
       · "portal_number" · : ·   · "<string>" · , · 
       · "valid_from" · : ·   · "<string>" · , · 
       · "valid_until" · : ·   · "<string>" · , · 
       · "proof" · : ·   · { · 
         · "document_id" · : ·   · "<string>" · , · 
         · "sha256" · : ·   · "<string>" · , · 
         · "portal_document_id" · : ·   · "<string>" · , · 
         · "portal_document_version_id" · : ·   · "<string>" · 
       · }, · 
       · "performance_proof" · : ·   · "<string>" · , · 
       · "dso_confirmation" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "state" · : ·   · "<string>" · , · 
         · "power_mw" · : ·   · "<string>" · , · 
         · "gradient_mw_per_min" · : ·   · "<string>" · 
       · }, · 
       · "requested_measurement" · : ·   · "<string>" · , · 
       · "requested_measurement_overrides" · : ·   · "<string>" · , · 
       · "confirmed_measurement" · : ·   · "<string>" · , · 
       · "calculated_measurement" · : ·   · "<string>" · , · 
       · "evaluation_status" · : ·   · "<string>" · , · 
       · "evaluation_details" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "comments" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "text" · : ·   · "<string>" · , · 
           · "author_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "is_ebx" · : ·   · false · 
         · } · 
       · ], · 
       · "unresolved_comment_count" · : ·   · 0 · , · 
       · "action_requested_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/{onboarding\_id}/pq-submission/readiness

### Check PQ Portal submission readiness

onboarding.read

Validates that all data and documents required for the automated PQ Portal submission are collected. With `resolve=true` the values are also resolved against the portal master data.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Query parameters

resolve

boolean · default false · Also resolve collected values against PQ Portal master data and build the payload preview.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/readiness" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/readiness" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/readiness" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "ready" · : ·   · false · , · 
   · "integration_enabled" · : ·   · false · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "resolve_attempted" · : ·   · false · , · 
   · "items" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "status" · : ·   · "ok" · , · 
       · "detail" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "derived_products" · : ·   · [ · 
     · "<string>" · 
   · ], · 
   · "payload_preview" · : ·   · { · 
     · "technical_unit" · : ·   · "<string>" · , · 
     · "reserve_unit" · : ·   · "<string>" · , · 
     · "requested_measurements" · : ·   · "<string>" · , · 
     · "documents" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/pq-submission/replan

### Start a new PQ cycle after a TSO rejection

onboarding.write

Resets the rejected prequalifications for a new cycle; the next preparation creates new ones in the portal. Reopen the PQ Submission gate first if it was passed.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/replan" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/replan" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/replan" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "<string>" · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "run_kind" · : ·   · "<string>" · , · 
   · "current_step" · : ·   · "<string>" · , · 
   · "steps" · : ·   · [ · 
     · { · 
       · "step" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "started_at" · : ·   · "<string>" · , · 
       · "finished_at" · : ·   · "<string>" · , · 
       · "error" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "blockers" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "detail" · : ·   · "<string>" · , · 
       · "source" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "profile" · : ·   · { · 
     · "balance_group_responsible_name" · : ·   · "<string>" · , · 
     · "balance_group_eic_x" · : ·   · "<string>" · , · 
     · "contractor_name" · : ·   · "<string>" · , · 
     · "connection_type_control_system_name" · : ·   · "<string>" · , · 
     · "products" · : ·   · [ · 
       · "<string>" · 
     · ], · 
     · "power_caps_mw" · : ·   · "<string>" · 
   · }, · 
   · "technical_unit_id" · : ·   · "<string>" · , · 
   · "reserve_unit_id" · : ·   · "<string>" · , · 
   · "dso_id" · : ·   · "<string>" · , · 
   · "contract_ids" · : ·   · "<string>" · , · 
   · "concept_ids" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "attempt_count" · : ·   · 0 · , · 
   · "triggered_by_user_name" · : ·   · "<string>" · , · 
   · "triggered_at" · : ·   · "<string>" · , · 
   · "review_snapshot" · : ·   · "<string>" · , · 
   · "review_snapshot_hash" · : ·   · "<string>" · , · 
   · "review_inputs_changed" · : ·   · false · , · 
   · "reviewed_by_user_name" · : ·   · "<string>" · , · 
   · "reviewed_at" · : ·   · "<string>" · , · 
   · "review_note" · : ·   · "<string>" · , · 
   · "requested_at" · : ·   · "<string>" · , · 
   · "last_polled_at" · : ·   · "<string>" · , · 
   · "preflight_completed_at" · : ·   · "<string>" · , · 
   · "applications" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "reserve_type" · : ·   · "<string>" · , · 
       · "reserve_direction" · : ·   · "<string>" · , · 
       · "cycle" · : ·   · 0 · , · 
       · "reserve_id" · : ·   · "<string>" · , · 
       · "portal_prequalification_id" · : ·   · "<string>" · , · 
       · "portal_state" · : ·   · "<string>" · , · 
       · "portal_number" · : ·   · "<string>" · , · 
       · "valid_from" · : ·   · "<string>" · , · 
       · "valid_until" · : ·   · "<string>" · , · 
       · "proof" · : ·   · { · 
         · "document_id" · : ·   · "<string>" · , · 
         · "sha256" · : ·   · "<string>" · , · 
         · "portal_document_id" · : ·   · "<string>" · , · 
         · "portal_document_version_id" · : ·   · "<string>" · 
       · }, · 
       · "performance_proof" · : ·   · "<string>" · , · 
       · "dso_confirmation" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "state" · : ·   · "<string>" · , · 
         · "power_mw" · : ·   · "<string>" · , · 
         · "gradient_mw_per_min" · : ·   · "<string>" · 
       · }, · 
       · "requested_measurement" · : ·   · "<string>" · , · 
       · "requested_measurement_overrides" · : ·   · "<string>" · , · 
       · "confirmed_measurement" · : ·   · "<string>" · , · 
       · "calculated_measurement" · : ·   · "<string>" · , · 
       · "evaluation_status" · : ·   · "<string>" · , · 
       · "evaluation_details" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "comments" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "text" · : ·   · "<string>" · , · 
           · "author_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "is_ebx" · : ·   · false · 
         · } · 
       · ], · 
       · "unresolved_comment_count" · : ·   · 0 · , · 
       · "action_requested_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/pq-submission/request

### Approve the prepared PQ application and request it from the TSO

onboarding.write

The human sign-off of the automated PQ submission. The approval is bound to the snapshot hash of the prepared state shown in the review; a stale hash is rejected with 409. The request run re-verifies the portal against the reviewed snapshot and sends the Request action per prequalification in the background. Poll the status endpoint for progress.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

snapshot\_hash · REQUIRED

string

note

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/request" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"snapshot_hash":"<string>","note":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/request" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "snapshot_hash" · : ·   · "<string>" · , · 
         · "note" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/request" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "snapshot_hash" · : · "<string>" · , · "note" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 202

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "<string>" · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "run_kind" · : ·   · "<string>" · , · 
   · "current_step" · : ·   · "<string>" · , · 
   · "steps" · : ·   · [ · 
     · { · 
       · "step" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "started_at" · : ·   · "<string>" · , · 
       · "finished_at" · : ·   · "<string>" · , · 
       · "error" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "blockers" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "detail" · : ·   · "<string>" · , · 
       · "source" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "profile" · : ·   · { · 
     · "balance_group_responsible_name" · : ·   · "<string>" · , · 
     · "balance_group_eic_x" · : ·   · "<string>" · , · 
     · "contractor_name" · : ·   · "<string>" · , · 
     · "connection_type_control_system_name" · : ·   · "<string>" · , · 
     · "products" · : ·   · [ · 
       · "<string>" · 
     · ], · 
     · "power_caps_mw" · : ·   · "<string>" · 
   · }, · 
   · "technical_unit_id" · : ·   · "<string>" · , · 
   · "reserve_unit_id" · : ·   · "<string>" · , · 
   · "dso_id" · : ·   · "<string>" · , · 
   · "contract_ids" · : ·   · "<string>" · , · 
   · "concept_ids" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "attempt_count" · : ·   · 0 · , · 
   · "triggered_by_user_name" · : ·   · "<string>" · , · 
   · "triggered_at" · : ·   · "<string>" · , · 
   · "review_snapshot" · : ·   · "<string>" · , · 
   · "review_snapshot_hash" · : ·   · "<string>" · , · 
   · "review_inputs_changed" · : ·   · false · , · 
   · "reviewed_by_user_name" · : ·   · "<string>" · , · 
   · "reviewed_at" · : ·   · "<string>" · , · 
   · "review_note" · : ·   · "<string>" · , · 
   · "requested_at" · : ·   · "<string>" · , · 
   · "last_polled_at" · : ·   · "<string>" · , · 
   · "preflight_completed_at" · : ·   · "<string>" · , · 
   · "applications" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "reserve_type" · : ·   · "<string>" · , · 
       · "reserve_direction" · : ·   · "<string>" · , · 
       · "cycle" · : ·   · 0 · , · 
       · "reserve_id" · : ·   · "<string>" · , · 
       · "portal_prequalification_id" · : ·   · "<string>" · , · 
       · "portal_state" · : ·   · "<string>" · , · 
       · "portal_number" · : ·   · "<string>" · , · 
       · "valid_from" · : ·   · "<string>" · , · 
       · "valid_until" · : ·   · "<string>" · , · 
       · "proof" · : ·   · { · 
         · "document_id" · : ·   · "<string>" · , · 
         · "sha256" · : ·   · "<string>" · , · 
         · "portal_document_id" · : ·   · "<string>" · , · 
         · "portal_document_version_id" · : ·   · "<string>" · 
       · }, · 
       · "performance_proof" · : ·   · "<string>" · , · 
       · "dso_confirmation" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "state" · : ·   · "<string>" · , · 
         · "power_mw" · : ·   · "<string>" · , · 
         · "gradient_mw_per_min" · : ·   · "<string>" · 
       · }, · 
       · "requested_measurement" · : ·   · "<string>" · , · 
       · "requested_measurement_overrides" · : ·   · "<string>" · , · 
       · "confirmed_measurement" · : ·   · "<string>" · , · 
       · "calculated_measurement" · : ·   · "<string>" · , · 
       · "evaluation_status" · : ·   · "<string>" · , · 
       · "evaluation_details" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "comments" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "text" · : ·   · "<string>" · , · 
           · "author_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "is_ebx" · : ·   · false · 
         · } · 
       · ], · 
       · "unresolved_comment_count" · : ·   · 0 · , · 
       · "action_requested_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/pq-submission/withdraw

### Withdraw the requested PQ application from the TSO

onboarding.write

Sends the Withdraw action for every requested prequalification; the case must be prepared and reviewed again afterwards.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

note

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/withdraw" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"note":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/withdraw" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "note" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/pq-submission/withdraw" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "note" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "onboarding_id" · : ·   · "<string>" · , · 
   · "status" · : ·   · "<string>" · , · 
   · "portal_env" · : ·   · "<string>" · , · 
   · "run_kind" · : ·   · "<string>" · , · 
   · "current_step" · : ·   · "<string>" · , · 
   · "steps" · : ·   · [ · 
     · { · 
       · "step" · : ·   · "<string>" · , · 
       · "status" · : ·   · "<string>" · , · 
       · "started_at" · : ·   · "<string>" · , · 
       · "finished_at" · : ·   · "<string>" · , · 
       · "error" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "blockers" · : ·   · [ · 
     · { · 
       · "key" · : ·   · "<string>" · , · 
       · "label" · : ·   · "<string>" · , · 
       · "detail" · : ·   · "<string>" · , · 
       · "source" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "profile" · : ·   · { · 
     · "balance_group_responsible_name" · : ·   · "<string>" · , · 
     · "balance_group_eic_x" · : ·   · "<string>" · , · 
     · "contractor_name" · : ·   · "<string>" · , · 
     · "connection_type_control_system_name" · : ·   · "<string>" · , · 
     · "products" · : ·   · [ · 
       · "<string>" · 
     · ], · 
     · "power_caps_mw" · : ·   · "<string>" · 
   · }, · 
   · "technical_unit_id" · : ·   · "<string>" · , · 
   · "reserve_unit_id" · : ·   · "<string>" · , · 
   · "dso_id" · : ·   · "<string>" · , · 
   · "contract_ids" · : ·   · "<string>" · , · 
   · "concept_ids" · : ·   · "<string>" · , · 
   · "last_error" · : ·   · "<string>" · , · 
   · "attempt_count" · : ·   · 0 · , · 
   · "triggered_by_user_name" · : ·   · "<string>" · , · 
   · "triggered_at" · : ·   · "<string>" · , · 
   · "review_snapshot" · : ·   · "<string>" · , · 
   · "review_snapshot_hash" · : ·   · "<string>" · , · 
   · "review_inputs_changed" · : ·   · false · , · 
   · "reviewed_by_user_name" · : ·   · "<string>" · , · 
   · "reviewed_at" · : ·   · "<string>" · , · 
   · "review_note" · : ·   · "<string>" · , · 
   · "requested_at" · : ·   · "<string>" · , · 
   · "last_polled_at" · : ·   · "<string>" · , · 
   · "preflight_completed_at" · : ·   · "<string>" · , · 
   · "applications" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "reserve_type" · : ·   · "<string>" · , · 
       · "reserve_direction" · : ·   · "<string>" · , · 
       · "cycle" · : ·   · 0 · , · 
       · "reserve_id" · : ·   · "<string>" · , · 
       · "portal_prequalification_id" · : ·   · "<string>" · , · 
       · "portal_state" · : ·   · "<string>" · , · 
       · "portal_number" · : ·   · "<string>" · , · 
       · "valid_from" · : ·   · "<string>" · , · 
       · "valid_until" · : ·   · "<string>" · , · 
       · "proof" · : ·   · { · 
         · "document_id" · : ·   · "<string>" · , · 
         · "sha256" · : ·   · "<string>" · , · 
         · "portal_document_id" · : ·   · "<string>" · , · 
         · "portal_document_version_id" · : ·   · "<string>" · 
       · }, · 
       · "performance_proof" · : ·   · "<string>" · , · 
       · "dso_confirmation" · : ·   · { · 
         · "id" · : ·   · "<string>" · , · 
         · "state" · : ·   · "<string>" · , · 
         · "power_mw" · : ·   · "<string>" · , · 
         · "gradient_mw_per_min" · : ·   · "<string>" · 
       · }, · 
       · "requested_measurement" · : ·   · "<string>" · , · 
       · "requested_measurement_overrides" · : ·   · "<string>" · , · 
       · "confirmed_measurement" · : ·   · "<string>" · , · 
       · "calculated_measurement" · : ·   · "<string>" · , · 
       · "evaluation_status" · : ·   · "<string>" · , · 
       · "evaluation_details" · : ·   · [ · 
         · "<string>" · 
       · ], · 
       · "comments" · : ·   · [ · 
         · { · 
           · "id" · : ·   · "<string>" · , · 
           · "text" · : ·   · "<string>" · , · 
           · "author_name" · : ·   · "<string>" · , · 
           · "created_at" · : ·   · "<string>" · , · 
           · "is_ebx" · : ·   · false · 
         · } · 
       · ], · 
       · "unresolved_comment_count" · : ·   · 0 · , · 
       · "action_requested_at" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/rfi

### Update the RfI on behalf of the asset owner

onboarding.write

Persists the RfI gate payload with EBX attribution so operators can fill or correct the form for the asset owner. Per-field change stamps are updated server-side and clarification threads are preserved. If the RFI gate has already passed, the synced asset profile is refreshed.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

rfi · REQUIRED

object

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"rfi":{"m_device":{"shipping_address":{"street":"<string>","postal_code":"<string>","city":"<string>","country":"<string>","attention":"<string>"},"site_contact":{"name":"<string>","email":"name@example.com","phone":"<string>"},"network_config":{"ems_server_ip":"","ebx_box_1_client_ip":"","ebx_box_2_client_ip":""},"planned_hw_installation_date":"<string>","delivery_mode":"loose_components","power_supply":"24v_dc","ethernet_available":false,"antenna_location_outdoors":false,"antenna_extension_cable":"none","notes":"<string>"},"control":{"ems_vendor":"<string>","ems_vendor_other":"<string>","ems_supports_modbus_tcp":false,"pq_submission_targeted":false,"ems_technical_contact":{"name":"<string>","email":"name@example.com","phone":"<string>"},"pq_data":"<string>","pq_documents":"<string>","notes":"<string>"},"field_meta":"<string>"}}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "rfi" · : ·   · { · 
             · "m_device" · : ·   · { · 
                 · "shipping_address" · : ·   · { · 
                     · "street" · : ·   · "<string>" · , · 
                     · "postal_code" · : ·   · "<string>" · , · 
                     · "city" · : ·   · "<string>" · , · 
                     · "country" · : ·   · "<string>" · , · 
                     · "attention" · : ·   · "<string>" · , · 
                 · }, · 
                 · "site_contact" · : ·   · { · 
                     · "name" · : ·   · "<string>" · , · 
                     · "email" · : ·   · "name@example.com" · , · 
                     · "phone" · : ·   · "<string>" · , · 
                 · }, · 
                 · "network_config" · : ·   · { · 
                     · "ems_server_ip" · : ·   · "" · , · 
                     · "ebx_box_1_client_ip" · : ·   · "" · , · 
                     · "ebx_box_2_client_ip" · : ·   · "" · , · 
                 · }, · 
                 · "planned_hw_installation_date" · : ·   · "<string>" · , · 
                 · "delivery_mode" · : ·   · "loose_components" · , · 
                 · "power_supply" · : ·   · "24v_dc" · , · 
                 · "ethernet_available" · : ·   · False · , · 
                 · "antenna_location_outdoors" · : ·   · False · , · 
                 · "antenna_extension_cable" · : ·   · "none" · , · 
                 · "notes" · : ·   · "<string>" · , · 
             · }, · 
             · "control" · : ·   · { · 
                 · "ems_vendor" · : ·   · "<string>" · , · 
                 · "ems_vendor_other" · : ·   · "<string>" · , · 
                 · "ems_supports_modbus_tcp" · : ·   · False · , · 
                 · "pq_submission_targeted" · : ·   · False · , · 
                 · "ems_technical_contact" · : ·   · { · 
                     · "name" · : ·   · "<string>" · , · 
                     · "email" · : ·   · "name@example.com" · , · 
                     · "phone" · : ·   · "<string>" · , · 
                 · }, · 
                 · "pq_data" · : ·   · "<string>" · , · 
                 · "pq_documents" · : ·   · "<string>" · , · 
                 · "notes" · : ·   · "<string>" · , · 
             · }, · 
             · "field_meta" · : ·   · "<string>" · , · 
         · }, · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "rfi" · :{ · "m_device" · :{ · "shipping_address" · :{ · "street" · : · "<string>" · , · "postal_code" · : · "<string>" · , · "city" · : · "<string>" · , · "country" · : · "<string>" · , · "attention" · : · "<string>" · }, · "site_contact" · :{ · "name" · : · "<string>" · , · "email" · : · "name@example.com" · , · "phone" · : · "<string>" · }, · "network_config" · :{ · "ems_server_ip" · : · "" · , · "ebx_box_1_client_ip" · : · "" · , · "ebx_box_2_client_ip" · : · "" · }, · "planned_hw_installation_date" · : · "<string>" · , · "delivery_mode" · : · "loose_components" · , · "power_supply" · : · "24v_dc" · , · "ethernet_available" · : · false · , · "antenna_location_outdoors" · : · false · , · "antenna_extension_cable" · : · "none" · , · "notes" · : · "<string>" · }, · "control" · :{ · "ems_vendor" · : · "<string>" · , · "ems_vendor_other" · : · "<string>" · , · "ems_supports_modbus_tcp" · : · false · , · "pq_submission_targeted" · : · false · , · "ems_technical_contact" · :{ · "name" · : · "<string>" · , · "email" · : · "name@example.com" · , · "phone" · : · "<string>" · }, · "pq_data" · : · "<string>" · , · "pq_documents" · : · "<string>" · , · "notes" · : · "<string>" · }, · "field_meta" · : · "<string>" · }} · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· POST · /v1/onboardings/{onboarding\_id}/rfi/fields/{field\_key}/comments

### Comment on an RfI field

onboarding.write

Adds a clarification comment to an RfI field on the RFI gate, opens the field discussion thread, and records onboarding activity.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

field\_key · REQUIRED

string · RfI field key from the RFI gate field\_meta payload, for example `m_device.shipping_address`.

Request body · required

body · REQUIRED

string

Example value

cURL:

```bash
curl ·   · -X ·  POST  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/comments" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"body":"<string>"}'
```

Python:

```python
import ·  httpx

r = httpx.post(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/comments" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "body" · : ·   · "<string>" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/comments" · , ·   · { · 
   · method · : ·   · "POST" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "body" · : · "<string>" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "open" · , · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "author_user_name" · : ·   · "<string>" · , · 
       · "author_org_name" · : ·   · "<string>" · , · 
       · "author_side" · : ·   · "ebx" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "body" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "last_comment_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/rfi/fields/{field\_key}/thread

### Update an RfI field discussion status

onboarding.write

Opens or resolves the clarification thread for an RfI field without changing the field values.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

field\_key · REQUIRED

string · RfI field key from the RFI gate field\_meta payload, for example `m_device.shipping_address`.

Request body · required

status · REQUIRED

enum · `open` · `resolved`

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/thread" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"status":"open"}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/thread" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "status" · : ·   · "open" · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/rfi/fields/m_device.shipping_address/thread" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "status" · : · "open" · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "status" · : ·   · "open" · , · 
   · "comments" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "author_user_name" · : ·   · "<string>" · , · 
       · "author_org_name" · : ·   · "<string>" · , · 
       · "author_side" · : ·   · "ebx" · , · 
       · "created_at" · : ·   · "<string>" · , · 
       · "body" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "last_comment_at" · : ·   · "<string>" · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· PATCH · /v1/onboardings/{onboarding\_id}/whitelabel

### Enable or disable whitelabel branding

onboarding.write

Toggles whether the external onboarding surface (magic-link views and emails) carries the asset owner org's branding instead of EBX's. Enabling requires branding to be configured for the owner org.

Path parameters

onboarding\_id · REQUIRED

string<uuid> · Stable onboarding identifier returned by create and list operations.

Request body · required

whitelabel · REQUIRED

boolean

Example value

cURL:

```bash
curl ·   · -X ·  PATCH  · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/whitelabel" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN" ·  \
   · -H ·   · "Content-Type: application/json" ·  \
   · -d ·   · '{"whitelabel":false}'
```

Python:

```python
import ·  httpx

r = httpx.patch(
     · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/whitelabel" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
    json= · { · 
         · "whitelabel" · : ·   · False · , · 
     · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/00000000-0000-0000-0000-000000000000/whitelabel" · , ·   · { · 
   · method · : ·   · "PATCH" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
     · "Content-Type" · : ·   · "application/json" · , · 
   · }, · 
   · body · : ·  JSON.stringify( · { · "whitelabel" · : · false · } · ) · , · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "<string>" · , · 
   · "asset_id" · : ·   · "<string>" · , · 
   · "asset_name" · : ·   · "<string>" · , · 
   · "location" · : ·   · "<string>" · , · 
   · "country" · : ·   · "<string>" · , · 
   · "tso" · : ·   · "<string>" · , · 
   · "integration_type" · : ·   · "monitoring_only" · , · 
   · "target_hc_date" · : ·   · "2026-01-01" · , · 
   · "current_gate_definition_id" · : ·   · "mon_rfi" · , · 
   · "overall_status" · : ·   · "in_progress" · , · 
   · "asset_owner_org_id" · : ·   · "<string>" · , · 
   · "asset_owner_org_name" · : ·   · "<string>" · , · 
   · "whitelabel" · : ·   · false · , · 
   · "process_definition" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "integration_type" · : ·   · "monitoring_only" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "source_label" · : ·   · "<string>" · , · 
     · "gate_sequence" · : ·   · [ · 
       · "mon_rfi" · 
     · ], · 
     · "gate_definitions" · : ·   · "<string>" · , · 
     · "process_document_slots" · : ·   · [ · 
       · { · 
         · "document_type" · : ·   · "installation_photo_mdevice" · , · 
         · "label" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "required" · : ·   · false · , · 
         · "allow_multiple" · : ·   · false · 
       · } · 
     · ], · 
     · "asset_profile_sync_gate_id" · : ·   · "mon_rfi" · , · 
     · "schema_version" · : ·   · 0 · 
   · }, · 
   · "gate_definitions" · : ·   · "<string>" · , · 
   · "asset_profile" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "onboarding_id" · : ·   · "<string>" · , · 
     · "asset_id" · : ·   · "<string>" · , · 
     · "asset_name" · : ·   · "<string>" · , · 
     · "location" · : ·   · "<string>" · , · 
     · "country" · : ·   · "<string>" · , · 
     · "asset_owner_org_id" · : ·   · "<string>" · , · 
     · "asset_owner_org_name" · : ·   · "<string>" · , · 
     · "shipping_address" · : ·   · { · 
       · "street" · : ·   · "<string>" · , · 
       · "postal_code" · : ·   · "<string>" · , · 
       · "city" · : ·   · "<string>" · , · 
       · "country" · : ·   · "<string>" · , · 
       · "attention" · : ·   · "<string>" · 
     · }, · 
     · "site_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "power_supply" · : ·   · "24v_dc" · , · 
     · "ethernet_available" · : ·   · false · , · 
     · "antenna_location_outdoors" · : ·   · false · , · 
     · "ems_vendor" · : ·   · "<string>" · , · 
     · "ems_vendor_other" · : ·   · "<string>" · , · 
     · "ems_supports_modbus_tcp" · : ·   · false · , · 
     · "pq_submission_targeted" · : ·   · false · , · 
     · "ems_technical_contact" · : ·   · { · 
       · "name" · : ·   · "<string>" · , · 
       · "email" · : ·   · "name@example.com" · , · 
       · "phone" · : ·   · "<string>" · 
     · }, · 
     · "source_gate_definition_id" · : ·   · "mon_rfi" · , · 
     · "source_gate_passed_at" · : ·   · "<string>" · , · 
     · "source_gate_updated_at" · : ·   · "<string>" · , · 
     · "synced_at" · : ·   · "<string>" · , · 
     · "sync_reason" · : ·   · "<string>" · 
   · }, · 
   · "asset_owner_contact" · : ·   · { · 
     · "id" · : ·   · "<string>" · , · 
     · "contact_name" · : ·   · "<string>" · , · 
     · "contact_email" · : ·   · "<string>" · , · 
     · "access" · : ·   · { · 
       · "status" · : ·   · "<string>" · 
     · } · 
   · }, · 
   · "asset_owner_contacts" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "partners" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "role" · : ·   · "epc" · , · 
       · "org_name" · : ·   · "<string>" · , · 
       · "contact_name" · : ·   · "<string>" · , · 
       · "contact_email" · : ·   · "<string>" · , · 
       · "access" · : ·   · { · 
         · "status" · : ·   · "<string>" · 
       · } · 
     · } · 
   · ], · 
   · "created_at" · : ·   · "<string>" · , · 
   · "updated_at" · : ·   · "<string>" · , · 
   · "gates" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "definition_id" · : ·   · "mon_rfi" · , · 
       · "status" · : ·   · "pending" · , · 
       · "deadline" · : ·   · "2026-01-01" · , · 
       · "last_note" · : ·   · "<string>" · , · 
       · "passed_at" · : ·   · "<string>" · , · 
       · "passed_by_user_name" · : ·   · "<string>" · , · 
       · "structured_data" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "documents" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "document_type" · : ·   · "installation_photo_mdevice" · , · 
       · "filename" · : ·   · "<string>" · , · 
       · "size_bytes" · : ·   · 0 · , · 
       · "content_type" · : ·   · "<string>" · , · 
       · "uploaded_at" · : ·   · "<string>" · , · 
       · "uploaded_by_user_name" · : ·   · "<string>" · , · 
       · "version" · : ·   · 0 · 
     · } · 
   · ], · 
   · "activity" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "onboarding_id" · : ·   · "<string>" · , · 
       · "gate_definition_id" · : ·   · "mon_rfi" · , · 
       · "actor_user_name" · : ·   · "<string>" · , · 
       · "actor_org_name" · : ·   · "<string>" · , · 
       · "event_type" · : ·   · "onboarding_created" · , · 
       · "note" · : ·   · "<string>" · , · 
       · "created_at" · : ·   · "<string>" · 
     · } · 
   · ], · 
   · "internal_tracker" · : ·   · { · 
     · "tasks" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "description" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "category" · : ·   · "<string>" · , · 
         · "template_key" · : ·   · "<string>" · , · 
         · "due_date" · : ·   · "<string>" · , · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "completed_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "open_points" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "title" · : ·   · "<string>" · , · 
         · "status" · : ·   · "open" · , · 
         · "ref" · : ·   · { · 
           · "kind" · : ·   · "<string>" · , · 
           · "gate_definition_id" · : ·   · "mon_rfi" · 
         · }, · 
         · "comments" · : ·   · [ · 
           · { · 
             · "id" · : ·   · "<string>" · , · 
             · "author_user_name" · : ·   · "<string>" · , · 
             · "author_org_name" · : ·   · "<string>" · , · 
             · "author_side" · : ·   · "ebx" · , · 
             · "created_at" · : ·   · "<string>" · , · 
             · "body" · : ·   · "<string>" · 
           · } · 
         · ], · 
         · "created_by_user_name" · : ·   · "<string>" · , · 
         · "created_at" · : ·   · "<string>" · , · 
         · "updated_at" · : ·   · "<string>" · , · 
         · "resolved_at" · : ·   · "<string>" · 
       · } · 
     · ], · 
     · "applied_templates" · : ·   · [ · 
       · "<string>" · 
     · ] · 
   · } · 
 · }
```

Can raise

-   400 · malformed request
-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   409 · state conflict
-   422 · validation failed
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/standards/dpl

### List standard DPL templates

onboarding.read

Returns the EBX-maintained standard Data Point List templates available for onboarding. Use these templates to initialize or compare the software-gate DPL for monitoring-only and full-control integrations.

This endpoint takes no parameters.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/standards/dpl" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/standards/dpl" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/standards/dpl" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
[ · 
   · { · 
     · "id" · : ·   · "ebx_monitor" · , · 
     · "label" · : ·   · "<string>" · , · 
     · "version" · : ·   · "<string>" · , · 
     · "published_at" · : ·   · "<string>" · , · 
     · "notes" · : ·   · "<string>" · , · 
     · "datapoints" · : ·   · [ · 
       · { · 
         · "id" · : ·   · "<string>" · , · 
         · "name" · : ·   · "<string>" · , · 
         · "unit" · : ·   · "<string>" · , · 
         · "data_type" · : ·   · "float" · , · 
         · "direction" · : ·   · "control" · , · 
         · "register" · : ·   · 0 · , · 
         · "register_type" · : ·   · "holding" · , · 
         · "short_description" · : ·   · "<string>" · , · 
         · "long_description_en" · : ·   · "<string>" · , · 
         · "long_description_de" · : ·   · "<string>" · 
       · } · 
     · ] · 
   · } · 
 · ]
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/onboardings/standards/dpl/{standard\_id}

### Get a standard DPL template

onboarding.read

Returns one EBX standard DPL template. The response includes the expected datapoints, Modbus register metadata, direction, data type, and customer-facing descriptions used to prepare the EMS implementation.

Path parameters

standard\_id · REQUIRED

string · Standard DPL identifier, for example `ebx_monitor` or `ebx_control`.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/onboardings/standards/dpl/ebx_monitor" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/onboardings/standards/dpl/ebx_monitor" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/onboardings/standards/dpl/ebx_monitor" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{ · 
   · "id" · : ·   · "ebx_monitor" · , · 
   · "label" · : ·   · "<string>" · , · 
   · "version" · : ·   · "<string>" · , · 
   · "published_at" · : ·   · "<string>" · , · 
   · "notes" · : ·   · "<string>" · , · 
   · "datapoints" · : ·   · [ · 
     · { · 
       · "id" · : ·   · "<string>" · , · 
       · "name" · : ·   · "<string>" · , · 
       · "unit" · : ·   · "<string>" · , · 
       · "data_type" · : ·   · "float" · , · 
       · "direction" · : ·   · "control" · , · 
       · "register" · : ·   · 0 · , · 
       · "register_type" · : ·   · "holding" · , · 
       · "short_description" · : ·   · "<string>" · , · 
       · "long_description_en" · : ·   · "<string>" · , · 
       · "long_description_de" · : ·   · "<string>" · 
     · } · 
   · ] · 
 · }
```

Can raise

-   401 · no valid token
-   403 · scope missing
-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/public/onboarding-branding/{organization\_id}/email-banner

### Get a whitelabel onboarding email banner

Serves the organization's uploaded email banner for onboarding emails and previews.

Path parameters

organization\_id · REQUIRED

string · Organization identifier the branding belongs to.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/public/onboarding-branding/your-org/email-banner" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/public/onboarding-branding/your-org/email-banner" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/public/onboarding-branding/your-org/email-banner" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{}
```

Can raise

-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)

· GET · /v1/public/onboarding-branding/{organization\_id}/logo

### Get a whitelabel onboarding logo

Serves the organization's uploaded whitelabel logo for external onboarding views and emails.

Path parameters

organization\_id · REQUIRED

string · Organization identifier the branding belongs to.

Example value

cURL:

```bash
curl ·   · "https://api.ebx.energy/v1/public/onboarding-branding/your-org/logo" ·  \
   · -H ·   · "Authorization: Bearer $EBX_TOKEN"
```

Python:

```python
import ·  httpx

r = httpx.get(
     · "https://api.ebx.energy/v1/public/onboarding-branding/your-org/logo" · , · 
    headers= · { · "Authorization" · : ·  f · "Bearer {token}" · }, · 
)
print(r.json())
```

TypeScript:

```typescript
const ·  res =  · await ·  fetch( · "https://api.ebx.energy/v1/public/onboarding-branding/your-org/logo" · , ·   · { · 
   · method · : ·   · "GET" · , · 
   · headers · : ·   · { · 
    Authorization · : ·   · `Bearer ${token}` · , · 
   · }, · 
 · } · );
 · const ·  data =  · await ·  res.json();
```

Example response · 200

```json
{}
```

Can raise

-   404 · unknown or not visible
-   429 · rate limited

[ALL CODES →](https://docs.ebx.energy/reference/errors.md)
