mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* Fix typos in migration-v4.md * Replace typing.List with list typing.List is deprecated since Python 3.9 * Also replace typing.List with list in graphql-api.md
1.0 KiB
1.0 KiB
GraphQL API
Defining the Schema Class
A plugin can extend NetBox's GraphQL API by registering its own schema class. By default, NetBox will attempt to import graphql.schema
from the plugin, if it exists. This path can be overridden by defining graphql_schema
on the PluginConfig instance as the dotted path to the desired Python class. This class must be a subclass of graphene.ObjectType
.
Example
# graphql.py
import strawberry
import strawberry_django
from . import models
@strawberry_django.type(
models.MyModel,
fields='__all__',
)
class MyModelType:
pass
@strawberry.type
class MyQuery:
@strawberry.field
def dummymodel(self, id: int) -> DummyModelType:
return None
dummymodel_list: list[DummyModelType] = strawberry_django.field()
schema = [
MyQuery,
]
GraphQL Objects
NetBox provides two object type classes for use by plugins.
::: netbox.graphql.types.BaseObjectType options: members: false
::: netbox.graphql.types.NetBoxObjectType options: members: false