# Web Cloud › Domains › Extensions & ordering API

> Part of the OVHcloud developer hub. Index of every page and section: https://developers.eu.ovhcloud.com/llms.txt
> The Web Cloud product's sections: https://developers.eu.ovhcloud.com/reference/web-cloud/llms.txt
> Everything in one file: https://developers.eu.ovhcloud.com/llms-full.txt

> 15 operations of the OVHcloud API. Calls carry `authorization: Bearer $OVH_TOKEN`; the EU host is shown, Canada and the United States answer on api.ca.ovhcloud.com and api.us.ovhcloud.com.

Page: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/

OpenAPI v1: https://api.eu.ovhcloud.com/1.0/__schemas/developer-hub-navigation/web-cloud/domains/extensions-ordering.json?format=openapi3
OpenAPI v2: https://api.eu.ovhcloud.com/v2/__schemas/developer-hub-navigation/web-cloud/domains/extensions-ordering.json?format=openapi3

## Operations

- `GET /domain/extensions` — List all extensions
- `GET /domain/extensions/{name}` — Get an extension
- `GET /domain/extensions/byCategory` — List extensions, grouped by category types (like 'thematic', 'geolocalization') and category names (like 'europe')
- `GET /domain/extensions/highlighted` — List highlighted extensions, ordered by decreased importance
- `GET /domain/extensions/pricingAttributes` — List extensions with their pricing attributes
- `GET /domain/extensions/{name}/registryConfigurations` — Retrieve registry configuration for an extension
- `GET /domain/configurationRule` — Get configuration rule applied for a domain in a given action
- `POST /domain/configurationRule/check` — Validate a rule data for a specified domain
- `GET /domain/data/claimNotice` — Retrieve claim notices associated to a domain
- `GET /domain/data/smd` — List all SMD files
- `GET /domain/data/smd/{smdId}` — Get details about a SMD file
- `POST /domain/data/smd` — Create a SMD file
- `DELETE /domain/data/smd/{smdId}` — Delete a SMD file
- `PUT /domain/data/smd/{smdId}` — Update a SMD file
- `POST /domain/order/create` — Order a new domain name

## List all extensions

`GET /1.0/domain/extensions`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-extensions

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/extension/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `geolocalizations` | query | string |  | Filter only extensions related to this list of geolocalization places (comma separated). Default to empty. |
| `orderBy` | query | domain.extensions.OrderByTypeEnum |  | Order results by name (alphabetical) or trending importance (trending). Default to alphabetical. — one of `alphabetical`, `trending` |
| `ovhSubsidiary` | query | nichandle.OvhSubsidiaryEnum |  | OVHcloud subsidiary targeted. Useful only when orderBy is equal to trending. Default to FR. — one of `CZ`, `DE`, `ES`, `EU`, `FI`, `FR`, `GB`, `IE`, `IT`, `LT`, `MA`, `NL`, … |
| `thematics` | query | string |  | Filter only extensions related to this list of thematics (comma separated). Default to empty. |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | string[] | successful operation |

```json
[
  "string"
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/extensions" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/extensions")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/extensions");

print_r($result);
?>
```

## Get an extension

`GET /1.0/domain/extensions/{name}`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-extensions-name

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/extension/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `name` | path | string | yes | Name |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.extensions.Extension | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | read-only | The extension name |

```json
{
  "name": "string"
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/extensions/{name}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/extensions/{name}")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/extensions/{name}");

print_r($result);
?>
```

## List extensions, grouped by category types (like 'thematic', 'geolocalization') and category names (like 'europe')

`GET /1.0/domain/extensions/byCategory`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-extensions-bycategory

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/extension/byCategory/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `categoryType` | query | domain.extensions.CategoryTypeEnum[] |  | Filter by category types |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.extensions.ExtensionsByCategory | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `geolocalization` | domain.extensions.CategoryNameWithExtensions[] | read-only | Geolocalizations groups extensions by geographical place, like 'europe' |
| `geolocalization[].extensions` | string[] | read-only | List of extensions |
| `geolocalization[].name` | string | read-only | Name of the category |
| `thematic` | domain.extensions.CategoryNameWithExtensions[] | read-only | Thematics groups extensions by a thematic like 'gastronomy' for '.pizza' |
| `thematic[].extensions` | string[] | read-only | List of extensions |
| `thematic[].name` | string | read-only | Name of the category |

```json
{
  "geolocalization": [
    {
      "extensions": [
        "string"
      ],
      "name": "string"
    }
  ],
  "thematic": [
    {
      "extensions": [
        "string"
      ],
      "name": "string"
    }
  ]
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/extensions/byCategory" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/extensions/byCategory")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/extensions/byCategory");

print_r($result);
?>
```

## List highlighted extensions, ordered by decreased importance

`GET /1.0/domain/extensions/highlighted`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-extensions-highlighted

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/extension/highlighted/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ovhSubsidiary` | query | nichandle.OvhSubsidiaryEnum |  | OVHcloud subsidiary targeted. Highlighted extensions are different from one subsidiary to another. Default to FR. — one of `CZ`, `DE`, `ES`, `EU`, `FI`, `FR`, `GB`, `IE`, `IT`, `LT`, `MA`, `NL`, … |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | string[] | successful operation |

```json
[
  "string"
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/extensions/highlighted" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/extensions/highlighted")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/extensions/highlighted");

print_r($result);
?>
```

## List extensions with their pricing attributes

`GET /1.0/domain/extensions/pricingAttributes`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-extensions-pricingattributes

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/extension/get`

List extensions with their pricing attributes. It especially documents whether an extension has been implemented recently or whether the price has dropped.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ovhSubsidiary` | query | nichandle.OvhSubsidiaryEnum |  | OVHcloud subsidiary targeted. Attributes may be different from one subsidiary to another. Default to FR. — one of `CZ`, `DE`, `ES`, `EU`, `FI`, `FR`, `GB`, `IE`, `IT`, `LT`, `MA`, `NL`, … |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.extensions.ExtensionsPricingAttributes[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `brandNew` | boolean | read-only | Parameter is true when the extension has been created recently and we want to highlight this fact |
| `name` | string | read-only | Extension name, like 'com' or 'co.uk' |
| `priceDrop` | boolean | read-only | Parameter is true when the extension price has dropped recently and we want to highlight this fact |

```json
[
  {
    "brandNew": true,
    "name": "string",
    "priceDrop": true
  }
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/extensions/pricingAttributes" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/extensions/pricingAttributes")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/extensions/pricingAttributes");

