For up-to-date interface documentation, please refer to the charmlibs docs.
Interface definitions and updates should be contributed to the charmlibs monorepo.
The purpose of the repository is to outline the behavior and requirements for key interface names, ensuring that charms claiming to implement a certain interface actually are capable of being integrated with each other.
Contributing a new interface specification is a lightweight process.
For the time being, to see available interfaces, their statuses, and schemas, browse the interfaces directory.
In order to automatically validate whether a charm satisfies a given relation interface, the relation interface maintainer(s) need to write one or more relation interface tests. A relation interface test is a scenario-based test case which checks that, given an initial context, when a relation event is triggered, the charm will do what the interface specifies. For example, most interface testers will check that, on relation changed, the charm will write a certain value into its (app/unit) databag and that that value matches a certain (Pydantic) schema.
See the tester documentation for more.