Get desktop application:
View/edit binary Protocol Buffers messages
Used in:
The name of the model this action belongs to.
The name of the action. Must be in lowerCamelCase and be unique across all actions across all models within the schema. This is because in both RPC and GraphQL actions are top-level and so two different models can't both define an actions with the same name.
The type of this action.
Whether this action will be auto-generated by Keel or implemented with a function.
A list of permission rules to apply to this action
A list of assignment expression to be executed as part of this action. Only valid in `type` is ACTION_TYPE_CREATE or ACTION_TYPE_UPDATE
A list of logical expressions to be applied to the database query being executed as part of the action. Not valid if `type` is ACTION_TYPE_CREATE If there are multiple entries in this field they are AND'd.
A list of expressions that perform some kind of validation (likely on the inputs).
A ordered list of order by statements.
The name of the input message type for this action.
The name of the response message type for this action when not a built-in action. This is because built-in action responses are determined by the action type (get, list, create, update, delete).
Embedded data can be attached to the response message of built in actions (get, list).
Field names to facet on as defined with @facet in the schema.
Describes where and by which party the implementation for an action is provided.
Used in:
,Auto means the implementation of the action is generated by Keel based on the specified action type (get, create, update, list, delete)
Custom means the implementation of the action is provided via custom functions code. The code itself is not represented in this proto schema.
Runtime means the implementation of the action is provided in the runtime code.
Describes the behaviour of an action and a preordained input and output specification.
Used in:
, , ,Creates a new record and returns it.
Returns a single record by looking up on a unique field.
Lists records optionally filtering on certain fields. The response would be a an object that supports pagination functionality and contains a "page" of results.
Update a single record by providing a unique lookup and some fields to update. The resulting record is returned.
Delete a record and returns it's ID.
A generic read action.
A generic write action.
Used in:
Used in:
Used in:
Used in:
If true then a "zero" value is used for the field, for example a string has a zero value of "" and a date has a zero value of today
This can be used to explicitly set the default value
Used in:
Used in:
Used in:
Events that can be triggered based on what has been defined in the schema. At the moment, we only support model-level events for create, update and delete mutations. This can be extended to support other kinds of events.
Used in:
The name of this event, for example: account.created
The name of the model.
Action type (create, update or delete).
Used in:
, , ,Used in:
The name of the model this field belongs to.
The name of the field. Must be in lowerCamelCase and be unique within the model.
Info regarding the type of this field
If true then this field is allowed to be null
If true then this field will have a unique constraint added to it meaning a given value can only exist in a single row. Cannot be true if `type.repeated` is true
If set then this field is part of a compount unique constraint with the fields listed. The fields must be part of the same model and they must list this field in their unique_with value.
If true then this field will be set as the primary key for the parent model
If this field is of type TYPE_MODEL then this field indicates which field on _this_ model is the foriegn key. This field should always be populated on the many side of a one-to-many relationship and on the unique side of a one-to-one.
This describes how the default value of this field should be created
This only applies to the foreign key fields that we auto inject. If it is non null it *defines* this field as being a foreign key field, and carries corresponding metadata.
If this field is of type MODEL and the related model has an inverse field to this one, then this field is set to that field name. For example if a Post model has a field called author which is of type Author, and then Author has posts which is of type Post, on the Post.author field this value will be "posts" and on the Author.posts field this value will be "author".
If computed then this field will contain the expression that will be evaluated to determine the value of the field at runtime.
If this field is a sequence this contains information about how the sequence value should be generated
Used in:
The name of the workflow.
The inputs defined on the workflow.
A permission rule which need to be satisfied in order to run the flow.
Used in:
Used in:
Used in:
The name of the job.
The inputs defined on the job.
A permission rule which need to be satisfied in order to run the job.
The schedule as an crontab expression.
Used in:
Name of the input or response message. Either generated from built-in actions, hard-coded into the runtime (e.g. AuthenticateResponseMessage), or specified in the schema using the message keyword.
The input or response fields for this message.
The message could be a Keel type and not an object. Cannot be provided along with fields.
Used in:
Name of the parent message.
Name of the field.
The type of this field.
Set to true if this can be omitted.
Set to true if this can be set to the null value.
Only valid for implicit inputs on built-in actions (ACTION_IMPLEMENTATION_AUTO) This field can be set to a path, from the current model, to a field that should be read from or written to automatically by the runtime. As an example if the parent model had a field called `item` which was a relationship to an `Item` model which itself had a field called `price`, and this input wanted to filter on the item price, then the value of `target` would be ["item", "price"].
Used in:
The name of the model. Must be in PascalCase and be unique within the schema.
The fields this model contains
The actions this model defines. Contains both actions that will be auto generated and also functions
Used in:
The name of the field to perform ordering on.
The direction in which to order.
Used in:
Used in:
, , ,Name of the model this permission rule applies to
Name of the specific action this permission rule applies to. If this field is populated then `action_types` is ignored.
A name of a Role that has been defined in the schema. Cannot be provided if `expression` is provided.
An expression to evaluate at runtime. Cannot be provided if `role_name` is provided.
A list of action types that this permission rule applies to Should not be set if `action_name` is provided.
Used in:
The name of the role
A list of domains to match for this role e.g. myorg.com
A list of specific email addresses to match for this role eg. sarah@myorg.com
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
The name of the subscriber function. e.g. sendWelcomeMail.
The input message for this function. The structure of this is determined by the events handled by this subscriber.
The events which are handled by this subscriber.
Used in:
, ,Used for sensitive data. Encrypted at rest, decrypted on read.
Used for hashing passwords and passcodes with the intention to verify admission.
Any is used in Message types to denote a field with any type.
Used to specify a sort direction argument.
A union type describes a value that can be one of several types. These types are listed in TypeInfo's Union_Names property.
A string literal type which can be used to discriminate on in our Typescript types. TYPE_INFO string_literal_type must also be set.
Markdown rich text field.
Decimal number type; fixed precision.
A vector type.
A file storage type.
A relative period expression string; e.g. `today/next year`
A time duration
Used in:
, ,The type of the field.
If `type` is set to TYPE_ENUM then this value is the name of the the enum that the type refers to.
If this field is set then this type is referring to another model. In the case of TYPE_MODEL this type _is_ the model named here. In the case of other types e.g. TYPE_ID this type is referencing a field on the model named here, and the specific field being referenced is indicated by `field_name`.
This field indicates which field on `model_name` this type is referencing. This field should only be set if `model_name` is set.
Only valid within a Message
If true then is type is an array of it's `type`
A union type describes a value that can be one of several types. When TypeInfo's type property is set to UNION, then any one of the type names listed here can be used as input. Currently only support messages.
For types which are in a union, it is optional to provide a value to discriminate on. This is only useful in TypeScript type generation, where this will make type a string literal type.