print_r($result);
?>
```

## Retrieve registry configuration for an extension

`GET /1.0/domain/extensions/{name}/registryConfigurations`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-extensions-name-registryconfigurations

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/extension/registryConfiguration/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `name` | path | string | yes | Name |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.extensions.registryConfigurations.RegistryConfigurations | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dns` | domain.extensions.registryConfigurations.DNSRegistryConfiguration | read-only | Configurations on the DNS associated to the domain for the given extension |
| `dns.isDNSSECSupported` | boolean | read-only | Whether DNSSEC is supported by the registry/backend and handled by OVHcloud |
| `dns.maxNumber` | integer | read-only | The maximum required number of DNS |
| `dns.minNumber` | integer | read-only | The minimum required number of DNS |
| `domain` | domain.extensions.registryConfigurations.DomainRegistryConfiguration | read-only | Configurations on the domain name itself for the given extension |
| `domain.extension_type` | domain.extensions.registryConfigurations.ExtensionTypeEnum | read-only | The type of an extension (cctld or gtld) — one of `cctld`, `gtld` |
| `domain.isAuthInfoSupported` | boolean | read-only | Whether the registry uses an authInfo for this extension, whatever it is used for. This does not mean an incoming transfer is driven by an authInfo: some registries manage an authInfo to take control of a contact while their transfer process does not rely on one. See lifecycle.transfer.isAuthInfoRequired for the transfer requirement |
| `domain.isPremiumSupported` | boolean | read-only | Whether premium domains are supported by the registry and handled by OVHcloud |
| `domain.label` | domain.extensions.registryConfigurations.LabelDomainRegistryConfiguration | read-only | The registry configurations applied to the domain name label |
| `domain.label.isIDNSupported` | boolean | read-only | Whether International Domain Names are supported by the registry and handled by OVHcloud |
| `domain.label.maxLength` | integer | read-only | The maximum length allowed for a domain name (without the extension) |
| `domain.label.minLength` | integer | read-only | The minimum length allowed for a domain name (without the extension) |
| `lifecycle` | domain.extensions.registryConfigurations.LifecycleRegistryConfiguration | read-only | Configurations on the lifecycle of a domain for the given extension |
| `lifecycle.create` | domain.extensions.registryConfigurations.CreateLifecycleRegistryConfiguration | read-only | The registry configurations applied when creating a domain name |
| `lifecycle.create.allowedPeriodsInMonths` | integer[] | read-only | The number of months allowed for a domain creation |
| `lifecycle.order` | domain.extensions.registryConfigurations.OrderLifecycleRegistryConfiguration | read-only | The registry configurations applied when ordering a domain name |
| `lifecycle.order.active` | boolean | read-only | True if the extension can be ordered from the website |
| `lifecycle.order.maxMonths` | integer | read-only | The maximum number of months a domain can be ordered for |
| `lifecycle.order.minMonths` | integer | read-only | The minimum number of months a domain can be ordered for |
| `lifecycle.renew` | domain.extensions.registryConfigurations.RenewLifecycleRegistryConfiguration | read-only | The registry configurations applied when renewing a domain name |
| `lifecycle.renew.allowedPeriodsInMonths` | integer[] | read-only | The number of months allowed for a domain renewal |
| `lifecycle.renew.gracePeriodInDays` | integer | read-only | The number of calendar days between the expiration date and the redemption period when a renew can be executed. During this period, the domain has expired and is suspended. It's the number of days before real deletion. The customer can still renew. |
| `lifecycle.restore` | domain.extensions.registryConfigurations.RestoreLifecycleRegistryConfiguration | read-only | The registry configurations applied when restoring a domain name |
| `lifecycle.restore.gracePeriodInDays` | integer | read-only | The number of calendar days in which the customer still can restore their domain after expiration. During this period, the domain has been deleted. The customer can still restore it until these days are over. Then the domain is returned to public, if not restored. |
| `lifecycle.transfer` | domain.extensions.registryConfigurations.TransferLifecycleRegistryConfiguration | read-only | The registry configurations applied when transfering a domain name |
| `lifecycle.transfer.allowedPeriodsInMonths` | integer[] | read-only | The number of months allowed for a domain transfer |
| `lifecycle.transfer.includeRenew` | boolean | read-only | Whether the transfer includes a renewal of the domain name, and therefore updates its expiration date |
| `lifecycle.transfer.incomingTransferDelayMaxDays` | integer | read-only | The maximum estimated number of days for an incoming domain transfer |
| `lifecycle.transfer.incomingTransferDelayMinDays` | integer | read-only | The minimum estimated number of days for an incoming domain transfer |
| `lifecycle.transfer.isAuthInfoRequired` | boolean | read-only | Whether an authInfo has to be provided to request an incoming transfer on this extension. Independent from domain.isAuthInfoSupported: an extension can have an authInfo managed at the registry, to take control of a contact for instance, while its transfer process does not use one at all |
| `lifecycle.transfer.transferBlockDelayInDays` | integer | read-only | The minimum number of days after domain creation or last transfer before a new outgoing transfer is allowed. The ICANN default is 60 days, but this value can be overridden per registry. Null means no restriction applies. |

```json
{
  "dns": {
    "isDNSSECSupported": true,
    "maxNumber": 0,
    "minNumber": 0
  },
  "domain": {
    "extension_type": "cctld",
    "isAuthInfoSupported": true,
    "isPremiumSupported": true,
    "label": {
      "isIDNSupported": true,
      "maxLength": 0,
      "minLength": 0
    }
  },
  "lifecycle": {
    "create": {
      "allowedPeriodsInMonths": [
        0
      ]
    },
    "order": {
      "active": true,
      "maxMonths": 0,
      "minMonths": 0
    },
    "renew": {
      "allowedPeriodsInMonths": [
        0
      ],
      "gracePeriodInDays": 0
    },
    "restore": {
      "gracePeriodInDays": 0
    },
    "transfer": {
      "allowedPeriodsInMonths": [
        0
      ],
      "includeRenew": true,
      "incomingTransferDelayMaxDays": 0,
      "incomingTransferDelayMinDays": 0,
      "isAuthInfoRequired": true,
      "transferBlockDelayInDays": 0
    }
  }
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/extensions/{name}/registryConfigurations" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/extensions/{name}/registryConfigurations")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/extensions/{name}/registryConfigurations");

print_r($result);
?>
```

## Get configuration rule applied for a domain in a given action

`GET /1.0/domain/configurationRule`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-configurationrule

