> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.goodflag.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.goodflag.com/_mcp/server.

# Signer une zone de données

POST /LP2DDocBox/creator/signDataZone
Content-Type: application/json

Signe une zone de données avec la clé de signature ECDSA, ou une source Code2DDoc dont la zone de données est d'abord construite. Renvoie la zone de données, la valeur de signature et le code 2D-Doc signé complet.

**Authentification :** certificat client (mutual TLS).

Reference: https://docs.goodflag.com/2d-doc/api-reference/documentation-api/zones-de-donnees/sign-data-zone

## Request

### Body (application/json)

This endpoint expects an object.

- `dataZoneSignatureSource` (object, required) — La zone de données ou la source à signer.
  - `password` (string, required) — Mot de passe d'accès à la clé de signature de code 2D-Doc.
  - `dataZoneSource` (object, optional) — La source Code2DDoc dont la zone de données est construite avant signature. Ignorée quand dataZone est fourni.
    - `source` (string, required) — Le document XML Code2DDoc décrivant la zone de données, encodé en Base64. Un schéma XML par type de document, fourni séparément.
  - `dataZone` (string, optional) — Une zone de données déjà construite, encodée en Base64. Prioritaire sur dataZoneSource.
- `requestID` (string, optional) — Identifiant de la requête défini par l'appelant, renvoyé tel quel dans la réponse. Facultatif dans les appels REST ; requis par le schéma XML du contrat SOAP.

## Response

### 200

Le 2D-Doc signé. Les erreurs métier sont renvoyées en HTTP 200 : result porte un majorCode non nul.

- `result` (object, required) — Résultat de l'opération.
  - `majorCode` (integer, required) — Code majeur de retour. 0 : succès. 1 : requête mal formée ou données d'entrée incohérentes. 2 : erreur lors du traitement par le serveur.
  - `minorCode` (integer, required) — Détail de l'échec quand majorCode vaut 2. Les codes sont listés dans la présentation de l'API.
  - `message` (string, required) — Message d'information lisible.
- `signed2DDoc` (object, optional) — Le 2D-Doc signé. Absent quand la signature n'a pu être générée.
  - `dataZone` (string, required) — La zone de données signée, encodée en Base64.
  - `signatureValue` (string, required) — La signature ECDSA de la zone de données, encodée en Base64.
  - `signedCode` (string, required) — Le code 2D-Doc complet (zone de données et signature), encodé en Base64. Il est encodé selon les spécifications de l'ANTS pour être enregistré dans un Datamatrix : c'est la valeur à rendre dans le code-barres.
- `requestID` (string, optional) — L'identifiant donné dans la requête.

## Errors

### 400 Sign Data Zone Request Bad Request Error

Bad Request. La requête n'est pas conforme au protocole HTTP. Les erreurs métier ne sont pas signalées par ce statut : elles sont renvoyées en HTTP 200 dans result.

- `any`

## Examples

### 2D-Doc signé à partir d'une zone de données

**Request**

```json
{
  "dataZoneSignatureSource": {
    "password": "password"
  }
}
```

**Response**

```json
{
  "result": {
    "majorCode": 0,
    "minorCode": 0,
    "message": "OK"
  },
  "signed2DDoc": {
    "dataZone": "REMwNEZSMDAwMDAxMTI1RTEyNUMwMDAxRlIxME1MTEUvU0FNUExFL0FOR0VMQR0yMB0yMUJBVCAyIEVURyAzHTIyNyBQTCBEVSBNQUwgSkVBTiBERSBMQVRUUkUgREUgVEFTU0lHTlkeMjMdMjQ1NzAwMDI1TUVUWh0yNkZS",
    "signatureValue": "WpSAR7UShOdTNpQumYI09FiBIQk6Nd4rHm/b28oc3RTZrg8vWDH9crFssyEshSDkfJvLDrin9CCYsVi0LtV+Hw==",
    "signedCode": "REMwNEZSMDAwMDAxMTI1RTEyNUMwMDAxRlIxME1MTEUvU0FNUExFL0FOR0VMQR0yMB0yMUJBVCAyIEVURyAzHTIyNyBQTCBEVSBNQUwgSkVBTiBERSBMQVRUUkUgREUgVEFTU0lHTlkeMjMdMjQ1NzAwMDI1TUVUWh0yNkZSH0xLS0lBUjVWQ0tDT09VWldTUVhKVEFSVTZSTUlDSUlKSEkyNTRLWTZON041WFNRNDNVS05UTFFQRjVNREQ3TFNXRldMR0lKTVFVUU9JN0UzWk1ITFJKN1VFQ01MQ1dGVUYzS1g0SFk="
  },
  "requestID": "Test"
}
```

**SDK Code**

