# Custom Csrs ## List Custom CSRs `client.CustomCsrs.List(ctx, params) (*V4PagePaginationArray[CustomCsrListResponse], error)` **get** `/{accounts_or_zones}/{account_or_zone_id}/custom_csrs` List all custom Certificate Signing Requests (CSRs) for an account or zone. ### Parameters - `params CustomCsrListParams` - `AccountID param.Field[string]` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. - `Page param.Field[float64]` Query param: Page number of paginated results. - `PerPage param.Field[float64]` Query param: Number of custom CSRs per page. ### Returns - `type CustomCsrListResponse struct{…}` A custom Certificate Signing Request (CSR). - `ID string` Custom CSR identifier tag. - `CreatedAt Time` When the CSR was created. - `KeyType CustomCsrListResponseKeyType` The key algorithm used to generate the CSR. - `const CustomCsrListResponseKeyTypeRsa2048 CustomCsrListResponseKeyType = "rsa2048"` - `const CustomCsrListResponseKeyTypeP256v1 CustomCsrListResponseKeyType = "p256v1"` - `AccountTag string` Account identifier associated with this CSR. - `CommonName string` The common name (domain) for the CSR. - `Country string` Two-letter ISO 3166-1 alpha-2 country code. - `Csr string` The PEM-encoded Certificate Signing Request. - `Description string` Optional description for the CSR. - `Locality string` City or locality name. - `Name string` Human-readable name for the CSR. - `Organization string` Organization name. - `OrganizationalUnit string` Organizational unit name. - `Sans []string` Subject Alternative Names included in the CSR. - `State string` State or province name. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/custom_csrs" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.CustomCsrs.List(context.TODO(), custom_csrs.CustomCsrListParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "7b163417-1d2b-4c84-a38a-2fb7a0cd7752", "created_at": "2024-01-15T10:30:00Z", "key_type": "rsa2048", "account_tag": "23e087bd19bc1d40ae95b6f297263ceb", "common_name": "example.com", "country": "US", "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIICYzCCAUsCAQAwHj...", "description": "CSR for example.com wildcard", "locality": "San Francisco", "name": "My Custom CSR", "organization": "Cloudflare, Inc.", "organizational_unit": "Engineering", "sans": [ "example.com", "www.example.com" ], "state": "California" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Create Custom CSR `client.CustomCsrs.New(ctx, params) (*CustomCsrNewResponse, error)` **post** `/{accounts_or_zones}/{account_or_zone_id}/custom_csrs` Generate a new custom Certificate Signing Request (CSR) for an account or zone. Cloudflare generates and securely stores the private key associated with the CSR. ### Parameters - `params CustomCsrNewParams` - `CommonName param.Field[string]` Body param: The common name (domain) for the CSR. Must be at most 64 characters. - `Country param.Field[string]` Body param: Two-letter ISO 3166-1 alpha-2 country code. - `Locality param.Field[string]` Body param: City or locality name. - `Organization param.Field[string]` Body param: Organization name. - `Sans param.Field[[]string]` Body param: Subject Alternative Names for the CSR. At least one SAN is required. - `State param.Field[string]` Body param: State or province name. - `AccountID param.Field[string]` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. - `Description param.Field[string]` Body param: Optional description for the CSR. - `KeyType param.Field[CustomCsrNewParamsKeyType]` Body param: Key algorithm to use for the CSR. Defaults to rsa2048 if not specified. - `const CustomCsrNewParamsKeyTypeRsa2048 CustomCsrNewParamsKeyType = "rsa2048"` - `const CustomCsrNewParamsKeyTypeP256v1 CustomCsrNewParamsKeyType = "p256v1"` - `Name param.Field[string]` Body param: Human-readable name for the CSR. - `OrganizationalUnit param.Field[string]` Body param: Organizational unit name. ### Returns - `type CustomCsrNewResponse struct{…}` A custom Certificate Signing Request (CSR). - `ID string` Custom CSR identifier tag. - `CreatedAt Time` When the CSR was created. - `KeyType CustomCsrNewResponseKeyType` The key algorithm used to generate the CSR. - `const CustomCsrNewResponseKeyTypeRsa2048 CustomCsrNewResponseKeyType = "rsa2048"` - `const CustomCsrNewResponseKeyTypeP256v1 CustomCsrNewResponseKeyType = "p256v1"` - `AccountTag string` Account identifier associated with this CSR. - `CommonName string` The common name (domain) for the CSR. - `Country string` Two-letter ISO 3166-1 alpha-2 country code. - `Csr string` The PEM-encoded Certificate Signing Request. - `Description string` Optional description for the CSR. - `Locality string` City or locality name. - `Name string` Human-readable name for the CSR. - `Organization string` Organization name. - `OrganizationalUnit string` Organizational unit name. - `Sans []string` Subject Alternative Names included in the CSR. - `State string` State or province name. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/custom_csrs" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) customCsr, err := client.CustomCsrs.New(context.TODO(), custom_csrs.CustomCsrNewParams{ CommonName: cloudflare.F("example.com"), Country: cloudflare.F("US"), Locality: cloudflare.F("San Francisco"), Organization: cloudflare.F("Cloudflare, Inc."), Sans: cloudflare.F([]string{"example.com", "www.example.com"}), State: cloudflare.F("California"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", customCsr.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "7b163417-1d2b-4c84-a38a-2fb7a0cd7752", "created_at": "2024-01-15T10:30:00Z", "key_type": "rsa2048", "account_tag": "23e087bd19bc1d40ae95b6f297263ceb", "common_name": "example.com", "country": "US", "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIICYzCCAUsCAQAwHj...", "description": "CSR for example.com wildcard", "locality": "San Francisco", "name": "My Custom CSR", "organization": "Cloudflare, Inc.", "organizational_unit": "Engineering", "sans": [ "example.com", "www.example.com" ], "state": "California" } } ``` ## Custom CSR Details `client.CustomCsrs.Get(ctx, customCsrID, query) (*CustomCsrGetResponse, error)` **get** `/{accounts_or_zones}/{account_or_zone_id}/custom_csrs/{custom_csr_id}` Retrieve details for a specific custom Certificate Signing Request (CSR). ### Parameters - `customCsrID string` Custom CSR identifier tag. - `query CustomCsrGetParams` - `AccountID param.Field[string]` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `type CustomCsrGetResponse struct{…}` A custom Certificate Signing Request (CSR). - `ID string` Custom CSR identifier tag. - `CreatedAt Time` When the CSR was created. - `KeyType CustomCsrGetResponseKeyType` The key algorithm used to generate the CSR. - `const CustomCsrGetResponseKeyTypeRsa2048 CustomCsrGetResponseKeyType = "rsa2048"` - `const CustomCsrGetResponseKeyTypeP256v1 CustomCsrGetResponseKeyType = "p256v1"` - `AccountTag string` Account identifier associated with this CSR. - `CommonName string` The common name (domain) for the CSR. - `Country string` Two-letter ISO 3166-1 alpha-2 country code. - `Csr string` The PEM-encoded Certificate Signing Request. - `Description string` Optional description for the CSR. - `Locality string` City or locality name. - `Name string` Human-readable name for the CSR. - `Organization string` Organization name. - `OrganizationalUnit string` Organizational unit name. - `Sans []string` Subject Alternative Names included in the CSR. - `State string` State or province name. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/custom_csrs" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) customCsr, err := client.CustomCsrs.Get( context.TODO(), "7b163417-1d2b-4c84-a38a-2fb7a0cd7752", custom_csrs.CustomCsrGetParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", customCsr.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "7b163417-1d2b-4c84-a38a-2fb7a0cd7752", "created_at": "2024-01-15T10:30:00Z", "key_type": "rsa2048", "account_tag": "23e087bd19bc1d40ae95b6f297263ceb", "common_name": "example.com", "country": "US", "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIICYzCCAUsCAQAwHj...", "description": "CSR for example.com wildcard", "locality": "San Francisco", "name": "My Custom CSR", "organization": "Cloudflare, Inc.", "organizational_unit": "Engineering", "sans": [ "example.com", "www.example.com" ], "state": "California" } } ``` ## Delete Custom CSR `client.CustomCsrs.Delete(ctx, customCsrID, body) (*CustomCsrDeleteResponse, error)` **delete** `/{accounts_or_zones}/{account_or_zone_id}/custom_csrs/{custom_csr_id}` Delete a custom Certificate Signing Request (CSR) and its associated private key. ### Parameters - `customCsrID string` Custom CSR identifier tag. - `body CustomCsrDeleteParams` - `AccountID param.Field[string]` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `type CustomCsrDeleteResponse struct{…}` - `ID string` Custom CSR identifier tag. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/custom_csrs" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) customCsr, err := client.CustomCsrs.Delete( context.TODO(), "7b163417-1d2b-4c84-a38a-2fb7a0cd7752", custom_csrs.CustomCsrDeleteParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", customCsr.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "7b163417-1d2b-4c84-a38a-2fb7a0cd7752" } } ``` ## Domain Types ### Custom Csr - `type CustomCsr struct{…}` A custom Certificate Signing Request (CSR). - `ID string` Custom CSR identifier tag. - `CreatedAt Time` When the CSR was created. - `KeyType CustomCsrKeyType` The key algorithm used to generate the CSR. - `const CustomCsrKeyTypeRsa2048 CustomCsrKeyType = "rsa2048"` - `const CustomCsrKeyTypeP256v1 CustomCsrKeyType = "p256v1"` - `CommonName string` The common name (domain) for the CSR. - `Country string` Two-letter ISO 3166-1 alpha-2 country code. - `Csr string` The PEM-encoded Certificate Signing Request. - `Locality string` City or locality name. - `Organization string` Organization name. - `OrganizationalUnit string` Organizational unit for the CSR subject. - `Sans []string` Subject Alternative Names included in the CSR. - `State string` State or province name.