Welcome to Sym’s SDK Docs!

Sym is the security workflow platform made for engineers, by engineers.

We solve the intent-to-execution gap between policies and workflows by providing fast-moving engineering teams with the just-right primitives to roll out best-practice controls.

These are the Python API docs for Sym. For guides and other help, check out our main docs site.

The SDK docs are broken into several core modules, which are described below. Click on one to see the classes and functions available in your Handlers.

annotations

Function annotations to implement Handlers.

templates

Workflow templates that can be declaratively provisioned.

flow

A parameterized instance of a Template.

integrations

Integrations with a host of third-party services.

user

Representations of Users in both Sym and third parties.

event

Triggers for the various steps of a Flow.

resource

Tools for describing Sym Resources.

errors

Common errors that can be thrown.

The Sym SDK is used to customize workflow templates that are exposed by our Terraform provider. Here’s an example using the sym:approve Template!

from sym.sdk.annotations import reducer
from sym.sdk.integrations import pagerduty, okta, slack

@reducer
def get_approvers(evt):
   # The import here uses credentials defined in an Integration in Terraform
   if pagerduty.is_on_call(evt.user, schedule="id_of_eng_on_call"):
      # This is a self-approval in a DM
      return slack.user(evt.user)

   if evt.payload.fields["urgency"] == "Emergency":
      # This is a self-approval in a channel
      return slack.channel("#break-glass", allow_self=True)

   on_call_mgrs = okta.group("OnCallManagers").members()
   # This would cause each on-call manager to be DMed
   return [slack.user(x) for x in on_call_mgrs]

Here’s a video of our CTO Jon doing a walkthrough of SDK functionality.

If you’re interested in using Sym, please reach out!