# Credentials

## Create Credential

`credentials.create(CredentialCreateParams**kwargs)  -> Credential`

**post** `/v5/credentials`

Create a new credential for storing sensitive data like API keys, tokens, or other secrets.

### Parameters

- `name: str`

  User-friendly name for the credential

- `payload: str`

  The credential payload to be encrypted

- `type: str`

  Type of credential: key or json

- `credential_metadata: Optional[Dict[str, object]]`

  Optional unencrypted credential_metadata

- `description: Optional[str]`

  Optional description

### Returns

- `class Credential: …`

  - `id: str`

  - `created_at: datetime`

  - `created_by_identity_type: Optional[str]`

  - `created_by_user_id: Optional[str]`

  - `credential_metadata: Optional[Dict[str, object]]`

  - `description: Optional[str]`

  - `name: str`

  - `type: str`

  - `updated_at: datetime`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
credential = client.credentials.create(
    name="x",
    payload="x",
    type="x",
)
print(credential.id)
```

#### Response

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by_identity_type": "created_by_identity_type",
  "created_by_user_id": "created_by_user_id",
  "credential_metadata": {
    "foo": "bar"
  },
  "description": "description",
  "name": "name",
  "type": "type",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "object": "object"
}
```

## Get Credential by ID

`credentials.retrieve(strcredential_id)  -> Credential`

**get** `/v5/credentials/{credential_id}`

Retrieve a specific credential by its unique identifier.

### Parameters

- `credential_id: str`

### Returns

- `class Credential: …`

  - `id: str`

  - `created_at: datetime`

  - `created_by_identity_type: Optional[str]`

  - `created_by_user_id: Optional[str]`

  - `credential_metadata: Optional[Dict[str, object]]`

  - `description: Optional[str]`

  - `name: str`

  - `type: str`

  - `updated_at: datetime`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
credential = client.credentials.retrieve(
    "credential_id",
)
print(credential.id)
```

#### Response

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by_identity_type": "created_by_identity_type",
  "created_by_user_id": "created_by_user_id",
  "credential_metadata": {
    "foo": "bar"
  },
  "description": "description",
  "name": "name",
  "type": "type",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "object": "object"
}
```

## Get Credential by Name

`credentials.retrieve_by_name(strcredential_name)  -> Credential`

**get** `/v5/credentials/name/{credential_name}`

Retrieve a specific credential by its name.

### Parameters

- `credential_name: str`

### Returns

- `class Credential: …`

  - `id: str`

  - `created_at: datetime`

  - `created_by_identity_type: Optional[str]`

  - `created_by_user_id: Optional[str]`

  - `credential_metadata: Optional[Dict[str, object]]`

  - `description: Optional[str]`

  - `name: str`

  - `type: str`

  - `updated_at: datetime`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
credential = client.credentials.retrieve_by_name(
    "credential_name",
)
print(credential.id)
```

#### Response

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by_identity_type": "created_by_identity_type",
  "created_by_user_id": "created_by_user_id",
  "credential_metadata": {
    "foo": "bar"
  },
  "description": "description",
  "name": "name",
  "type": "type",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "object": "object"
}
```

## Get Credential Secret by ID

`credentials.decrypt(strcredential_id)  -> CredentialSecret`

**post** `/v5/credentials/{credential_id}/secret`

Retrieve the plaintext payload of a credential by its ID.

### Parameters

- `credential_id: str`

### Returns

- `class CredentialSecret: …`

  - `result: str`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
credential_secret = client.credentials.decrypt(
    "credential_id",
)
print(credential_secret.result)
```

#### Response

```json
{
  "result": "result",
  "object": "object"
}
```

## Get Credential Secret by Name

`credentials.decrypt_by_name(strcredential_name)  -> CredentialSecret`

**post** `/v5/credentials/name/{credential_name}/secret`

Retrieve the plaintext payload of a credential by its name.

### Parameters

- `credential_name: str`

### Returns

- `class CredentialSecret: …`

  - `result: str`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
credential_secret = client.credentials.decrypt_by_name(
    "credential_name",
)
print(credential_secret.result)
```

