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

# SDK Methods

### Recreate Resource

The `RecreateResource` provides document recreation capabilities through `client.enterprise_api.recreate`. It handles document processing workflows including creation, status monitoring, and resource management.

| Method              | HTTP Endpoint                                                      | Description                                                  | Content Type          |
| :------------------ | :----------------------------------------------------------------- | :----------------------------------------------------------- | :-------------------- |
| `create()`          | `POST /enterprise-api/recreate/`                                   | Initiates document recreation process                        | `multipart/form-data` |
| `retrieve_status()` | `GET /enterprise-api/recreate/status/`                             | Fetches recreation operation status                          | `application/json`    |
| `hide()`            | `POST /enterprise-api/recreate/hide/`                              | Manages resource visibility                                  | `application/json`    |
| `get_dfs()`         | `GET /enterprise-api/recreate/{recreate_id}/to_json/` (abstracted) | Returns a recreate's underlying data as a list of dataframes | `application/json`    |

### `recreate.create`

Creates a new recreation job and returns a `recreate_id` and status.

| Parameter                       | Type               | Default   | Description                                                                |
| :------------------------------ | :----------------- | :-------- | :------------------------------------------------------------------------- |
| `file`                          | Bytes or file-like | `None`    | Input document file                                                        |
| `selected_pages`                | `str`              | `None`    | Page selection specification (e.g., `1-5`, `1-5,7-9,10-12`, `1,2,3,4,5,6`) |
| `is_ppt_process_enabled`        | `str`              | `false`   | PowerPoint processing toggle                                               |
| `is_xls_process_charts_enabled` | `str`              | `false`   | Excel chart processing toggle                                              |
| `is_xls_process_tables_enabled` | `str`              | `"false"` | Excel table processing toggle                                              |
| `selected_table_format`         | `str`              | `None`    | Table output format ID (see `list_formats`)                                |

```python theme={null}
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '418099ce-6748-4b97-a92e-3fa1c9bd89cb', 'status': 'CREATED'})
```

### `recreate.retrieve_status`

Requires a `recreate_id` and returns its status plus download links if available.

```python theme={null}
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'CREATED'})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'RECEIVED', 'xls_download_url': None, 'ppt_download_url': None, 'jobs': [...]})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'EXTRACTING', 'xls_download_url': None, 'ppt_download_url': None, 'jobs': [...]})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'PROCESSING', 'xls_download_url': None, 'ppt_download_url': None, 'jobs': [...]})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'COMPLETED', 'xls_download_url': 'https://storage.googleapis.com/...test-pdf.xlsx?...', 'ppt_download_url': 'https://storage.googleapis.com/...test-pdf.pptx?...', 'jobs': [...]})
```

When a job completes, the download URLs are populated with non-null values:

```python theme={null}
data={
  'recreate_id': 'cf9b1754-8dd6-4ef1-a3b4-9615411f1363',
  'status': 'COMPLETED',
  'xls_download_url': 'https://storage.googleapis.com/...authenticated_url...',
  'ppt_download_url': 'https://storage.googleapis.com/...authenticated_url...',
  ...
}
```

### `recreate.get_dfs`

Requires a `recreate_id` and returns the recreate's data as a list of pandas DataFrames.

```python theme={null}
from recreate_sdk import RecreateSDK

client = RecreateSDK(
    api_key="<YOUR_API_KEY>",
    base_url="<API_URL>",
)

def main():
    recreate_id = "<RECREATE_ID>"
    dfs = client.enterprise_api.recreate.get_dfs(recreate_id=recreate_id)
    for i, df in enumerate(dfs):
        print(f"DataFrame {i}:")
        print(f"Shape: {df.shape}")
        print(f"Columns: {list(df.columns)}")
        print(f"Is empty: {df.empty}")
        if not df.empty:
            print(df.head())
        else:
            print("DataFrame is empty - no rows")
        print("-" * 40)

if __name__ == "__main__":
    main()
```

Inspect the returned DataFrames as usual:

