# API IPC

L'API IPC permet aux utilisateurs de créer des sockets de domaine UNIX sur lesquelles publier des blockchains. Lorsque la blockchain accepte un sommet / bloc, elle le publie sur une socket et les décisions contenues à l'intérieur sont publiées sur un autre. \
Un nœud exposera cette API uniquement s'il est démarré avec l'argument de ligne de commande `api-ipcs-enabled=true`.

## Format de message IPC

Les messages de socket se composent d'un entier 64 bits au format BigEndian suivi d'octets.

Example:

```cpp
Sending:
    [0x41, 0x76, 0x61, 0x78]
Writes to the socket:
    [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41, 0x76, 0x61, 0x78]
```

## Format d'URL du socket IPC

Les noms des sockets sont de la forme  `<network_id>-<chain_id>-<event_type>`  où  `<event_type>`est soit un `consensus`, soit des `decisions`. Le socket de consensus reçoit des verticies et des blocs et tandis que le socket de décisions reçoit des transactions individuelles.

## Format

Cette API utilise le format RPC `json 2.0`. Pour plus d'informations sur les appels JSON RPC, cliquez [ici](/avalanche-documentation/apis/emettre-des-appels-dapi.md).

## Endpoint

```cpp
/ext/ipcs
```

## Méthodes

### ipcs.publishBlockchain

Enregistrez une blockchain pour qu'elle publie les sommets acceptés sur une socket Unix domain.

**Signature**

```cpp
ipcs.publishBlockchain({blockchainID: string}) -> {consensusURL: string, decisionsURL: string}
```

* `blockchainID` est la blockchain qui publiera les sommets acceptés.
* `consensusURL` est le chemin de la socket domain Unix sur laquelle les sommets sont publiés.
* `decisionsURL` est le chemin de la socket domain Unix sur laquelle les transactions sont publiées.

**Exemple d'un Appel**

```cpp
curl -X POST --data '{
    "jsonrpc": "2.0",
    "method": "ipcs.publishBlockchain",
    "params":{
        "blockchainID":"11111111111111111111111111111111LpoYY"
    },
    "id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/ipcs
```

**Exemple de Réponse**

```cpp
{
    "jsonrpc":"2.0",
    "result":{
        "decisionsURL":"/tmp/1-11111111111111111111111111111111LpoYY-consensus",
        "consensusURL":"/tmp/1-11111111111111111111111111111111LpoYY-decisions"
    },
    "id":1
}
```

### ipcs.unpublishBlockchain

Désenregistrez une blockchain afin qu'elle ne publie plus sur une socket domain Unix.

**Signature**

```cpp
ipcs.unpublishBlockchain({blockchainID: string}) -> {success: bool}
```

* `blockchainID` est la blockchain qui ne publiera plus sur une socket domain Unix.

**Exemple d'un Appel**

```cpp
curl -X POST --data '{
    "jsonrpc": "2.0",
    "method": "ipcs.unpublishBlockchain",
    "params":{
        "blockchainID":"11111111111111111111111111111111LpoYY"
    },
    "id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/ipcs
```

**Exemple de Réponse**

```cpp
{
    "jsonrpc":"2.0",
    "result":{
        "success":true
    },
    "id":1
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nicolas-avalabs.gitbook.io/avalanche-documentation/apis/ipc-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