#### Response

```json
{
  "result": "result",
  "object": "object"
}
```

## List Credentials

`credentials.list(CredentialListParams**kwargs)  -> SyncCursorPage[Credential]`

**get** `/v5/credentials`

Retrieve a paginated list of all credentials for the current account with optional name filtering.

### Parameters

- `ending_before: Optional[str]`

- `limit: Optional[int]`

- `name: Optional[str]`

  Filter credentials by name

- `sort_by: Optional[str]`

- `sort_order: Optional[SortOrder]`

  - `"asc"`

  - `"desc"`

- `starting_after: Optional[str]`

### Returns

- `class Credential: …`

  - `id: str`

  - `created_at: datetime`

  - `created_by_identity_type: Optional[str]`

  - `created_by_user_id: Optional[str]`

  - `credential_metadata: Optional[Dict[str, object]]`

  - `description: Optional[str]`

  - `name: str`

  - `type: str`

  - `updated_at: datetime`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
page = client.credentials.list()
page = page.items[0]
print(page.id)
```

#### Response

```json
{
  "has_more": true,
  "items": [
    {
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by_identity_type": "created_by_identity_type",
      "created_by_user_id": "created_by_user_id",
      "credential_metadata": {
        "foo": "bar"
      },
      "description": "description",
      "name": "name",
      "type": "type",
      "updated_at": "2019-12-27T18:11:19.117Z",
      "object": "object"
    }
  ],
  "total": 0,
  "limit": 0,
  "object": "list"
}
```

## Update Credential

`credentials.update(strcredential_id, CredentialUpdateParams**kwargs)  -> Credential`

**patch** `/v5/credentials/{credential_id}`

Update an existing credential's properties including name, description, type, payload, and metadata.

### Parameters

- `credential_id: str`

- `credential_metadata: Optional[Dict[str, object]]`

  Optional unencrypted credential_metadata

- `description: Optional[str]`

  Optional description

- `name: Optional[str]`

  User-friendly name for the credential

- `payload: Optional[str]`

  The credential payload to be encrypted

- `type: Optional[str]`

  Type of credential: key or json

### Returns

- `class Credential: …`

  - `id: str`

  - `created_at: datetime`

  - `created_by_identity_type: Optional[str]`

  - `created_by_user_id: Optional[str]`

  - `credential_metadata: Optional[Dict[str, object]]`

  - `description: Optional[str]`

  - `name: str`

  - `type: str`

  - `updated_at: datetime`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
credential = client.credentials.update(
    credential_id="credential_id",
)
print(credential.id)
```

#### Response

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by_identity_type": "created_by_identity_type",
  "created_by_user_id": "created_by_user_id",
  "credential_metadata": {
    "foo": "bar"
  },
  "description": "description",
  "name": "name",
  "type": "type",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "object": "object"
}
```

## Delete Credential

`credentials.delete(strcredential_id)  -> CredentialDeleteResponse`

**delete** `/v5/credentials/{credential_id}`

Permanently delete a credential and all its associated data.

### Parameters

- `credential_id: str`

### Returns

- `class CredentialDeleteResponse: …`

  - `id: str`

  - `deleted: bool`

  - `object: Optional[str]`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
credential = client.credentials.delete(
    "credential_id",
)
print(credential.id)
```

#### Response

```json
{
  "id": "id",
  "deleted": true,
  "object": "object"
}
```

## Domain Types

### Credential

- `class Credential: …`

  - `id: str`

  - `created_at: datetime`

  - `created_by_identity_type: Optional[str]`

  - `created_by_user_id: Optional[str]`

  - `credential_metadata: Optional[Dict[str, object]]`

  - `description: Optional[str]`

  - `name: str`

  - `type: str`

  - `updated_at: datetime`

  - `object: Optional[str]`

### Credential Secret

- `class CredentialSecret: …`

  - `result: str`

  - `object: Optional[str]`

### Credential Delete Response

- `class CredentialDeleteResponse: …`

  - `id: str`

  - `deleted: bool`

  - `object: Optional[str]`
