## Create Secret

`client.Secrets.New(ctx, body) (*CloudSecret, error)`

**post** `/v5/sgp/secrets`

Create an account-level secret.

The secret value is stored in the cloud provider's secret store.
SGP only stores metadata (key name, description, audit info).
The value is never returned by any API.
Returns 409 if a secret with the same key already exists.

### Parameters

- `body SecretNewParams`

  - `Key param.Field[string]`

    Secret name (e.g. openai-api-key). Must be lowercase alphanumeric with hyphens (no dots or underscores), so it maps 1:1 to a valid secret name on every cloud backend (AWS / Azure Key Vault / GCP Secret Manager).

  - `Value param.Field[string]`

    The secret value to store

  - `Description param.Field[string]`

    Optional human-readable description

### Returns

- `type CloudSecret struct{…}`

  API response model for a secret. Never includes the secret value.

  - `ID string`

    The unique identifier of the entity.

  - `AccountID string`

    The ID of the account that owns the given entity.

  - `CloudSecretPath string`

    Full path in the cloud secret store.

  - `CreatedAt Time`

    The date and time when the entity was created in ISO format.

  - `CreatedBy Identity`

    The identity that created the entity.

    - `ID string`

    - `Type IdentityType`

      - `const IdentityTypeUser IdentityType = "user"`

      - `const IdentityTypeServiceAccount IdentityType = "service_account"`

    - `Object IdentityObject`

      - `const IdentityObjectIdentity IdentityObject = "identity"`

  - `Key string`

    Secret name, e.g. OPENAI_API_KEY.

  - `Description string`

    Optional human-readable description of the secret.

  - `Object CloudSecretObject`

    - `const CloudSecretObjectSGPCloudSecret CloudSecretObject = "sgp_cloud_secret"`

  - `UpdatedAt Time`

    Timestamp of last update.

  - `UpdatedBy string`

    User who last updated the secret.

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/scaleapi/sgp-dev-go"
  "github.com/scaleapi/sgp-dev-go/option"
)

func main() {
  client := sgpdev.NewClient(
    option.WithAPIKey("My API Key"),
    option.WithAccountID("My Account ID"),
  )
  cloudSecret, err := client.Secrets.New(context.TODO(), sgpdev.SecretNewParams{
    Key: "key",
    Value: "x",
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", cloudSecret.ID)
}
```

#### Response

```json
{
  "id": "id",
  "account_id": "account_id",
  "cloud_secret_path": "cloud_secret_path",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "key": "key",
  "description": "description",
  "object": "sgp_cloud_secret",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "updated_by": "updated_by"
}
```