```python theme={null}
DataFrame 0:
Shape: (20, 5)
Columns: ['row_identifier', 'Item', 'Three months ended-September 30, 2024', 'Three months ended-June 30, 2024', 'Three months ended-September 30, 2023']
Is empty: False
             row_identifier                      Item  ... Three months ended-June 30, 2024 Three months ended-September 30, 2023
0                   Revenue                   Revenue  ...                            3,807                                 3,357
1           Cost of revenue           Cost of revenue  ...                            2,695                                 2,472
2              Gross profit              Gross profit  ...                            1,112                                   885
3  Research and development  Research and development  ...                              379                                   369
4       Sales and marketing       Sales and marketing  ...                              343                                   355

[5 rows x 5 columns]
```

### Enterprise API Resource

The `EnterpriseAPIResource` class is the primary interface for enterprise operations. It exposes format listing, PDF unprotection, and token validation functionality.

| Method             | HTTP Endpoint                         | Description                                        | Return Type                          |
| :----------------- | :------------------------------------ | :------------------------------------------------- | :----------------------------------- |
| `list_formats()`   | `GET /enterprise-api/formats/`        | Retrieves available format configuration templates | `EnterpriseAPIResponse`              |
| `unprotect_pdf()`  | `POST /enterprise-api/unprotect-pdf/` | Removes password protection from PDF files         | `object`                             |
| `validate_token()` | `POST /enterprise-api/validate-token` | Validates JWT authentication tokens                | `EnterpriseAPIValidateTokenResponse` |

### `list_formats`

Returns configuration templates for formatting output files.

```json theme={null}
{
  "status": "SUCCESS",
  "data": {
    "configurations": [
      {
        "id": "468977cb-1fe6-431a-9880-c7b035b72842",
        "template_name": "YOUR_FIRM",
        "created_at": "2025-07-30T17:29:54.365476Z",
        "updated_at": "2025-07-30T17:29:54.365476Z",
        "config": {
          "template_name": "YOUR_FIRM",
          "header_config": {
            "font_family": "Arial",
            "font_color_hex": "#FFFFFF",
            "font_size": 11.0,
            "fill_color_hex": "#093a5b",
            "bolded": true,
            "italicized": false,
            "underlined": false,
            "decimal_precision": 0,
            "horizontal_alignment": "left",
            "vertical_alignment": null,
            "border_style": "thin",
            "border_top": false,
            "border_right": false,
            "border_bottom": false,
            "border_left": false
          },
          "row_config": {
            "font_family": "Arial",
            "font_size": 10.0,
            "font_color_hex": "#000000",
            "fill_color_hex": "#FFFFFF",
            "bolded": false,
            "italicized": false,
            "underlined": false,
            "decimal_precision": 0,
            "horizontal_alignment": "right",
            "vertical_alignment": null,
            "border_style": "none",
            "border_top": false,
            "border_right": false,
            "border_bottom": false,
            "border_left": false,
            "zoom": 100,
            "row_height": 20
          },
          "total_config": {
            "font_family": "Arial",
            "font_color_hex": "#000000",
            "font_size": 11.0,
            "fill_color_hex": "#ddebf7",
            "bolded": true,
            "italicized": false,
            "underlined": false,
            "decimal_precision": 0,
            "horizontal_alignment": "left",
            "vertical_alignment": null,
            "border_style": "thin",
            "border_top": true,
            "border_right": false,
            "border_bottom": false,
            "border_left": false
          }
        },
        "chart_config": {
          "bar_series_overlap": 0,
          "bar_gap_width": 70,
          "line_series_width": 2.0,
          "pie_chart_style": "doughnut",
          "donut_hole_size": 40,
          "colors": [
            "#093a5b",
            "#808080",
            "#005454",
            "#432752",
            "#bb8110",
            "#803d02"
          ],
          "font_family": "Arial",
          "font_color_hex": "#000000",
          "font_size": 10,
          "quick_sizing_config": null,
          "column_bar_group_config": null,
          "line_group_config": null,
          "combo_group_config": null,
          "area_group_config": null,
          "pie_donut_group_config": null
        }
      }
    ]
  }
}
```

### `unprotect_pdf`

Removes password protection from PDF files. Requires `file` and `password` parameters.

```python theme={null}
# Unprotect a password-protected PDF
with open("protected.pdf", "rb") as file:
    response = client.enterprise_api.unprotect_pdf(
        file=file,
        password="your_password"
    )
```

### `validate_token`

Validates JWT authentication tokens. Requires a `token` parameter.

```python theme={null}
# Validate authentication token
response = client.enterprise_api.validate_token(token="your_jwt_token")
```
