> For the complete documentation index, see [llms.txt](https://docs.ver.ax/verax-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ver.ax/verax-documentation/discover/modules-standard-library/schemamodule.md).

# SchemaModule

## [Link to the code](https://github.com/Consensys/linea-attestation-registry/blob/dev/contracts/src/stdlib/SchemaModuleV2.sol)

## When to use this module?

An Issuer might want to restrict the Schemas with which an attestation can be issued through his portal. To avoid re-developing this feature for each portal, Verax proposes a standard module to that effect.

Once this module is set for a portal, any attestation request going through the portal will need to use an authorized Schema.

The list of authorized Schemas may change over time, that's why the issuer can add and/or remove authorized Schemas easily via this module.

{% hint style="info" %}
Only the address identified as the 'owner' of a portal can edit the list of authorized Schemas for his portal.
{% endhint %}

## When not to use this module?

If the logic of your authorization mechanism goes beyond "Schema 0x… is/isn't authorized", you'll probably need a custom module to enforce your rules.

## How to use this module?

1. Add one or multiple authorized Schema(s) for a given portal, by calling the `setAuthorizedSchemaIds` function
2. Pass the address of this module when registering your portal
3. Change the list of authorized Schemas for a given portal, by calling the `setAuthorizedSchemaIds`function again
4. An event is emitted when the list is updated, containing all the changes

## How to check the authorized sender(s)?

1. The `SchemaModule` exposes an `authorizedSchemaIds` mapping
2. Anyone can call this public mapping for a portal address and get the list of authorized Schema IDs
