Manifest
Use the Elements Manifest to keep a record of all your endpoint and model definitions, define your security model, and set up handlers for startup and other events in your game or application.
The manifest is a Lua table containing all of the endpoint and model definitions. It is also where you can define the security model and set up handlers for startup and various other events, such as new Profile creation.
Model
All model objects that will be used for client code generation, request parameters, and response objects, must be defined here.
The anatomy of a model object is as such:
description - (string) A description of the model object
properties - (table) A list of properties for this object. This follows two formats:
(property name) - Basic types
description
type
(property name) - Arrays or custom types
description
type
model
Valid Property Types:
"string"
"number"
"integer"
"boolean"
"object"
"array"
Example code:
--example_model.lua
return {
description = "A model object representing a several example properties.",
properties = {
message = {
description = "A simple string message.",
type = "string"
},
message_array = {
description = "An array of messages.",
type = "array",
model = "string"
},
some_other_model = {
description = "Some other model. Must also be defined in manifest.",
type = "object",
model = "some_other_model"
}
}
}
--main.lua
local manifest = {}
manifest.model = {}
manifest.model.example = require "example_model"
manifest.model.some_other_model = require "some_other_model"
return manifest
It is also possible to create a Pagination of any of your model objects here as well! This will allow you to fetch subsets of larger data sets when you want to stagger their retrieval from the client side.
--main.lua
local pagination = require "namazu.pagination"
...
manifest.model.example = require "example_model"
manifest.model.pagination_of_example = pagination.manifest_for("example")
HTTP
The manifest's HTTP definitions are your custom endpoint definitions. Everything that you define here will be found in DefaultApi in the generated client code, as well as tell Elements which endpoint handler functions to call when the client makes a request.
-- <Path to handler> = <operations table>
manifest.http = {
["example_endpoints"] = require "example_endpoints_operations"
}
Startup
Runs the specified scripts whenever Elements launches. This will include restarts made for code changes.
-- Assumes startup.lua exists and has a function "run"
manifest.startup = {
["startup"] = {
operations = {
run = {
method = "run"
}
}
}
}
Events
Events allow you to add special functionality to certain Elements events.
Currently supported events:
"com.namazustudios.elements.service.profile.created" - a new Profile creation event
More coming soon!
-- Example for handling a new Profile creation event
manifest.event = {
["com.namazustudios.elements.service.profile.created"] = {
{ module = "new_profile_event_handler", method = "on_new_profile" }
}
}
Security
local auth = require "namazu.elements.auth"
...
manifest.security = auth.default_security_manifest()
Last updated