In a previous company, we used to have protobuf definitions for all events in the same file as the service definition.
We built a standardized library in every language to support a roughly uniform experience and standard event structure.
That took care of API documentation.
Closest public example would be Dapr I feel.
In the company I consult now, it's all on Python.
We're shifting away from celery to an internal library built as a glue between fastapi and google cloud tasks (hopefully we'll open source it some day).
So now all tasks are also http API endpoints documented the same way as rest of the services. i.e. OpenAPI