```python 2D-Doc signé à partir d'une zone de données
import requests

url = "https://api.example.com/LP2DDocBox/creator/signDataZone"

payload = { "dataZoneSignatureSource": { "password": "password" } }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript 2D-Doc signé à partir d'une zone de données
const url = 'https://api.example.com/LP2DDocBox/creator/signDataZone';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"dataZoneSignatureSource":{"password":"password"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go 2D-Doc signé à partir d'une zone de données
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.example.com/LP2DDocBox/creator/signDataZone"

	payload := strings.NewReader("{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby 2D-Doc signé à partir d'une zone de données
require 'uri'
require 'net/http'

url = URI("https://api.example.com/LP2DDocBox/creator/signDataZone")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java 2D-Doc signé à partir d'une zone de données
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.example.com/LP2DDocBox/creator/signDataZone")
  .header("Content-Type", "application/json")
  .body("{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}")
  .asString();
```

```php 2D-Doc signé à partir d'une zone de données
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.example.com/LP2DDocBox/creator/signDataZone', [
  'body' => '{
  "dataZoneSignatureSource": {
    "password": "password"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp 2D-Doc signé à partir d'une zone de données
using RestSharp;

var client = new RestClient("https://api.example.com/LP2DDocBox/creator/signDataZone");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift 2D-Doc signé à partir d'une zone de données
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["dataZoneSignatureSource": ["password": "password"]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.example.com/LP2DDocBox/creator/signDataZone")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### 2D-Doc signé à partir d'une source Code2DDoc

**Request**

```json
{
  "dataZoneSignatureSource": {
    "password": "password"
  }
}
```

**Response**

```json
{
  "result": {
    "majorCode": 0,
    "minorCode": 0,
    "message": "OK"
  },
  "signed2DDoc": {
    "dataZone": "REMwNEZSMDAwMDAxMTI1RTEyNUMwMDAxRlIxME1MTEUvU0FNUExFL0FOR0VMQR0yMB0yMUJBVCAyIEVURyAzHTIyNyBQTCBEVSBNQUwgSkVBTiBERSBMQVRUUkUgREUgVEFTU0lHTlkeMjMdMjQ1NzAwMDI1TUVUWh0yNkZS",
    "signatureValue": "v7agRKy5WnCBEEeakd9UtgZ0ROrTwW4TAKjwi+H5k+sO/o+nf9nbAi6Nkxc0IPIJ2rxedEw53XnJkRff/NjbzQ==",
    "signedCode": "REMwNEZSMDAwMDAxMTI1RTEyNUMwMDAxRlIxME1MTEUvU0FNUExFL0FOR0VMQR0yMB0yMUJBVCAyIEVURyAzHTIyNyBQTCBEVSBNQUwgSkVBTiBERSBMQVRUUkUgREUgVEFTU0lHTlkeMjMdMjQ1NzAwMDI1TUVUWh0yNkZSH1g2M0tBUkZNWEZOSEJBSVFJNk5KRFgyVVdZREhJUkhLMlBBVzRFWUFWRFlJWFlQWlNQVlE1N1VQVTU3NVRXWUNGMkdaR0ZaVUVEWkFUV1Y0TFoyRVlPTzVQSEVaQ0Y2NzdUTU5YVEk="
  },
  "requestID": "Test"
}
```

**SDK Code**

```python 2D-Doc signé à partir d'une source Code2DDoc
import requests

url = "https://api.example.com/LP2DDocBox/creator/signDataZone"

payload = { "dataZoneSignatureSource": { "password": "password" } }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript 2D-Doc signé à partir d'une source Code2DDoc
const url = 'https://api.example.com/LP2DDocBox/creator/signDataZone';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"dataZoneSignatureSource":{"password":"password"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go 2D-Doc signé à partir d'une source Code2DDoc
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.example.com/LP2DDocBox/creator/signDataZone"

	payload := strings.NewReader("{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby 2D-Doc signé à partir d'une source Code2DDoc
require 'uri'
require 'net/http'

url = URI("https://api.example.com/LP2DDocBox/creator/signDataZone")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java 2D-Doc signé à partir d'une source Code2DDoc
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.example.com/LP2DDocBox/creator/signDataZone")
  .header("Content-Type", "application/json")
  .body("{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}")
  .asString();
```

```php 2D-Doc signé à partir d'une source Code2DDoc
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.example.com/LP2DDocBox/creator/signDataZone', [
  'body' => '{
  "dataZoneSignatureSource": {
    "password": "password"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp 2D-Doc signé à partir d'une source Code2DDoc
using RestSharp;

var client = new RestClient("https://api.example.com/LP2DDocBox/creator/signDataZone");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"dataZoneSignatureSource\": {\n    \"password\": \"password\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift 2D-Doc signé à partir d'une source Code2DDoc
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["dataZoneSignatureSource": ["password": "password"]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.example.com/LP2DDocBox/creator/signDataZone")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```