**Status:** Stable production version  
**Authentication:** none (public operation)

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `action` | query | domain.ActionEnum | yes | Depending on the action, the applied rule will change (transfer vs create) — one of `create`, `trade`, `transfer`, `update` |
| `domain` | query | string | yes | The domain to get the configuration rule for |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.configuration.rules.Rule | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `and` | domain.configuration.rules.Rule[] | read-only | An "and" operator on multiple rules |
| `and[].and` | domain.configuration.rules.Rule[] | read-only | An "and" operator on multiple rules |
| `and[].conditions` | domain.configuration.rules.Rule | read-only | Whether this rule is applied or not |
| `and[].constraints` | domain.configuration.rules.Constraint[] | read-only | The constraints of the rule |
| `and[].constraints[].conditions` | domain.configuration.rules.Rule | read-only | Whether this constraint is applied or not |
| `and[].constraints[].contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the constraint applies |
| `and[].constraints[].operator` | domain.configuration.rules.OperatorEnum | read-only | The operator of the constraint — one of `between`, `contains`, `empty`, `eq`, `gt`, `gte`, `lt`, `lte`, `match`, `maxlength`, `minlength`, `ne`, … |
| `and[].constraints[].value` | string | read-only | The value to match against |
| `and[].constraints[].values` | string[] | read-only | The values to match against |
| `and[].contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the rule applies |
| `and[].description` | string | read-only | The description of the rule |
| `and[].fields` | domain.configuration.rules.Rule | read-only | The fields with specific rules |
| `and[].label` | string | read-only | The label of the rule |
| `and[].or` | domain.configuration.rules.Rule[] | read-only | An "or" operator on multiple rules |
| `and[].placeholder` | string | read-only | The default value used for the rule |
| `and[].type` | domain.configuration.rules.TypeEnum | read-only | The type of the object the rule applies on — one of `bool`, `contact`, `date_ISO8601`, `domain`, `json`, `number`, `string`, `string[]`, `text` |
| `conditions` | domain.configuration.rules.Rule | read-only | Whether this rule is applied or not |
| `conditions.and` | domain.configuration.rules.Rule[] | read-only | An "and" operator on multiple rules |
| `conditions.conditions` | domain.configuration.rules.Rule | read-only | Whether this rule is applied or not |
| `conditions.constraints` | domain.configuration.rules.Constraint[] | read-only | The constraints of the rule |
| `conditions.constraints[].conditions` | domain.configuration.rules.Rule | read-only | Whether this constraint is applied or not |
| `conditions.constraints[].contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the constraint applies |
| `conditions.constraints[].operator` | domain.configuration.rules.OperatorEnum | read-only | The operator of the constraint — one of `between`, `contains`, `empty`, `eq`, `gt`, `gte`, `lt`, `lte`, `match`, `maxlength`, `minlength`, `ne`, … |
| `conditions.constraints[].value` | string | read-only | The value to match against |
| `conditions.constraints[].values` | string[] | read-only | The values to match against |
| `conditions.contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the rule applies |
| `conditions.description` | string | read-only | The description of the rule |
| `conditions.fields` | domain.configuration.rules.Rule | read-only | The fields with specific rules |
| `conditions.label` | string | read-only | The label of the rule |
| `conditions.or` | domain.configuration.rules.Rule[] | read-only | An "or" operator on multiple rules |
| `conditions.placeholder` | string | read-only | The default value used for the rule |
| `conditions.type` | domain.configuration.rules.TypeEnum | read-only | The type of the object the rule applies on — one of `bool`, `contact`, `date_ISO8601`, `domain`, `json`, `number`, `string`, `string[]`, `text` |
| `constraints` | domain.configuration.rules.Constraint[] | read-only | The constraints of the rule |
| `constraints[].conditions` | domain.configuration.rules.Rule | read-only | Whether this constraint is applied or not |
| `constraints[].conditions.and` | domain.configuration.rules.Rule[] | read-only | An "and" operator on multiple rules |
| `constraints[].conditions.conditions` | domain.configuration.rules.Rule | read-only | Whether this rule is applied or not |
| `constraints[].conditions.constraints` | domain.configuration.rules.Constraint[] | read-only | The constraints of the rule |
| `constraints[].conditions.contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the rule applies |
| `constraints[].conditions.description` | string | read-only | The description of the rule |
| `constraints[].conditions.fields` | domain.configuration.rules.Rule | read-only | The fields with specific rules |
| `constraints[].conditions.label` | string | read-only | The label of the rule |
| `constraints[].conditions.or` | domain.configuration.rules.Rule[] | read-only | An "or" operator on multiple rules |
| `constraints[].conditions.placeholder` | string | read-only | The default value used for the rule |
| `constraints[].conditions.type` | domain.configuration.rules.TypeEnum | read-only | The type of the object the rule applies on — one of `bool`, `contact`, `date_ISO8601`, `domain`, `json`, `number`, `string`, `string[]`, `text` |
| `constraints[].contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the constraint applies |
| `constraints[].operator` | domain.configuration.rules.OperatorEnum | read-only | The operator of the constraint — one of `between`, `contains`, `empty`, `eq`, `gt`, `gte`, `lt`, `lte`, `match`, `maxlength`, `minlength`, `ne`, … |
| `constraints[].value` | string | read-only | The value to match against |
| `constraints[].values` | string[] | read-only | The values to match against |
| `contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the rule applies |
| `description` | string | read-only | The description of the rule |
| `fields` | domain.configuration.rules.Rule | read-only | The fields with specific rules |
| `fields.and` | domain.configuration.rules.Rule[] | read-only | An "and" operator on multiple rules |
| `fields.conditions` | domain.configuration.rules.Rule | read-only | Whether this rule is applied or not |
| `fields.constraints` | domain.configuration.rules.Constraint[] | read-only | The constraints of the rule |
| `fields.constraints[].conditions` | domain.configuration.rules.Rule | read-only | Whether this constraint is applied or not |
| `fields.constraints[].contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the constraint applies |
| `fields.constraints[].operator` | domain.configuration.rules.OperatorEnum | read-only | The operator of the constraint — one of `between`, `contains`, `empty`, `eq`, `gt`, `gte`, `lt`, `lte`, `match`, `maxlength`, `minlength`, `ne`, … |
| `fields.constraints[].value` | string | read-only | The value to match against |
| `fields.constraints[].values` | string[] | read-only | The values to match against |
| `fields.contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the rule applies |
| `fields.description` | string | read-only | The description of the rule |
| `fields.fields` | domain.configuration.rules.Rule | read-only | The fields with specific rules |
| `fields.label` | string | read-only | The label of the rule |
| `fields.or` | domain.configuration.rules.Rule[] | read-only | An "or" operator on multiple rules |
| `fields.placeholder` | string | read-only | The default value used for the rule |
| `fields.type` | domain.configuration.rules.TypeEnum | read-only | The type of the object the rule applies on — one of `bool`, `contact`, `date_ISO8601`, `domain`, `json`, `number`, `string`, `string[]`, `text` |
| `label` | string | read-only | The label of the rule |
| `or` | domain.configuration.rules.Rule[] | read-only | An "or" operator on multiple rules |
| `or[].and` | domain.configuration.rules.Rule[] | read-only | An "and" operator on multiple rules |
| `or[].conditions` | domain.configuration.rules.Rule | read-only | Whether this rule is applied or not |
| `or[].constraints` | domain.configuration.rules.Constraint[] | read-only | The constraints of the rule |
| `or[].constraints[].conditions` | domain.configuration.rules.Rule | read-only | Whether this constraint is applied or not |
| `or[].constraints[].contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the constraint applies |
| `or[].constraints[].operator` | domain.configuration.rules.OperatorEnum | read-only | The operator of the constraint — one of `between`, `contains`, `empty`, `eq`, `gt`, `gte`, `lt`, `lte`, `match`, `maxlength`, `minlength`, `ne`, … |
| `or[].constraints[].value` | string | read-only | The value to match against |
| `or[].constraints[].values` | string[] | read-only | The values to match against |
| `or[].contexts` | domain.configuration.rules.ContextEnum[] | read-only | The context on which the rule applies |
| `or[].description` | string | read-only | The description of the rule |
| `or[].fields` | domain.configuration.rules.Rule | read-only | The fields with specific rules |
| `or[].label` | string | read-only | The label of the rule |
| `or[].or` | domain.configuration.rules.Rule[] | read-only | An "or" operator on multiple rules |
| `or[].placeholder` | string | read-only | The default value used for the rule |
| `or[].type` | domain.configuration.rules.TypeEnum | read-only | The type of the object the rule applies on — one of `bool`, `contact`, `date_ISO8601`, `domain`, `json`, `number`, `string`, `string[]`, `text` |
| `placeholder` | string | read-only | The default value used for the rule |
| `type` | domain.configuration.rules.TypeEnum | read-only | The type of the object the rule applies on — one of `bool`, `contact`, `date_ISO8601`, `domain`, `json`, `number`, `string`, `string[]`, `text` |

```json
{
  "and": [
    {}
  ],
  "conditions": {},
  "constraints": [
    {
      "conditions": {},
      "contexts": [
        "accept_conditions"
      ],
      "operator": "between",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "contexts": [
    "accept_conditions"
  ],
  "description": "string",
  "fields": {},
  "label": "string",
  "or": [
    {}
  ],
  "placeholder": "string",
  "type": "bool"
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/configurationRule" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/configurationRule")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/configurationRule");

print_r($result);
?>
```

## Validate a rule data for a specified domain

