Copy as Markdown[View as Markdown](/docs/sdk/functions/writeDiagram.md)

***

# Function: writeDiagram()

> **writeDiagram**(`directory`): (`diagram`, `options`) => `Promise`<`void`>

Defined in: diagrams.ts:115

Write a diagram to EventCatalog.

You can optionally override the path of the diagram.

## Parameters[​](#parameters "Direct link to Parameters")

| Parameter   | Type     |
| ----------- | -------- |
| `directory` | `string` |

## Returns[​](#returns "Direct link to Returns")

`Function`

### Parameters[​](#parameters-1 "Direct link to Parameters")

| Parameter                         | Type                                                                                                           |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `diagram`                         | `Diagram`                                                                                                      |
| `options`                         | { `format`: `"md"` \| `"mdx"`; `override`: `boolean`; `path`: `string`; `versionExistingContent`: `boolean`; } |
| `options.format`?                 | `"md"` \| `"mdx"`                                                                                              |
| `options.override`?               | `boolean`                                                                                                      |
| `options.path`?                   | `string`                                                                                                       |
| `options.versionExistingContent`? | `boolean`                                                                                                      |

### Returns[​](#returns-1 "Direct link to Returns")

`Promise`<`void`>

## Example[​](#example "Direct link to Example")

```
import utils from '@eventcatalog/utils';

const { writeDiagram } = utils('/path/to/eventcatalog');

// Write a diagram to the catalog
// Diagram would be written to diagrams/ArchitectureDiagram
await writeDiagram({
  id: 'ArchitectureDiagram',
  name: 'Architecture Diagram',
  version: '0.0.1',
  summary: 'Architecture diagram',
  markdown: '# Architecture Diagram',
});

// Write a diagram to the catalog but override the path
// Diagram would be written to diagrams/System/ArchitectureDiagram
await writeDiagram({
   id: 'ArchitectureDiagram',
   name: 'Architecture Diagram',
   version: '0.0.1',
   summary: 'Architecture diagram',
   markdown: '# Architecture Diagram',
}, { path: "/System/ArchitectureDiagram"});

// Write a diagram to the catalog and override the existing content (if there is any)
await writeDiagram({
   id: 'ArchitectureDiagram',
   name: 'Architecture Diagram',
   version: '0.0.1',
   summary: 'Architecture diagram',
   markdown: '# Architecture Diagram',
}, { override: true });

// Write a diagram to the catalog and version the previous version
// only works if the new version is greater than the previous version
await writeDiagram({
   id: 'ArchitectureDiagram',
   name: 'Architecture Diagram',
   version: '0.0.1',
   summary: 'Architecture diagram',
   markdown: '# Architecture Diagram',
}, { versionExistingContent: true });
```
