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.
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.
BaseObjectType
Base GraphQL object type for all NetBox objects. Restricts the model queryset to enforce object permissions.
NetBoxObjectType
Bases: ChangelogMixin, CustomFieldsMixin, JournalEntriesMixin, TagsMixin, BaseObjectType
GraphQL type for most NetBox models. Includes support for custom fields, change logging, journaling, and tags.
REST API
Plugins can declare custom endpoints on NetBox's REST API to retrieve or manipulate models or other data. These behave very similarly to views, except that i...
Background Jobs
NetBox plugins can defer certain operations by enqueuing background jobs, which are executed asynchronously by background workers. This is helpful for decoup...