`POST /1.0/domain/configurationRule/check`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#post-domain-configurationrule-check

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/configurationRule/check`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `action` | query | domain.ActionEnum | yes | Depending on the action, the applied rule will change (transfer vs create) — one of `create`, `trade`, `transfer`, `update` |
| `domain` | query | string | yes | The domain to check the rule data for |

### Request body (required)

Type: `domain.configuration.rules.RuleData`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `adminAccount` | nichandle.Nichandle |  | The admin contact data |
| `adminAccount.address` | string |  | Address of nichandle |
| `adminAccount.area` | string |  | Area of nichandle |
| `adminAccount.birthCity` | string |  | City of birth |
| `adminAccount.birthDay` | string |  | Birth date |
| `adminAccount.city` | string |  | City of nichandle |
| `adminAccount.companyNationalIdentificationNumber` | string |  | Company National Identification Number |
| `adminAccount.complementaryAddress` | string |  | Complementary Address |
| `adminAccount.corporationType` | string |  | Corporation type |
| `adminAccount.country` | nichandle.CountryEnum |  | Customer country — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `adminAccount.currency` | nichandle.Currency | read-only | Customer currency |
| `adminAccount.currency.code` | string |  | Currency code |
| `adminAccount.currency.symbol` | string |  | Currency symbol |
| `adminAccount.customerCode` | string | read-only | Your customer code (a numerical value used for identification when contacting support via phone call) |
| `adminAccount.displayName` | string |  | Display name shown instead of the organisation name. |
| `adminAccount.einvoicingBillingAddress` | string |  | Default e-invoicing billing address |
| `adminAccount.email` | string | read-only | Email address |
| `adminAccount.fax` | string |  | Fax number |
| `adminAccount.firstname` | string |  | First name |
| `adminAccount.italianSDI` | string |  | Italian SDI |
| `adminAccount.kycValidated` | boolean | read-only | KYC validation state |
| `adminAccount.language` | nichandle.LanguageEnum |  | Language — one of `cs_CZ`, `de_DE`, `en_AU`, `en_CA`, `en_GB`, `en_IE`, `en_US`, `es_ES`, `fi_FI`, `fr_CA`, `fr_FR`, `fr_MA`, … |
| `adminAccount.legalform` | nichandle.LegalFormEnum |  | Customer legal form — one of `administration`, `association`, `corporation`, `individual`, `other`, `personalcorporation` |
| `adminAccount.name` | string |  | Customer name |
| `adminAccount.nationalIdentificationNumber` | string |  | National Identification Number |
| `adminAccount.nichandle` | string | read-only | Customer identifier |
| `adminAccount.organisation` | string |  | Name of organisation |
| `adminAccount.ovhCompany` | nichandle.OvhCompanyEnum | read-only | OVH company — one of `kimsufi`, `ovh`, `soyoustart` |
| `adminAccount.ovhSubsidiary` | nichandle.OvhSubsidiaryEnum | read-only | OVH subsidiary — one of `CZ`, `DE`, `ES`, `EU`, `FI`, `FR`, `GB`, `IE`, `IT`, `LT`, `MA`, `NL`, … |
| `adminAccount.phone` | string |  | Phone number |
| `adminAccount.phoneCountry` | nichandle.CountryEnum |  | Countries a nichandle can choose — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `adminAccount.phoneType` | nichandle.PhoneTypeEnum |  | Type of phone(mobile, landline) — one of `landline`, `mobile` |
| `adminAccount.purposeOfPurchase` | string |  | Customer purpose of purchase |
| `adminAccount.sex` | nichandle.GenderEnum |  | Gender — one of `female`, `male` |
| `adminAccount.spareEmail` | string |  | Spare email |
| `adminAccount.state` | nichandle.StateEnum | read-only | Nichandle state — one of `complete`, `incomplete` |
| `adminAccount.vat` | string |  | VAT number |
| `adminAccount.zip` | string |  | Zipcode |
| `domain` | domain.Data |  | The domain data |
| `domain.audience` | string |  | Domain name audience |
| `domain.authInfo` | string (password) |  | Auth Info |
| `domain.isFor` | domain.IsForEnum[] |  | Purposes of the domain |
| `domain.otherPurpose` | string |  | Domain name other purpose |
| `domain.reason` | string |  | Reason of the purchase of this domain |
| `domain.represent` | string |  | Represented company |
| `extras` | domain.configuration.rules.RuleExtraData |  | The extra data of the rule |
| `extras.acceptCondition` | boolean |  | Whether you accept the domain specific conditions or not |
| `extras.authInfo` | string (password) |  | The auth info code for the domain |
| `owner` | domain.Contact |  | The owner contact data |
| `owner.accreditationCountry` | nichandle.CountryEnum |  | Country of lawyer accreditation — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `owner.accreditationId` | string |  | Lawyer accreditation number |
| `owner.accreditationOrganism` | string |  | Organism of lawyer accreditation |
| `owner.accreditationYear` | integer |  | Year of lawyer accreditation |
| `owner.address` | domain.ContactAddress |  | The address of the contact |
| `owner.address.city` | string |  | City |
| `owner.address.country` | nichandle.CountryEnum |  | Country — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `owner.address.line1` | string |  | Address line 1 |
| `owner.address.line2` | string |  | Address line 2 |
| `owner.address.line3` | string |  | Address line 3 |
| `owner.address.otherDetails` | string |  | Others details |
| `owner.address.province` | string |  | Province |
| `owner.address.zip` | string |  | Zip code |
| `owner.birthCity` | string |  | City of birth |
| `owner.birthCountry` | nichandle.CountryEnum |  | Birth Country — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `owner.birthDay` | string (date) |  | Birth date |
| `owner.birthZip` | string |  | Birth Zipcode |
| `owner.cellPhone` | phoneNumber |  | Cellphone number |
| `owner.companyNationalIdentificationNumber` | string |  | Company National Identification Number |
| `owner.email` | string |  | Email address |
| `owner.enterpriseId` | string |  | Enterprise identifier |
| `owner.fax` | string |  | Fax number |
| `owner.firstName` | string |  | First name |
| `owner.gender` | nichandle.GenderEnum |  | Gender — one of `female`, `male` |
| `owner.id` | integer | read-only | Unique identifier |
| `owner.insee` | string |  | INSEE identifier |
| `owner.language` | nichandle.LanguageEnum |  | Language — one of `cs_CZ`, `de_DE`, `en_AU`, `en_CA`, `en_GB`, `en_IE`, `en_US`, `es_ES`, `fi_FI`, `fr_CA`, `fr_FR`, `fr_MA`, … |
| `owner.lastName` | string |  | Last name |
| `owner.legalForm` | nichandle.LegalFormEnum |  | Legal forms a nichandle can be registered as — one of `administration`, `association`, `corporation`, `individual`, `other`, `personalcorporation` |
| `owner.legalFormCategory` | string |  | category of legalForm |
| `owner.nationalIdentificationNumber` | string |  | National Identification Number |
| `owner.nationality` | nichandle.CountryEnum |  | Nationality — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `owner.organisationAccountable` | string |  | To whom is the organisation accountable |
| `owner.organisationFunding` | string |  | What is the source of funding |
| `owner.organisationFundingOther` | string |  | Explain the source of funding if organisationFunding is other |
| `owner.organisationName` | string |  | Name of organisation |
| `owner.organisationRole` | string |  | Role of your organisation |
| `owner.organisationRoleOther` | string |  | Explain the role of your organisation if organisationRole is other |
| `owner.organisationStaffStatus` | string |  | Status of the staff |
| `owner.organisationStaffStatusOther` | string |  | Explain the status of the staff if organisationStaffStatus is other |
| `owner.organisationType` | string |  | type of organisation |
| `owner.organisationTypeOther` | string |  | Explain the type of organisation if organisationType is other |
| `owner.phone` | phoneNumber |  | Phone number |
| `owner.registrantDocumentType` | string |  | Type of registrant document |
| `owner.registrantDocumentTypeOther` | string |  | Explain the type of registrant document if registrantDocumentType is other |
| `owner.roleInOrganisation` | string |  | The role in the organisation |
| `owner.trademarkId` | string |  | Trademark related to the contact |
| `owner.vat` | string |  | VAT number |
| `owner.website` | string |  | Website |
| `techAccount` | nichandle.Nichandle |  | The tech contact data |
| `techAccount.address` | string |  | Address of nichandle |
| `techAccount.area` | string |  | Area of nichandle |
| `techAccount.birthCity` | string |  | City of birth |
| `techAccount.birthDay` | string |  | Birth date |
| `techAccount.city` | string |  | City of nichandle |
| `techAccount.companyNationalIdentificationNumber` | string |  | Company National Identification Number |
| `techAccount.complementaryAddress` | string |  | Complementary Address |
| `techAccount.corporationType` | string |  | Corporation type |
| `techAccount.country` | nichandle.CountryEnum |  | Customer country — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `techAccount.currency` | nichandle.Currency | read-only | Customer currency |
| `techAccount.currency.code` | string |  | Currency code |
| `techAccount.currency.symbol` | string |  | Currency symbol |
| `techAccount.customerCode` | string | read-only | Your customer code (a numerical value used for identification when contacting support via phone call) |
| `techAccount.displayName` | string |  | Display name shown instead of the organisation name. |
| `techAccount.einvoicingBillingAddress` | string |  | Default e-invoicing billing address |
| `techAccount.email` | string | read-only | Email address |
| `techAccount.fax` | string |  | Fax number |
| `techAccount.firstname` | string |  | First name |
| `techAccount.italianSDI` | string |  | Italian SDI |
| `techAccount.kycValidated` | boolean | read-only | KYC validation state |
| `techAccount.language` | nichandle.LanguageEnum |  | Language — one of `cs_CZ`, `de_DE`, `en_AU`, `en_CA`, `en_GB`, `en_IE`, `en_US`, `es_ES`, `fi_FI`, `fr_CA`, `fr_FR`, `fr_MA`, … |
| `techAccount.legalform` | nichandle.LegalFormEnum |  | Customer legal form — one of `administration`, `association`, `corporation`, `individual`, `other`, `personalcorporation` |
| `techAccount.name` | string |  | Customer name |
| `techAccount.nationalIdentificationNumber` | string |  | National Identification Number |
| `techAccount.nichandle` | string | read-only | Customer identifier |
| `techAccount.organisation` | string |  | Name of organisation |
| `techAccount.ovhCompany` | nichandle.OvhCompanyEnum | read-only | OVH company — one of `kimsufi`, `ovh`, `soyoustart` |
| `techAccount.ovhSubsidiary` | nichandle.OvhSubsidiaryEnum | read-only | OVH subsidiary — one of `CZ`, `DE`, `ES`, `EU`, `FI`, `FR`, `GB`, `IE`, `IT`, `LT`, `MA`, `NL`, … |
| `techAccount.phone` | string |  | Phone number |
| `techAccount.phoneCountry` | nichandle.CountryEnum |  | Countries a nichandle can choose — one of `AC`, `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, … |
| `techAccount.phoneType` | nichandle.PhoneTypeEnum |  | Type of phone(mobile, landline) — one of `landline`, `mobile` |
| `techAccount.purposeOfPurchase` | string |  | Customer purpose of purchase |
| `techAccount.sex` | nichandle.GenderEnum |  | Gender — one of `female`, `male` |
| `techAccount.spareEmail` | string |  | Spare email |
| `techAccount.state` | nichandle.StateEnum | read-only | Nichandle state — one of `complete`, `incomplete` |
| `techAccount.vat` | string |  | VAT number |
| `techAccount.zip` | string |  | Zipcode |

