Skip to content

Integrations registry (campus.integrations)

Read-only catalog of the first-party integrations Campus offers, served by the auth service at /integrations/v1. The endpoint is public — everything it returns is already observable by starting a connect flow — so it works in both server and device modes without extra authorization.

Records are campus.model.Integration instances (provider, slug, title, description, scopes, connectable, authorize path). If enable/disable flags are added server-side later, they surface behind this same resource.

for integration in campus.integrations.list():
    print(integration.provider, integration.connectable)

campus_python.integrations.v1.IntegrationsRoot

Bases: ResourceRoot

Campus integrations registry resource (auth service, v1).

Usage

client.integrations.list() # -> list[campus.model.Integration]

Source code in campus_python/integrations/v1/__init__.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class IntegrationsRoot(ResourceRoot):
    """Campus integrations registry resource (auth service, v1).

    Usage:
        client.integrations.list()  # -> list[campus.model.Integration]
    """

    # Trailing slash matches the Flask route (GET /integrations/v1/);
    # make_path() preserves it verbatim.
    url_prefix: str = "/integrations/v1/"

    def list(self) -> "list[campus.model.Integration]":
        """List the first-party integrations Campus offers.

        Returns:
            list[campus.model.Integration]: Registry entries with
            public catalog metadata only (no secrets). If
            enable/disable flags are added server-side later, they
            surface behind this same resource.
        """
        body = self._get_json(self.make_path())
        return [
            campus.model.Integration.from_resource(item)
            for item in body.get("integrations", [])
        ]

url_prefix: str = '/integrations/v1/' class-attribute instance-attribute

list() -> list[campus.model.Integration]

List the first-party integrations Campus offers.

Returns:

Type Description
list[Integration]

list[campus.model.Integration]: Registry entries with

list[Integration]

public catalog metadata only (no secrets). If

list[Integration]

enable/disable flags are added server-side later, they

list[Integration]

surface behind this same resource.

Source code in campus_python/integrations/v1/__init__.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def list(self) -> "list[campus.model.Integration]":
    """List the first-party integrations Campus offers.

    Returns:
        list[campus.model.Integration]: Registry entries with
        public catalog metadata only (no secrets). If
        enable/disable flags are added server-side later, they
        surface behind this same resource.
    """
    body = self._get_json(self.make_path())
    return [
        campus.model.Integration.from_resource(item)
        for item in body.get("integrations", [])
    ]