Build a custom machine
The manifest: machine.yaml
machine: 2 # the manifest format
slug: quote-follow-up # the folder's own name
name: Quote Follow Up
version: 0.1.0
requires: {box: "1.2", sdk: 1} # the Ownbox version it was built on, and the SDK
needs: []
permissions: # nothing is allowed unless it is named here
think: {calls_per_month: 100}
fetch: [api.example.com]
keys: [{name: example, host: api.example.com, label: Example key}]
data: [people:read, conversations:read]
send: [{channel: email, per_day: 20}]
packages: [{name: python-dateutil, version: 2.9.0.post0}]
on_forget: true # required when data names people| Field | Type | Required | Rule |
|---|---|---|---|
machine | integer | Required | 2. |
slug | string | Required | Lowercase letters, digits and -, starting with a letter, 2 to 41 characters. Equal to the folder's name and to sdk.machine("<slug>"). Not one already on the Ownbox. |
name | string | Required | What the owner reads. At most 60 characters. |
version | string | Required | MAJOR.MINOR.PATCH, like 0.1.0. |
requires.box | string | Optional | The Ownbox version it was built on, quoted, like "1.2". An older Ownbox refuses it. |
requires.sdk | integer | Required | 1. An Ownbox on an older SDK refuses it. |
needs | list | Optional | Plan features it needs, like [coworkers]. Default []. Anything here needs requires.box "1.2" or later. |
permissions | mapping | Required | What it may touch (Permissions). {} asks for nothing. |
on_forget | boolean | Conditional | Required, and true, when permissions.data names people:read or people:write. Default false. |
author | mapping | Optional | {name, contact}: a name of at most 60 characters, and an email or an https:// address. |
resources.class | string | Optional | small, standard or large. Default small. The memory, CPU and processes it gets (Limits). An Ownbox refuses a class its memory cannot hold. |
The reader refuses a field it does not know, and suggests the one you meant. A field from an older format names its
new place: sdk: is now requires.sdk. The reader's other fields (config, screens, coworkers, suites,
in_process, pack) belong to the machines that ship with the Ownbox; a custom machine declares its pages in code,
with m.screen.