```json
{
  "adminAccount": {
    "address": "string",
    "area": "string",
    "birthCity": "string",
    "birthDay": "string",
    "city": "string",
    "companyNationalIdentificationNumber": "string",
    "complementaryAddress": "string",
    "corporationType": "string",
    "country": "AC",
    "displayName": "string",
    "einvoicingBillingAddress": "string",
    "fax": "string",
    "firstname": "string",
    "italianSDI": "string",
    "language": "cs_CZ",
    "legalform": "administration",
    "name": "string",
    "nationalIdentificationNumber": "string",
    "organisation": "string",
    "phone": "string",
    "phoneCountry": "AC",
    "phoneType": "landline",
    "purposeOfPurchase": "string",
    "sex": "female",
    "spareEmail": "string",
    "vat": "string",
    "zip": "string"
  },
  "domain": {
    "audience": "string",
    "authInfo": "string",
    "isFor": [
      "campaign_website"
    ],
    "otherPurpose": "string",
    "reason": "string",
    "represent": "string"
  },
  "extras": {
    "acceptCondition": true,
    "authInfo": "string"
  },
  "owner": {
    "accreditationCountry": "AC",
    "accreditationId": "string",
    "accreditationOrganism": "string",
    "accreditationYear": 0,
    "address": {
      "city": "string",
      "country": "AC",
      "line1": "string",
      "line2": "string",
      "line3": "string",
      "otherDetails": "string",
      "province": "string",
      "zip": "string"
    },
    "birthCity": "string",
    "birthCountry": "AC",
    "birthDay": "2024-01-01",
    "birthZip": "string",
    "cellPhone": "string",
  …
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | — | successful operation |

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/domain/configurationRule/check" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN" \
  -H "content-type: application/json" \
  -d '{ }'
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

# Request body type: domain.configuration.rules.RuleData
result = client.post("/domain/configurationRule/check",
	adminAccount = None, # The admin contact data (type: nichandle.Nichandle, nullable)
	domain = None, # The domain data (type: domain.Data, nullable)
	extras = None, # The extra data of the rule (type: domain.configuration.rules.RuleExtraData, nullable)
	owner = None, # The owner contact data (type: domain.Contact, nullable)
	techAccount = None, # The tech contact data (type: nichandle.Nichandle, nullable)
)

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

// Request body type: domain.configuration.rules.RuleData
$result = $ovh->post("/domain/configurationRule/check", array(
	adminAccount => null, // The admin contact data (type: nichandle.Nichandle, nullable)
	domain => null, // The domain data (type: domain.Data, nullable)
	extras => null, // The extra data of the rule (type: domain.configuration.rules.RuleExtraData, nullable)
	owner => null, // The owner contact data (type: domain.Contact, nullable)
	techAccount => null, // The tech contact data (type: nichandle.Nichandle, nullable)
));

print_r($result);
?>
```

## Retrieve claim notices associated to a domain

`GET /1.0/domain/data/claimNotice`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-data-claimnotice

**Status:** Stable production version  
**Authentication:** none (public operation)

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `domain` | query | string | yes | Domain name |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.data.claimNotice.ClaimNotice | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `claims` | domain.data.claimNotice.ClaimNoticeDecision[] | read-only | Array of claim notice for the domain |
| `claims[].classifications` | domain.data.claimNotice.Classification[] | read-only | Classifications where trademark claim notice apply |
| `claims[].classifications[].description` | string | read-only | Summary of the classification |
| `claims[].classifications[].number` | string | read-only | Code of the classification |
| `claims[].courtDecisions` | domain.data.claimNotice.CourtDecision[] | read-only | Array of court decisions related to claim notice |
| `claims[].courtDecisions[].countryCode` | string | read-only | Country code |
| `claims[].courtDecisions[].courtName` | string | read-only | Court name |
| `claims[].courtDecisions[].referenceNumber` | string | read-only | Reference number of court decision |
| `claims[].courtDecisions[].regions` | string[] | read-only | Regions where court decision apply |
| `claims[].goodsAndServices` | string | read-only | Goods and services on which apply claim notice |
| `claims[].jurisdiction` | string | read-only | Name of jurisdiction |
| `claims[].jurisdictionCountryCode` | string | read-only | Jurisdiction country code |
| `claims[].markName` | string | read-only | Mark name implicated in claim notice |
| `claims[].trademarkContacts` | domain.data.claimNotice.Contact[] | read-only | Trademark contacts |
| `claims[].trademarkContacts[].address` | domain.data.claimNotice.Address | read-only | Address of holder |
| `claims[].trademarkContacts[].email` | string | read-only | Email address |
| `claims[].trademarkContacts[].entitlement` | string | read-only | Legitimacy of holder |
| `claims[].trademarkContacts[].name` | string | read-only | Name of claim notice holder |
| `claims[].trademarkContacts[].organisation` | string | read-only | Organisation name |
| `claims[].trademarkContacts[].type` | string | read-only | Type of contact |
| `claims[].trademarkHolders` | domain.data.claimNotice.Contact[] | read-only | Trademark holders |
| `claims[].trademarkHolders[].address` | domain.data.claimNotice.Address | read-only | Address of holder |
| `claims[].trademarkHolders[].email` | string | read-only | Email address |
| `claims[].trademarkHolders[].entitlement` | string | read-only | Legitimacy of holder |
| `claims[].trademarkHolders[].name` | string | read-only | Name of claim notice holder |
| `claims[].trademarkHolders[].organisation` | string | read-only | Organisation name |
| `claims[].trademarkHolders[].type` | string | read-only | Type of contact |
| `claims[].trademarkUDRP` | domain.data.claimNotice.UDRP[] | read-only | Trademark UDRP information |
| `claims[].trademarkUDRP[].caseNumber` | string | read-only | Case number |
| `claims[].trademarkUDRP[].udrpProvider` | string | read-only | UDRP Provider |
| `endingDate` | string | read-only | Ending date of claim notice |
| `id` | string | read-only | Claim notice ID |
| `label` | string | read-only | Label referring to claim notice |
| `startingDate` | string | read-only | Beginning date of claim notice |
| `type` | domain.data.claimNotice.ClaimNoticeTypeEnum | read-only | Type of claim notice — one of `TRADEMARK`, `UK` |

