Project Schema
This document describes the Project object schema returned by the globalMOO API.
Structure
{
"id": 456, // Unique identifier
"createdAt": "2025-01-31T10:00:00.000Z", // Creation timestamp
"updatedAt": "2025-01-31T10:00:00.000Z", // Last update timestamp
"disabledAt": null, // Optional disable timestamp
"developedAt": "2025-01-31T15:00:00.000Z", // Timestamp when project was developed
"name": "Q1 Planning", // Project name
"inputCount": 3, // Number of input variables
"minimums": [0, 0, 0], // Minimum values for each input
"maximums": [1, 1, 1], // Maximum values for each input
"inputTypes": ["float", "float", "float"], // Type of each input variable
"categories": [ // Categories for categorical inputs
["red", "green", "blue"],
[],
[]
],
"inputCases": [ // Input test cases
[0.1, 0.2, 0.7],
[0.3, 0.3, 0.4],
[0.5, 0.1, 0.4]
],
"caseCount": 3, // Number of test cases
"trials": [ // Associated trials
{
"id": 789,
// ... other trial properties
}
]
}
Fields
id
integer
Unique identifier for the project
createdAt
string (ISO 8601)
Timestamp when the project was created
updatedAt
string (ISO 8601)
Timestamp when the project was last updated
disabledAt
string (ISO 8601) or null
Timestamp when the project was disabled, null if active
developedAt
string (ISO 8601) or null
Timestamp when the project was developed, null if not developed
name
string
Name of the project (minimum 4 characters)
inputCount
integer
Number of input variables in the optimization model
minimums
array of numbers
Minimum allowed values for each input variable
maximums
array of numbers
Maximum allowed values for each input variable
inputTypes
array of strings
Type of each input variable (boolean, category, float, integer)
categories
array of arrays
For categorical inputs, the possible values for each input
inputCases
array of arrays
Test cases with specific input values
caseCount
integer
Number of test cases
Input Types
boolean
Boolean input (0 or 1)
category
Categorical input (from a predefined set of options)
float
Floating point number input
integer
Integer number input
SDK Representations
JavaScript SDK
In the JavaScript SDK, the Project object uses snake_case naming for fields, translating from the API's camelCase:
{
id: 456,
created_at: Date("2025-01-31T10:00:00.000Z"), // Converted to Date object
updated_at: Date("2025-01-31T10:00:00.000Z"), // Converted to Date object
disabled_at: null,
developed_at: Date("2025-01-31T15:00:00.000Z"), // Converted to Date object
name: "Q1 Planning",
input_count: 3,
minimums: [0, 0, 0],
maximums: [1, 1, 1],
input_types: ["float", "float", "float"], // Simple strings in lowercase
categories: [
["red", "green", "blue"],
[],
[]
],
input_cases: [
[0.1, 0.2, 0.7],
[0.3, 0.3, 0.4],
[0.5, 0.1, 0.4]
],
case_count: 3,
trials: [
// Trial objects
]
}
Python SDK
The Python SDK also uses snake_case naming and converts timestamps to datetime objects:
Project(
id=456,
created_at=datetime(2025, 1, 31, 10, 0, 0), # Converted to datetime object
updated_at=datetime(2025, 1, 31, 10, 0, 0), # Converted to datetime object
disabled_at=None,
developed_at=datetime(2025, 1, 31, 15, 0, 0), # Converted to datetime object
name="Q1 Planning",
input_count=3,
minimums=[0, 0, 0],
maximums=[1, 1, 1],
input_types=[InputType.FLOAT, InputType.FLOAT, InputType.FLOAT], # Enum values
categories=[
["red", "green", "blue"],
[],
[]
],
input_cases=[
[0.1, 0.2, 0.7],
[0.3, 0.3, 0.4],
[0.5, 0.1, 0.4]
],
case_count=3,
trials=[
# Trial objects
]
)
PHP SDK
The PHP SDK maintains camelCase naming to match the API and converts timestamps to DateTimeImmutable objects:
Project(
id: 456,
createdAt: DateTimeImmutable("2025-01-31T10:00:00.000Z"), // DateTimeImmutable object
updatedAt: DateTimeImmutable("2025-01-31T10:00:00.000Z"), // DateTimeImmutable object
disabledAt: null,
developedAt: DateTimeImmutable("2025-01-31T15:00:00.000Z"), // DateTimeImmutable object
name: "Q1 Planning",
inputCount: 3,
minimums: [0, 0, 0],
maximums: [1, 1, 1],
inputTypes: [InputType::Float, InputType::Float, InputType::Float], // Enum values
categories: [
["red", "green", "blue"],
[],
[]
],
inputCases: [
[0.1, 0.2, 0.7],
[0.3, 0.3, 0.4],
[0.5, 0.1, 0.4]
],
caseCount: 3,
trials: [
// Trial objects
]
)
Examples
Simple Project
{
"id": 456,
"createdAt": "2025-01-31T10:00:00.000Z",
"updatedAt": "2025-01-31T10:00:00.000Z",
"disabledAt": null,
"developedAt": null,
"name": "Basic Project",
"inputCount": 2,
"minimums": [0, 0],
"maximums": [100, 1],
"inputTypes": ["integer", "boolean"],
"categories": [[], []],
"inputCases": [
[50, 1],
[75, 0]
],
"caseCount": 2,
"trials": []
}
Project with Categorical Inputs
{
"id": 789,
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-20T14:45:00.000Z",
"disabledAt": null,
"developedAt": "2025-01-20T15:00:00.000Z",
"name": "Marketing Channel Optimization",
"inputCount": 3,
"minimums": [0, 0, 0],
"maximums": [2, 1, 100000],
"inputTypes": ["category", "boolean", "integer"],
"categories": [
["email", "social", "search"],
[],
[]
],
"inputCases": [
[0, 1, 50000], // email, with remarketing, $50,000 budget
[1, 0, 75000], // social, no remarketing, $75,000 budget
[2, 1, 60000] // search, with remarketing, $60,000 budget
],
"caseCount": 3,
"trials": [
{
"id": 101,
"status": "completed",
"createdAt": "2025-01-20T15:00:00.000Z",
"updatedAt": "2025-01-20T15:10:00.000Z"
}
]
}
Related Endpoints
Last updated