priv/docs/ip_address_management_prefixes.md

# IP Address Management Prefixes

## Upload LOA Document

**POST** `/accounts/{account_id}/addressing/loa_documents`

Submit LOA document (pdf format) under the account.

### Responses

#### 201 Upload LOA Document response

> Data is at `body["result"]`

```json
{
  "account_id": "*string*",
  "auto_generated": "*boolean*",
  "created": "*string*",
  "filename": "*string*",
  "id": "*string*",
  "size_bytes": "*integer*",
  "verified": "*boolean*",
  "verified_at": "*string*"
}
```

#### 4XX Upload LOA Document response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Download LOA Document

**GET** `/accounts/{account_id}/addressing/loa_documents/{loa_document_id}/download`

Download specified LOA document under the account.

### Responses

#### 200 Download LOA Document response

> Data is at `body["result"]`

```json

```

#### 4XX Download LOA Document response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Add Prefix

**POST** `/accounts/{account_id}/addressing/prefixes`

Add a new prefix under the account.

### Responses

#### 201 Add Prefix response

> Data is at `body["result"]`

```json
{
  "account_id": "*string*",
  "advertised": "*boolean*",
  "advertised_modified_at": "*string*",
  "approved": "*string*",
  "asn": "*integer*",
  "cidr": "*string*",
  "created_at": "*string*",
  "delegate_loa_creation": "*boolean*",
  "description": "*string*",
  "id": "*string*",
  "irr_validation_state": "*string*",
  "loa_document_id": "*string*",
  "modified_at": "*string*",
  "on_demand_enabled": "*boolean*",
  "on_demand_locked": "*boolean*",
  "ownership_validation_state": "*string*",
  "ownership_validation_token": "*string*",
  "rpki_validation_state": "*string*"
}
```

#### 4XX Add Prefix response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## List Prefixes

**GET** `/accounts/{account_id}/addressing/prefixes`

List all prefixes owned by the account.

### Responses

#### 200 List Prefixes response

> Data is at `body["result"]`

```json
[
  {
    "account_id": "*string*",
    "advertised": "*boolean*",
    "advertised_modified_at": "*string*",
    "approved": "*string*",
    "asn": "*integer*",
    "cidr": "*string*",
    "created_at": "*string*",
    "delegate_loa_creation": "*boolean*",
    "description": "*string*",
    "id": "*string*",
    "irr_validation_state": "*string*",
    "loa_document_id": "*string*",
    "modified_at": "*string*",
    "on_demand_enabled": "*boolean*",
    "on_demand_locked": "*boolean*",
    "ownership_validation_state": "*string*",
    "ownership_validation_token": "*string*",
    "rpki_validation_state": "*string*"
  }
]
```

#### 4XX List Prefixes response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Update Prefix Description

**PATCH** `/accounts/{account_id}/addressing/prefixes/{prefix_id}`

Modify the description for a prefix owned by the account.

### Responses

#### 200 Update Prefix Description response

> Data is at `body["result"]`

```json
{
  "account_id": "*string*",
  "advertised": "*boolean*",
  "advertised_modified_at": "*string*",
  "approved": "*string*",
  "asn": "*integer*",
  "cidr": "*string*",
  "created_at": "*string*",
  "delegate_loa_creation": "*boolean*",
  "description": "*string*",
  "id": "*string*",
  "irr_validation_state": "*string*",
  "loa_document_id": "*string*",
  "modified_at": "*string*",
  "on_demand_enabled": "*boolean*",
  "on_demand_locked": "*boolean*",
  "ownership_validation_state": "*string*",
  "ownership_validation_token": "*string*",
  "rpki_validation_state": "*string*"
}
```

#### 4XX Update Prefix Description response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Prefix Details

**GET** `/accounts/{account_id}/addressing/prefixes/{prefix_id}`

List a particular prefix owned by the account.

### Responses

#### 200 Prefix Details response

> Data is at `body["result"]`

```json
{
  "account_id": "*string*",
  "advertised": "*boolean*",
  "advertised_modified_at": "*string*",
  "approved": "*string*",
  "asn": "*integer*",
  "cidr": "*string*",
  "created_at": "*string*",
  "delegate_loa_creation": "*boolean*",
  "description": "*string*",
  "id": "*string*",
  "irr_validation_state": "*string*",
  "loa_document_id": "*string*",
  "modified_at": "*string*",
  "on_demand_enabled": "*boolean*",
  "on_demand_locked": "*boolean*",
  "ownership_validation_state": "*string*",
  "ownership_validation_token": "*string*",
  "rpki_validation_state": "*string*"
}
```

#### 4XX Prefix Details response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Delete Prefix

**DELETE** `/accounts/{account_id}/addressing/prefixes/{prefix_id}`

Delete an unapproved prefix owned by the account.

### Responses

#### 200 Delete Prefix response

> Data is at `body["result"]`

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "success": "*boolean*"
}
```

#### 4XX Delete Prefix response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "result_info": {
    "count": "*number*",
    "page": "*number*",
    "per_page": "*number*",
    "total_count": "*number*"
  },
  "success": "*boolean*"
}
```



## Validate Prefix

**POST** `/accounts/{account_id}/addressing/prefixes/{prefix_id}/validate`

Triggers a new prefix validation. The checks are run asynchronously and include IRR, RPKI, and prefix ownership.

### Responses

#### 202 Validate Prefix response

> Data is at `body["result"]`

```json
{
  "account_id": "*string*",
  "advertised": "*boolean*",
  "advertised_modified_at": "*string*",
  "approved": "*string*",
  "asn": "*integer*",
  "cidr": "*string*",
  "created_at": "*string*",
  "delegate_loa_creation": "*boolean*",
  "description": "*string*",
  "id": "*string*",
  "irr_validation_state": "*string*",
  "loa_document_id": "*string*",
  "modified_at": "*string*",
  "on_demand_enabled": "*boolean*",
  "on_demand_locked": "*boolean*",
  "ownership_validation_state": "*string*",
  "ownership_validation_token": "*string*",
  "rpki_validation_state": "*string*"
}
```

#### 4XX Validate Prefix response failure

```json
{
  "errors": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "documentation_url": "*string*",
      "message": "*string*",
      "source": {
        "pointer": "*string*"
      }
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```