```json
{
  "claims": [
    {
      "classifications": [
        {
          "description": "string",
          "number": "string"
        }
      ],
      "courtDecisions": [
        {
          "countryCode": "string",
          "courtName": "string",
          "referenceNumber": "string",
          "regions": [
            "string"
          ]
        }
      ],
      "goodsAndServices": "string",
      "jurisdiction": "string",
      "jurisdictionCountryCode": "string",
      "markName": "string",
      "trademarkContacts": [
        {
          "address": {
            "city": "string",
            "countryCode": "AC",
            "fax": "string",
            "faxExtension": "string",
            "postalCode": "string",
            "stateOrProvince": "string",
            "streets": [
              null
            ],
            "voice": "string",
            "voiceExtension": "string"
          },
          "email": "string",
          "entitlement": "string",
          "name": "string",
          "organisation": "string",
          "type": "string"
        }
      ],
      "trademarkHolders": [
        {
          "address": {
            "city": "string",
            "countryCode": "AC",
            "fax": "string",
            "faxExtension": "string",
            "postalCode": "string",
            "stateOrProvince": "string",
            "streets": [
              null
            ],
            "voice": "string",
            "voiceExtension": "string"
          },
          "email": "string",
          "entitlement": "string",
          "name": "string",
  …
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/data/claimNotice" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/data/claimNotice")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/data/claimNotice");

print_r($result);
?>
```

## List all SMD files

`GET /1.0/domain/data/smd`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-data-smd

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/data/smd/get`

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.data.smd.Smd[] | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | string | read-only | SMD file content |
| `id` | string (uuid) | read-only | UUID of SMD file |
| `notAfter` | string (date-time) | read-only | Date when information about SMD file aren't valid anymore |
| `notBefore` | string (date-time) | read-only | Date before when information about SMD file aren't valid yet |
| `protectedLabels` | domain.data.smd.SmdLabel[] | read-only | List of the labels that are protect with that SMD file |
| `protectedLabels[].label` | string | read-only | Label that is protected |
| `protectedLabels[].trademark` | string | read-only | Trademark associated to the protected label |
| `smdId` | string | read-only | TMCH Internal identifier |

```json
[
  {
    "data": "string",
    "id": "00000000-0000-0000-0000-000000000000",
    "notAfter": "2024-01-01T12:00:00Z",
    "notBefore": "2024-01-01T12:00:00Z",
    "protectedLabels": [
      {
        "label": "string",
        "trademark": "string"
      }
    ],
    "smdId": "string"
  }
]
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/data/smd" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/data/smd")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/data/smd");

print_r($result);
?>
```

## Get details about a SMD file

`GET /1.0/domain/data/smd/{smdId}`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#get-domain-data-smd-smdid

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/data/smd/get`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `smdId` | path | string (uuid) | yes | Smd ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.data.smd.Smd | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | string | read-only | SMD file content |
| `id` | string (uuid) | read-only | UUID of SMD file |
| `notAfter` | string (date-time) | read-only | Date when information about SMD file aren't valid anymore |
| `notBefore` | string (date-time) | read-only | Date before when information about SMD file aren't valid yet |
| `protectedLabels` | domain.data.smd.SmdLabel[] | read-only | List of the labels that are protect with that SMD file |
| `protectedLabels[].label` | string | read-only | Label that is protected |
| `protectedLabels[].trademark` | string | read-only | Trademark associated to the protected label |
| `smdId` | string | read-only | TMCH Internal identifier |

```json
{
  "data": "string",
  "id": "00000000-0000-0000-0000-000000000000",
  "notAfter": "2024-01-01T12:00:00Z",
  "notBefore": "2024-01-01T12:00:00Z",
  "protectedLabels": [
    {
      "label": "string",
      "trademark": "string"
    }
  ],
  "smdId": "string"
}
```

### Example

```bash
curl -X GET \
  "https://api.eu.ovhcloud.com/1.0/domain/data/smd/{smdId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.get("/domain/data/smd/{smdId}")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->get("/domain/data/smd/{smdId}");

print_r($result);
?>
```

## Create a SMD file

`POST /1.0/domain/data/smd`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#post-domain-data-smd

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/data/smd/create`

### Request body (required)

Type: `domain.data.smd.SmdBody`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | string | yes | SMD file content in base64 |

```json
{
  "data": "string"
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.data.smd.Smd | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | string | read-only | SMD file content |
| `id` | string (uuid) | read-only | UUID of SMD file |
| `notAfter` | string (date-time) | read-only | Date when information about SMD file aren't valid anymore |
| `notBefore` | string (date-time) | read-only | Date before when information about SMD file aren't valid yet |
| `protectedLabels` | domain.data.smd.SmdLabel[] | read-only | List of the labels that are protect with that SMD file |
| `protectedLabels[].label` | string | read-only | Label that is protected |
| `protectedLabels[].trademark` | string | read-only | Trademark associated to the protected label |
| `smdId` | string | read-only | TMCH Internal identifier |

```json
{
  "data": "string",
  "id": "00000000-0000-0000-0000-000000000000",
  "notAfter": "2024-01-01T12:00:00Z",
  "notBefore": "2024-01-01T12:00:00Z",
  "protectedLabels": [
    {
      "label": "string",
      "trademark": "string"
    }
  ],
  "smdId": "string"
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/domain/data/smd" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN" \
  -H "content-type: application/json" \
  -d '{ }'
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

# Request body type: domain.data.smd.SmdBody
result = client.post("/domain/data/smd",
	data = None, # SMD file content in base64 (type: string)
)

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

// Request body type: domain.data.smd.SmdBody
$result = $ovh->post("/domain/data/smd", array(
	data => null, // SMD file content in base64 (type: string)
));

print_r($result);
?>
```

## Delete a SMD file

`DELETE /1.0/domain/data/smd/{smdId}`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#delete-domain-data-smd-smdid

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/data/smd/delete`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `smdId` | path | string (uuid) | yes | Smd ID |

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | — | successful operation |

### Example

```bash
curl -X DELETE \
  "https://api.eu.ovhcloud.com/1.0/domain/data/smd/{smdId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN"
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

result = client.delete("/domain/data/smd/{smdId}")

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

$result = $ovh->delete("/domain/data/smd/{smdId}");

print_r($result);
?>
```

## Update a SMD file

`PUT /1.0/domain/data/smd/{smdId}`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#put-domain-data-smd-smdid

**Status:** Stable production version  
**IAM actions:** `account:apiovh:domain/data/smd/edit`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `smdId` | path | string (uuid) | yes | Smd ID |

### Request body (required)

Type: `domain.data.smd.SmdBody`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | string | yes | SMD file content in base64 |

```json
{
  "data": "string"
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.data.smd.Smd | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | string | read-only | SMD file content |
| `id` | string (uuid) | read-only | UUID of SMD file |
| `notAfter` | string (date-time) | read-only | Date when information about SMD file aren't valid anymore |
| `notBefore` | string (date-time) | read-only | Date before when information about SMD file aren't valid yet |
| `protectedLabels` | domain.data.smd.SmdLabel[] | read-only | List of the labels that are protect with that SMD file |
| `protectedLabels[].label` | string | read-only | Label that is protected |
| `protectedLabels[].trademark` | string | read-only | Trademark associated to the protected label |
| `smdId` | string | read-only | TMCH Internal identifier |

```json
{
  "data": "string",
  "id": "00000000-0000-0000-0000-000000000000",
  "notAfter": "2024-01-01T12:00:00Z",
  "notBefore": "2024-01-01T12:00:00Z",
  "protectedLabels": [
    {
      "label": "string",
      "trademark": "string"
    }
  ],
  "smdId": "string"
}
```

### Example

```bash
curl -X PUT \
  "https://api.eu.ovhcloud.com/1.0/domain/data/smd/{smdId}" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN" \
  -H "content-type: application/json" \
  -d '{ }'
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

# Request body type: domain.data.smd.SmdBody
result = client.put("/domain/data/smd/{smdId}",
	data = None, # SMD file content in base64 (type: string)
)

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

// Request body type: domain.data.smd.SmdBody
$result = $ovh->put("/domain/data/smd/{smdId}", array(
	data => null, // SMD file content in base64 (type: string)
));

print_r($result);
?>
```

## Order a new domain name

`POST /1.0/domain/order/create`

Link: https://developers.eu.ovhcloud.com/reference/web-cloud/domains/extensions-ordering/#post-domain-order-create

**Status:** Beta version  
**IAM actions:** `account:apiovh:domain/order/create`

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `dryRun` | query | boolean |  | If true, simulate the order and return the pricing without actually placing it. Default to false. |

### Request body (required)

Type: `domain.order.OrderRequest`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `contacts` | domain.order.Contacts |  | Admin, tech and owner contacts |
| `contacts.admin` | string |  | Administrative contact, given as an OVH NIC handle (e.g. xxxxx-ovh). Defaults to the calling customer's NIC if omitted. |
| `contacts.owner` | domain.order.ContactOwner |  | Owner contact of the domain. Unlike admin/tech which are NIC handles, the owner is an OVH contact resource referenced by its numeric id. |
| `contacts.owner.id` | integer |  | Numeric identifier of the OVH contact resource (e.g. obtained from /me/contact). Distinct from a NIC handle such as xxxxx-ovh. |
| `contacts.tech` | string |  | Technical contact, given as an OVH NIC handle (e.g. xxxxx-ovh). Defaults to the admin contact if omitted. |
| `dns` | string[] |  | List of DNS servers (hostnames) to set on the domain. Optional: if omitted, OVHcloud's recommended DNS servers for the domain are used. |
| `domain` | string | yes | Fully-qualified domain name to order, including the extension (e.g. example.com) |
| `duration` | string (duration) |  | Order duration in ISO-8601 format, whole years only (e.g. P1Y). Allowed values depend on the extension's registry configuration; an unsupported duration is rejected. Defaults to P1Y if omitted. |
| `priceAcknowledge` | domain.order.PriceAcknowledge |  | Price the customer acknowledged before placing the order. Required for aftermarket or premium domains, optional otherwise. Its value/currency must equal the retail price quoted for this domain (e.g. via a dryRun order); a mismatch rejects the order. |
| `priceAcknowledge.currencyCode` | order.CurrencyCodeEnum | yes | Currency code of the acknowledged price — one of `AUD`, `CAD`, `CZK`, `EUR`, `GBP`, `INR`, `LTL`, `MAD`, `N/A`, `PLN`, `SGD`, `TND`, … |
| `priceAcknowledge.value` | number | yes | The effective price acknowledged by the client |
| `promoCodes` | string[] |  | Promotion codes to apply. Optional. |
| `waiveRetractationPeriod` | boolean |  | Acknowledgment that the customer waives the legal retractation period. Must be set to true to place the order. |
| `zone` | domain.order.ZoneOptions |  | DNS zone options |
| `zone.anycast` | boolean |  | Enable Anycast on the DNS zone. Applied only when a new zone is created (create=true and no existing zone); ignored otherwise. |
| `zone.create` | boolean |  | Whether to create the DNS zone along with the domain. Defaults to true if omitted. |
| `zone.dnssec` | boolean |  | Enable DNSSEC on the DNS zone. Applied only when a new zone is created (create=true and no existing zone); defaults to true in that case when omitted. |

```json
{
  "contacts": {
    "admin": "string",
    "owner": {
      "id": 0
    },
    "tech": "string"
  },
  "dns": [
    "string"
  ],
  "domain": "string",
  "duration": "string",
  "priceAcknowledge": {
    "currencyCode": "AUD",
    "value": 0
  },
  "promoCodes": [
    "string"
  ],
  "waiveRetractationPeriod": true,
  "zone": {
    "anycast": true,
    "create": true,
    "dnssec": true
  }
}
```

### Responses

| Status | Type | Description |
| --- | --- | --- |
| 200 | domain.order.OrderResponse | successful operation |

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `contacts` | domain.order.Contacts | read-only | Contacts attached to the order |
| `contacts.admin` | string |  | Administrative contact, given as an OVH NIC handle (e.g. xxxxx-ovh). Defaults to the calling customer's NIC if omitted. |
| `contacts.owner` | domain.order.ContactOwner |  | Owner contact of the domain. Unlike admin/tech which are NIC handles, the owner is an OVH contact resource referenced by its numeric id. |
| `contacts.owner.id` | integer |  | Numeric identifier of the OVH contact resource (e.g. obtained from /me/contact). Distinct from a NIC handle such as xxxxx-ovh. |
| `contacts.tech` | string |  | Technical contact, given as an OVH NIC handle (e.g. xxxxx-ovh). Defaults to the admin contact if omitted. |
| `contracts` | domain.order.Contract[] | read-only | Legal contracts (terms, as PDFs) the customer subscribes to with this order |
| `contracts[].name` | string | read-only | Name of the contract (e.g. registration terms, general conditions of service) |
| `contracts[].url` | string | read-only | URL to the contract terms document (PDF) |
| `dns` | string[] | read-only | DNS servers set on the domain |
| `domain` | string | read-only | Ordered domain name |
| `duration` | string (duration) | read-only | Order duration in ISO-8601 format, whole years only (e.g. P1Y) |
| `orderId` | integer | read-only | Identifier of the created order, used with url to finalize and pay it |
| `pricing` | domain.order.Pricing | read-only | Pricing breakdown of the order |
| `pricing.basePriceWithoutTax` | domain.order.Price | read-only | Price excluding tax before any promotion |
| `pricing.basePriceWithoutTax.currencyCode` | order.CurrencyCodeEnum | read-only | Currency code — one of `AUD`, `CAD`, `CZK`, `EUR`, `GBP`, `INR`, `LTL`, `MAD`, `N/A`, `PLN`, `SGD`, `TND`, … |
| `pricing.basePriceWithoutTax.text` | string | read-only | Human-readable price with currency, e.g. "6.08 EUR" |
| `pricing.basePriceWithoutTax.value` | number | read-only | The effective price as a number, e.g. 6.08 |
| `pricing.discount` | domain.order.Price | read-only | Total reduction applied by promotions, as a positive amount (0 if none) |
| `pricing.discount.currencyCode` | order.CurrencyCodeEnum | read-only | Currency code — one of `AUD`, `CAD`, `CZK`, `EUR`, `GBP`, `INR`, `LTL`, `MAD`, `N/A`, `PLN`, `SGD`, `TND`, … |
| `pricing.discount.text` | string | read-only | Human-readable price with currency, e.g. "6.08 EUR" |
| `pricing.discount.value` | number | read-only | The effective price as a number, e.g. 6.08 |
| `pricing.finalPriceWithTax` | domain.order.Price | read-only | Final price including tax, after any reduction |
| `pricing.finalPriceWithTax.currencyCode` | order.CurrencyCodeEnum | read-only | Currency code — one of `AUD`, `CAD`, `CZK`, `EUR`, `GBP`, `INR`, `LTL`, `MAD`, `N/A`, `PLN`, `SGD`, `TND`, … |
| `pricing.finalPriceWithTax.text` | string | read-only | Human-readable price with currency, e.g. "6.08 EUR" |
| `pricing.finalPriceWithTax.value` | number | read-only | The effective price as a number, e.g. 6.08 |
| `pricing.finalPriceWithoutTax` | domain.order.Price | read-only | Final price excluding tax, after any reduction |
| `pricing.finalPriceWithoutTax.currencyCode` | order.CurrencyCodeEnum | read-only | Currency code — one of `AUD`, `CAD`, `CZK`, `EUR`, `GBP`, `INR`, `LTL`, `MAD`, `N/A`, `PLN`, `SGD`, `TND`, … |
| `pricing.finalPriceWithoutTax.text` | string | read-only | Human-readable price with currency, e.g. "6.08 EUR" |
| `pricing.finalPriceWithoutTax.value` | number | read-only | The effective price as a number, e.g. 6.08 |
| `pricing.tax` | domain.order.Price | read-only | Tax amount on the final price |
| `pricing.tax.currencyCode` | order.CurrencyCodeEnum | read-only | Currency code — one of `AUD`, `CAD`, `CZK`, `EUR`, `GBP`, `INR`, `LTL`, `MAD`, `N/A`, `PLN`, `SGD`, `TND`, … |
| `pricing.tax.text` | string | read-only | Human-readable price with currency, e.g. "6.08 EUR" |
| `pricing.tax.value` | number | read-only | The effective price as a number, e.g. 6.08 |
| `url` | string | read-only | Payment/finalization URL where the customer completes and pays the order |
| `zone` | domain.order.ZoneOptions | read-only | DNS zone options applied to the order |
| `zone.anycast` | boolean |  | Enable Anycast on the DNS zone. Applied only when a new zone is created (create=true and no existing zone); ignored otherwise. |
| `zone.create` | boolean |  | Whether to create the DNS zone along with the domain. Defaults to true if omitted. |
| `zone.dnssec` | boolean |  | Enable DNSSEC on the DNS zone. Applied only when a new zone is created (create=true and no existing zone); defaults to true in that case when omitted. |

```json
{
  "contacts": {
    "admin": "string",
    "owner": {
      "id": 0
    },
    "tech": "string"
  },
  "contracts": [
    {
      "name": "string",
      "url": "string"
    }
  ],
  "dns": [
    "string"
  ],
  "domain": "string",
  "duration": "string",
  "orderId": 0,
  "pricing": {
    "basePriceWithoutTax": {
      "currencyCode": "AUD",
      "text": "string",
      "value": 0
    },
    "discount": {
      "currencyCode": "AUD",
      "text": "string",
      "value": 0
    },
    "finalPriceWithTax": {
      "currencyCode": "AUD",
      "text": "string",
      "value": 0
    },
    "finalPriceWithoutTax": {
      "currencyCode": "AUD",
      "text": "string",
      "value": 0
    },
    "tax": {
      "currencyCode": "AUD",
      "text": "string",
      "value": 0
    }
  },
  "url": "string",
  "zone": {
    "anycast": true,
    "create": true,
    "dnssec": true
  }
}
```

### Example

```bash
curl -X POST \
  "https://api.eu.ovhcloud.com/1.0/domain/order/create" \
  -H "accept: application/json" \
  -H "authorization: Bearer $OVH_TOKEN" \
  -H "content-type: application/json" \
  -d '{ }'
```

```python
'''
First, install the latest release of Python wrapper: $ pip install ovh
'''
import json
import ovh

# Instantiate an OVH Client.
# You can generate new credentials with full access to your account on
# the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
client = ovh.Client(
	endpoint='ovh-eu',               # Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
	application_key='xxxxxxxxxx',    # Application Key
	application_secret='xxxxxxxxxx', # Application Secret
	consumer_key='xxxxxxxxxx',       # Consumer Key
)

# Request body type: domain.order.OrderRequest
result = client.post("/domain/order/create",
	contacts = None, # Admin, tech and owner contacts (type: domain.order.Contacts, nullable)
	dns = None, # List of DNS servers (hostnames) to set on the domain. Optional: if omitted, OVHcloud's recommended DNS servers for the domain are used. (type: array, nullable)
	domain = None, # Fully-qualified domain name to order, including the extension (e.g. example.com) (type: string)
	duration = None, # Order duration in ISO-8601 format, whole years only (e.g. P1Y). Allowed values depend on the extension's registry configuration; an unsupported duration is rejected. Defaults to P1Y if omitted. (type: string, nullable)
	priceAcknowledge = None, # Price the customer acknowledged before placing the order. Required for aftermarket or premium domains, optional otherwise. Its value/currency must equal the retail price quoted for this domain (e.g. via a dryRun order); a mismatch rejects the order. (type: domain.order.PriceAcknowledge, nullable)
	promoCodes = None, # Promotion codes to apply. Optional. (type: array, nullable)
	waiveRetractationPeriod = None, # Acknowledgment that the customer waives the legal retractation period. Must be set to true to place the order. (type: boolean, nullable)
	zone = None, # DNS zone options (type: domain.order.ZoneOptions, nullable)
)

# Pretty print
print(json.dumps(result, indent=4))
```

```php
<?php
/**
 * First, download the latest release of PHP wrapper on github
 * And include this script into the folder with extracted files
 */
require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

/**
 * Instantiate an OVH Client.
 * You can generate new credentials with full access to your account on
 * the token creation page (https://api.ovh.com/createToken/index.cgi?GET=/*&PUT=/*&POST=/*&DELETE=/*)
 */
$ovh = new Api('xxxxxxxxxx',  // Application Key
               'xxxxxxxxxx',  // Application Secret
               'ovh-eu',      // Endpoint of API OVH (List of available endpoints: https://github.com/ovh/python-ovh#2-configure-your-application)
               'xxxxxxxxxx'); // Consumer Key

// Request body type: domain.order.OrderRequest
$result = $ovh->post("/domain/order/create", array(
	contacts => null, // Admin, tech and owner contacts (type: domain.order.Contacts, nullable)
	dns => null, // List of DNS servers (hostnames) to set on the domain. Optional: if omitted, OVHcloud's recommended DNS servers for the domain are used. (type: array, nullable)
	domain => null, // Fully-qualified domain name to order, including the extension (e.g. example.com) (type: string)
	duration => null, // Order duration in ISO-8601 format, whole years only (e.g. P1Y). Allowed values depend on the extension's registry configuration; an unsupported duration is rejected. Defaults to P1Y if omitted. (type: string, nullable)
	priceAcknowledge => null, // Price the customer acknowledged before placing the order. Required for aftermarket or premium domains, optional otherwise. Its value/currency must equal the retail price quoted for this domain (e.g. via a dryRun order); a mismatch rejects the order. (type: domain.order.PriceAcknowledge, nullable)
	promoCodes => null, // Promotion codes to apply. Optional. (type: array, nullable)
	waiveRetractationPeriod => null, // Acknowledgment that the customer waives the legal retractation period. Must be set to true to place the order. (type: boolean, nullable)
	zone => null, // DNS zone options (type: domain.order.ZoneOptions, nullable)
));

print_r($result);
?>
```
