{
  "$schema": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.0/schema.json",
  "openapi": "3.0.0",
  "info": {
    "title": "root",
    "version": "1",
    "description": "OpenAPI for root",
    "contact": {}
  },
  "servers": [
    {
      "url": "http://localhost:42000",
      "description": "Local server"
    }
  ],
  "paths": {
    "/v1/action-schema/read": {
      "post": {
        "tags": ["action-schema"],
        "summary": "Read action-schema",
        "operationId": "readActionSchema",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "privacy",
                            "category",
                            "rowGenerationStatus",
                            "status",
                            "lastOperationAt",
                            "lastSizeCalculatedAt",
                            "projectSizeBytes",
                            "delta",
                            "columnSpending",
                            "totalSpending",
                            "itemsAmount",
                            "schema",
                            "schemaDescription"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "privacy",
                            "category",
                            "rowGenerationStatus",
                            "status",
                            "lastOperationAt",
                            "lastSizeCalculatedAt",
                            "projectSizeBytes",
                            "delta",
                            "columnSpending",
                            "totalSpending",
                            "itemsAmount",
                            "schema",
                            "schemaDescription"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "privacy",
                        "category",
                        "rowGenerationStatus",
                        "status",
                        "lastOperationAt",
                        "lastSizeCalculatedAt",
                        "projectSizeBytes",
                        "delta",
                        "columnSpending",
                        "totalSpending",
                        "itemsAmount",
                        "schema",
                        "schemaDescription"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "privacy",
                        "category",
                        "rowGenerationStatus",
                        "status",
                        "lastOperationAt",
                        "lastSizeCalculatedAt",
                        "projectSizeBytes",
                        "delta",
                        "columnSpending",
                        "totalSpending",
                        "itemsAmount",
                        "schema",
                        "schemaDescription"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "default": { "description": "YO" },
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string",
                                "description": "Name of the actionschema. This should determine the location where its saved"
                              },
                              "privacy": {
                                "type": "string",
                                "description": ""
                              },
                              "category": {
                                "type": "string",
                                "description": "Can be filled in by the user"
                              },
                              "rowGenerationStatus": {
                                "type": "string",
                                "description": "status indicating whether or not rows are being generated"
                              },
                              "status": {
                                "type": "string",
                                "description": "State concerning the status of (re)calculation behavior"
                              },
                              "lastOperationAt": {
                                "type": "string",
                                "description": "lastOperationAt"
                              },
                              "lastSizeCalculatedAt": {
                                "type": "string",
                                "description": "lastSizeCalculatedAt"
                              },
                              "projectSizeBytes": {
                                "type": "string",
                                "description": "projectSizeBytes"
                              },
                              "delta": {
                                "type": "string",
                                "description": "delta"
                              },
                              "columnSpending": {
                                "type": "string",
                                "description": "columnSpending"
                              },
                              "totalSpending": {
                                "type": "string",
                                "description": "totalSpending"
                              },
                              "itemsAmount": {
                                "type": "string",
                                "description": "Amount of items currently in the db. Should be able to get this from the plugin of the name of the db at some point"
                              },
                              "schema": {
                                "type": "string",
                                "description": "Could be a file read"
                              },
                              "schemaDescription": {
                                "type": "string",
                                "description": "schemaDescription",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "getKeyFromObjectPlugin",
                                      "method": "POST",
                                      "path": "/function/getKeyFromObjectPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "type": "creation",
                                    "context": {
                                      "objectString": "${schema}",
                                      "location": "description"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["schema"]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema/create": {
      "post": {
        "tags": ["action-schema"],
        "summary": "Create action-schema",
        "operationId": "createActionSchema",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string",
                          "description": "Name of the actionschema. This should determine the location where its saved"
                        },
                        "privacy": {
                          "type": "string",
                          "description": ""
                        },
                        "category": {
                          "type": "string",
                          "description": "Can be filled in by the user"
                        },
                        "rowGenerationStatus": {
                          "type": "string",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "type": "string",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "string",
                          "description": "lastOperationAt"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "string",
                          "description": "lastSizeCalculatedAt"
                        },
                        "projectSizeBytes": {
                          "type": "string",
                          "description": "projectSizeBytes"
                        },
                        "delta": {
                          "type": "string",
                          "description": "delta"
                        },
                        "columnSpending": {
                          "type": "string",
                          "description": "columnSpending"
                        },
                        "totalSpending": {
                          "type": "string",
                          "description": "totalSpending"
                        },
                        "itemsAmount": {
                          "type": "string",
                          "description": "Amount of items currently in the db. Should be able to get this from the plugin of the name of the db at some point"
                        },
                        "schema": {
                          "type": "string",
                          "description": "Could be a file read"
                        },
                        "schemaDescription": {
                          "type": "string",
                          "description": "schemaDescription",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "getKeyFromObjectPlugin",
                                "method": "POST",
                                "path": "/function/getKeyFromObjectPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "type": "creation",
                              "context": {
                                "objectString": "${schema}",
                                "location": "description"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["schema"]
                            }
                          ]
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema/update": {
      "post": {
        "tags": ["action-schema"],
        "summary": "Update action-schema",
        "operationId": "updateActionSchema",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string",
                        "description": "Name of the actionschema. This should determine the location where its saved"
                      },
                      "privacy": {
                        "type": "string",
                        "description": ""
                      },
                      "category": {
                        "type": "string",
                        "description": "Can be filled in by the user"
                      },
                      "rowGenerationStatus": {
                        "type": "string",
                        "description": "status indicating whether or not rows are being generated"
                      },
                      "status": {
                        "type": "string",
                        "description": "State concerning the status of (re)calculation behavior"
                      },
                      "lastOperationAt": {
                        "type": "string",
                        "description": "lastOperationAt"
                      },
                      "lastSizeCalculatedAt": {
                        "type": "string",
                        "description": "lastSizeCalculatedAt"
                      },
                      "projectSizeBytes": {
                        "type": "string",
                        "description": "projectSizeBytes"
                      },
                      "delta": {
                        "type": "string",
                        "description": "delta"
                      },
                      "columnSpending": {
                        "type": "string",
                        "description": "columnSpending"
                      },
                      "totalSpending": {
                        "type": "string",
                        "description": "totalSpending"
                      },
                      "itemsAmount": {
                        "type": "string",
                        "description": "Amount of items currently in the db. Should be able to get this from the plugin of the name of the db at some point"
                      },
                      "schema": {
                        "type": "string",
                        "description": "Could be a file read"
                      },
                      "schemaDescription": {
                        "type": "string",
                        "description": "schemaDescription",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "getKeyFromObjectPlugin",
                              "method": "POST",
                              "path": "/function/getKeyFromObjectPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "type": "creation",
                            "context": {
                              "objectString": "${schema}",
                              "location": "description"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["schema"]
                          }
                        ]
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",

                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema/execute": {
      "put": {
        "tags": ["action-schema"],
        "summary": "Execute action-schema",
        "operationId": "generateActionSchema",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "__id",
                      "privacy",
                      "category",
                      "rowGenerationStatus",
                      "status",
                      "lastOperationAt",
                      "lastSizeCalculatedAt",
                      "projectSizeBytes",
                      "delta",
                      "columnSpending",
                      "totalSpending",
                      "itemsAmount",
                      "schema",
                      "schemaDescription"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema": {
      "delete": {
        "tags": ["action-schema"],
        "summary": "Delete action-schema",
        "operationId": "deleteActionSchema",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema-plugin/read": {
      "post": {
        "tags": ["action-schema-plugin"],
        "summary": "Read action-schema-plugin",
        "operationId": "readActionSchemaPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": ["__id", "headers", "openapi", "hasLocalhost"]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": ["__id", "headers", "openapi", "hasLocalhost"]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": ["__id", "headers", "openapi", "hasLocalhost"]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": ["__id", "headers", "openapi", "hasLocalhost"]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string",
                                "description": "Hostname e.g. api.codefromanywhere.com"
                              },
                              "headers": {
                                "type": "string",
                                "description": ""
                              },
                              "openapi": {
                                "type": "string",
                                "description": "Should be able to scrape this"
                              },
                              "hasLocalhost": {
                                "type": "boolean",
                                "description": "If true, this means its our own server so if we're running localhost, this thing should also take localhost"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema-plugin/create": {
      "post": {
        "tags": ["action-schema-plugin"],
        "summary": "Create action-schema-plugin",
        "operationId": "createActionSchemaPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string",
                          "description": "Hostname e.g. api.codefromanywhere.com"
                        },
                        "headers": {
                          "type": "string",
                          "description": ""
                        },
                        "openapi": {
                          "type": "string",
                          "description": "Should be able to scrape this"
                        },
                        "hasLocalhost": {
                          "type": "boolean",
                          "description": "If true, this means its our own server so if we're running localhost, this thing should also take localhost"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema-plugin/update": {
      "post": {
        "tags": ["action-schema-plugin"],
        "summary": "Update action-schema-plugin",
        "operationId": "updateActionSchemaPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string",
                        "description": "Hostname e.g. api.codefromanywhere.com"
                      },
                      "headers": {
                        "type": "string",
                        "description": ""
                      },
                      "openapi": {
                        "type": "string",
                        "description": "Should be able to scrape this"
                      },
                      "hasLocalhost": {
                        "type": "boolean",
                        "description": "If true, this means its our own server so if we're running localhost, this thing should also take localhost"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema-plugin/execute": {
      "put": {
        "tags": ["action-schema-plugin"],
        "summary": "Execute action-schema-plugin",
        "operationId": "generateActionSchemaPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": ["__id", "headers", "openapi", "hasLocalhost"],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/action-schema-plugin": {
      "delete": {
        "tags": ["action-schema-plugin"],
        "summary": "Delete action-schema-plugin",
        "operationId": "deleteActionSchemaPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/ai-plugin/read": {
      "post": {
        "tags": ["ai-plugin"],
        "summary": "Read ai-plugin",
        "operationId": "readAiPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "extra",
                            "productionStatus",
                            "lifecycleStatus",
                            "categories",
                            "isPublic",
                            "source",
                            "ipRangesAllowed",
                            "slug",
                            "persona",
                            "isLocal",
                            "packageName",
                            "status",
                            "isUnstable",
                            "isUnauthorized",
                            "statusMessage",
                            "emoji",
                            "aiPluginJson",
                            "openapi",
                            "capabilitiesObject",
                            "platforms",
                            "generatedInputs",
                            "generatedInputsVersion",
                            "testResultAt",
                            "testResultVersion",
                            "testResultSuccessful",
                            "testResultFailed",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "extra",
                            "productionStatus",
                            "lifecycleStatus",
                            "categories",
                            "isPublic",
                            "source",
                            "ipRangesAllowed",
                            "slug",
                            "persona",
                            "isLocal",
                            "packageName",
                            "status",
                            "isUnstable",
                            "isUnauthorized",
                            "statusMessage",
                            "emoji",
                            "aiPluginJson",
                            "openapi",
                            "capabilitiesObject",
                            "platforms",
                            "generatedInputs",
                            "generatedInputsVersion",
                            "testResultAt",
                            "testResultVersion",
                            "testResultSuccessful",
                            "testResultFailed",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "extra",
                        "productionStatus",
                        "lifecycleStatus",
                        "categories",
                        "isPublic",
                        "source",
                        "ipRangesAllowed",
                        "slug",
                        "persona",
                        "isLocal",
                        "packageName",
                        "status",
                        "isUnstable",
                        "isUnauthorized",
                        "statusMessage",
                        "emoji",
                        "aiPluginJson",
                        "openapi",
                        "capabilitiesObject",
                        "platforms",
                        "generatedInputs",
                        "generatedInputsVersion",
                        "testResultAt",
                        "testResultVersion",
                        "testResultSuccessful",
                        "testResultFailed",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "extra",
                        "productionStatus",
                        "lifecycleStatus",
                        "categories",
                        "isPublic",
                        "source",
                        "ipRangesAllowed",
                        "slug",
                        "persona",
                        "isLocal",
                        "packageName",
                        "status",
                        "isUnstable",
                        "isUnauthorized",
                        "statusMessage",
                        "emoji",
                        "aiPluginJson",
                        "openapi",
                        "capabilitiesObject",
                        "platforms",
                        "generatedInputs",
                        "generatedInputsVersion",
                        "testResultAt",
                        "testResultVersion",
                        "testResultSuccessful",
                        "testResultFailed",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "extra": {
                                "type": "object",
                                "description": "anything you want to pass to this plugin"
                              },
                              "productionStatus": {
                                "type": "string",
                                "enum": [
                                  "experimental",
                                  "alpha",
                                  "beta",
                                  "production"
                                ],
                                "description": "In order for a plugin to be visible, this needs to be beta or production"
                              },
                              "lifecycleStatus": {
                                "type": "string",
                                "enum": [
                                  "wip",
                                  "buggy",
                                  "broken",
                                  "deprecated"
                                ],
                                "description": "It'd be good to track this for every function. It'd be even better to come up with this automatically using a LLM that generates tests based on the given purpose."
                              },
                              "categories": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "isPublic": {
                                "type": "boolean",
                                "description": "For local plugins, this is false if one of the underlying functions isn't public"
                              },
                              "source": {
                                "type": "string",
                                "enum": [
                                  "local",
                                  "customDomain",
                                  "replicate",
                                  "huggingface",
                                  "bananadev"
                                ],
                                "description": "Where the AI Plugin has been found"
                              },
                              "ipRangesAllowed": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "start": {
                                      "type": "string"
                                    },
                                    "end": {
                                      "type": "string"
                                    }
                                  },
                                  "required": ["start"],
                                  "additionalProperties": false
                                },
                                "description": "To be taken over from managed domain"
                              },
                              "slug": {
                                "type": "string",
                                "description": "Unique identifier for the plugin.\n\n- Can be a domain containing the ai-plugin in `.well-known/ai-plugin.json`. Must be served on https. Can be a subdomain.\n\n- Can be name of a function in kebab-case"
                              },
                              "persona": {},
                              "isLocal": {
                                "type": "boolean",
                                "description": "DEPRECATED: should use `source`.\n\nIf true, this is a locally served plugin and can be accessed by calling the function directly from the sdk"
                              },
                              "packageName": {
                                "type": "string",
                                "description": "in case of local plugin, the operation name should be here"
                              },
                              "status": {
                                "type": "number",
                                "description": "200: if the plugin is found and stable 404: if the plugin is not found on the specified domain (maybe they're down)\n\n...and other Rest Status codes"
                              },
                              "isUnstable": {
                                "type": "boolean",
                                "description": "If the plugin is found and functional but sometimes returns fail, e.g. due to a rate-limit"
                              },
                              "isUnauthorized": {
                                "type": "boolean",
                                "description": "if the plugin is found including openapi, but not available because auth is not working"
                              },
                              "statusMessage": {
                                "type": "string",
                                "description": "Message I got from the fetch, e.g. redirect or whatever"
                              },
                              "emoji": {
                                "type": "string"
                              },
                              "aiPluginJson": {},
                              "openapi": {
                                "description": "this is too difficult for parsing"
                              },
                              "capabilitiesObject": {
                                "description": "Almost entirely based on openapi, but still good to store because it is often needed"
                              },
                              "platforms": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": ["openai", "chatai"]
                                },
                                "description": "At which platforms is this plugin available in the store? For now"
                              },
                              "generatedInputs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Testing stuff"
                              },
                              "generatedInputsVersion": {
                                "type": "string",
                                "description": "Should be matching to `aiPluginJson.schema_version`."
                              },
                              "testResultAt": {
                                "type": "number"
                              },
                              "testResultVersion": {
                                "type": "string",
                                "description": "Usually should be done right after generating new inputs"
                              },
                              "testResultSuccessful": {
                                "type": "number"
                              },
                              "testResultFailed": {
                                "type": "number"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/ai-plugin/create": {
      "post": {
        "tags": ["ai-plugin"],
        "summary": "Create ai-plugin",
        "operationId": "createAiPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "extra": {
                          "type": "object",
                          "description": "anything you want to pass to this plugin"
                        },
                        "productionStatus": {
                          "type": "string",
                          "enum": [
                            "experimental",
                            "alpha",
                            "beta",
                            "production"
                          ],
                          "description": "In order for a plugin to be visible, this needs to be beta or production"
                        },
                        "lifecycleStatus": {
                          "type": "string",
                          "enum": ["wip", "buggy", "broken", "deprecated"],
                          "description": "It'd be good to track this for every function. It'd be even better to come up with this automatically using a LLM that generates tests based on the given purpose."
                        },
                        "categories": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "isPublic": {
                          "type": "boolean",
                          "description": "For local plugins, this is false if one of the underlying functions isn't public"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "local",
                            "customDomain",
                            "replicate",
                            "huggingface",
                            "bananadev"
                          ],
                          "description": "Where the AI Plugin has been found"
                        },
                        "ipRangesAllowed": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "start": {
                                "type": "string"
                              },
                              "end": {
                                "type": "string"
                              }
                            },
                            "required": ["start"],
                            "additionalProperties": false
                          },
                          "description": "To be taken over from managed domain"
                        },
                        "slug": {
                          "type": "string",
                          "description": "Unique identifier for the plugin.\n\n- Can be a domain containing the ai-plugin in `.well-known/ai-plugin.json`. Must be served on https. Can be a subdomain.\n\n- Can be name of a function in kebab-case"
                        },
                        "persona": {},
                        "isLocal": {
                          "type": "boolean",
                          "description": "DEPRECATED: should use `source`.\n\nIf true, this is a locally served plugin and can be accessed by calling the function directly from the sdk"
                        },
                        "packageName": {
                          "type": "string",
                          "description": "in case of local plugin, the operation name should be here"
                        },
                        "status": {
                          "type": "number",
                          "description": "200: if the plugin is found and stable 404: if the plugin is not found on the specified domain (maybe they're down)\n\n...and other Rest Status codes"
                        },
                        "isUnstable": {
                          "type": "boolean",
                          "description": "If the plugin is found and functional but sometimes returns fail, e.g. due to a rate-limit"
                        },
                        "isUnauthorized": {
                          "type": "boolean",
                          "description": "if the plugin is found including openapi, but not available because auth is not working"
                        },
                        "statusMessage": {
                          "type": "string",
                          "description": "Message I got from the fetch, e.g. redirect or whatever"
                        },
                        "emoji": {
                          "type": "string"
                        },
                        "aiPluginJson": {},
                        "openapi": {
                          "description": "this is too difficult for parsing"
                        },
                        "capabilitiesObject": {
                          "description": "Almost entirely based on openapi, but still good to store because it is often needed"
                        },
                        "platforms": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": ["openai", "chatai"]
                          },
                          "description": "At which platforms is this plugin available in the store? For now"
                        },
                        "generatedInputs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Testing stuff"
                        },
                        "generatedInputsVersion": {
                          "type": "string",
                          "description": "Should be matching to `aiPluginJson.schema_version`."
                        },
                        "testResultAt": {
                          "type": "number"
                        },
                        "testResultVersion": {
                          "type": "string",
                          "description": "Usually should be done right after generating new inputs"
                        },
                        "testResultSuccessful": {
                          "type": "number"
                        },
                        "testResultFailed": {
                          "type": "number"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/ai-plugin/update": {
      "post": {
        "tags": ["ai-plugin"],
        "summary": "Update ai-plugin",
        "operationId": "updateAiPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "extra": {
                        "type": "object",
                        "description": "anything you want to pass to this plugin"
                      },
                      "productionStatus": {
                        "type": "string",
                        "enum": ["experimental", "alpha", "beta", "production"],
                        "description": "In order for a plugin to be visible, this needs to be beta or production"
                      },
                      "lifecycleStatus": {
                        "type": "string",
                        "enum": ["wip", "buggy", "broken", "deprecated"],
                        "description": "It'd be good to track this for every function. It'd be even better to come up with this automatically using a LLM that generates tests based on the given purpose."
                      },
                      "categories": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "isPublic": {
                        "type": "boolean",
                        "description": "For local plugins, this is false if one of the underlying functions isn't public"
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "local",
                          "customDomain",
                          "replicate",
                          "huggingface",
                          "bananadev"
                        ],
                        "description": "Where the AI Plugin has been found"
                      },
                      "ipRangesAllowed": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "start": {
                              "type": "string"
                            },
                            "end": {
                              "type": "string"
                            }
                          },
                          "required": ["start"],
                          "additionalProperties": false
                        },
                        "description": "To be taken over from managed domain"
                      },
                      "slug": {
                        "type": "string",
                        "description": "Unique identifier for the plugin.\n\n- Can be a domain containing the ai-plugin in `.well-known/ai-plugin.json`. Must be served on https. Can be a subdomain.\n\n- Can be name of a function in kebab-case"
                      },
                      "persona": {},
                      "isLocal": {
                        "type": "boolean",
                        "description": "DEPRECATED: should use `source`.\n\nIf true, this is a locally served plugin and can be accessed by calling the function directly from the sdk"
                      },
                      "packageName": {
                        "type": "string",
                        "description": "in case of local plugin, the operation name should be here"
                      },
                      "status": {
                        "type": "number",
                        "description": "200: if the plugin is found and stable 404: if the plugin is not found on the specified domain (maybe they're down)\n\n...and other Rest Status codes"
                      },
                      "isUnstable": {
                        "type": "boolean",
                        "description": "If the plugin is found and functional but sometimes returns fail, e.g. due to a rate-limit"
                      },
                      "isUnauthorized": {
                        "type": "boolean",
                        "description": "if the plugin is found including openapi, but not available because auth is not working"
                      },
                      "statusMessage": {
                        "type": "string",
                        "description": "Message I got from the fetch, e.g. redirect or whatever"
                      },
                      "emoji": {
                        "type": "string"
                      },
                      "aiPluginJson": {},
                      "openapi": {
                        "description": "this is too difficult for parsing"
                      },
                      "capabilitiesObject": {
                        "description": "Almost entirely based on openapi, but still good to store because it is often needed"
                      },
                      "platforms": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": ["openai", "chatai"]
                        },
                        "description": "At which platforms is this plugin available in the store? For now"
                      },
                      "generatedInputs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Testing stuff"
                      },
                      "generatedInputsVersion": {
                        "type": "string",
                        "description": "Should be matching to `aiPluginJson.schema_version`."
                      },
                      "testResultAt": {
                        "type": "number"
                      },
                      "testResultVersion": {
                        "type": "string",
                        "description": "Usually should be done right after generating new inputs"
                      },
                      "testResultSuccessful": {
                        "type": "number"
                      },
                      "testResultFailed": {
                        "type": "number"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/ai-plugin/execute": {
      "put": {
        "tags": ["ai-plugin"],
        "summary": "Execute ai-plugin",
        "operationId": "generateAiPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "extra",
                      "productionStatus",
                      "lifecycleStatus",
                      "categories",
                      "isPublic",
                      "source",
                      "ipRangesAllowed",
                      "slug",
                      "persona",
                      "isLocal",
                      "packageName",
                      "status",
                      "isUnstable",
                      "isUnauthorized",
                      "statusMessage",
                      "emoji",
                      "aiPluginJson",
                      "openapi",
                      "capabilitiesObject",
                      "platforms",
                      "generatedInputs",
                      "generatedInputsVersion",
                      "testResultAt",
                      "testResultVersion",
                      "testResultSuccessful",
                      "testResultFailed",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/ai-plugin": {
      "delete": {
        "tags": ["ai-plugin"],
        "summary": "Delete ai-plugin",
        "operationId": "deleteAiPlugin",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/assistant-educative-material/read": {
      "post": {
        "tags": ["assistant-educative-material"],
        "summary": "Read assistant-educative-material",
        "operationId": "readAssistantEducativeMaterial",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "index",
                            "text",
                            "storageRelativeAssetPath",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "index",
                            "text",
                            "storageRelativeAssetPath",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "index",
                        "text",
                        "storageRelativeAssetPath",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "index",
                        "text",
                        "storageRelativeAssetPath",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "personSlug": {
                                "type": "string"
                              },
                              "index": {
                                "type": "number",
                                "description": "If given, the educative material can be sorted on this number, so someone can receive this material day by day."
                              },
                              "text": {
                                "type": "string"
                              },
                              "storageRelativeAssetPath": {
                                "type": "string",
                                "description": "Could be an asset that is related to this that needs to be sent along"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/assistant-educative-material/create": {
      "post": {
        "tags": ["assistant-educative-material"],
        "summary": "Create assistant-educative-material",
        "operationId": "createAssistantEducativeMaterial",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "personSlug": {
                          "type": "string"
                        },
                        "index": {
                          "type": "number",
                          "description": "If given, the educative material can be sorted on this number, so someone can receive this material day by day."
                        },
                        "text": {
                          "type": "string"
                        },
                        "storageRelativeAssetPath": {
                          "type": "string",
                          "description": "Could be an asset that is related to this that needs to be sent along"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/assistant-educative-material/update": {
      "post": {
        "tags": ["assistant-educative-material"],
        "summary": "Update assistant-educative-material",
        "operationId": "updateAssistantEducativeMaterial",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "personSlug": {
                        "type": "string"
                      },
                      "index": {
                        "type": "number",
                        "description": "If given, the educative material can be sorted on this number, so someone can receive this material day by day."
                      },
                      "text": {
                        "type": "string"
                      },
                      "storageRelativeAssetPath": {
                        "type": "string",
                        "description": "Could be an asset that is related to this that needs to be sent along"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/assistant-educative-material/execute": {
      "put": {
        "tags": ["assistant-educative-material"],
        "summary": "Execute assistant-educative-material",
        "operationId": "generateAssistantEducativeMaterial",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "personSlug",
                      "index",
                      "text",
                      "storageRelativeAssetPath",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/assistant-educative-material": {
      "delete": {
        "tags": ["assistant-educative-material"],
        "summary": "Delete assistant-educative-material",
        "operationId": "deleteAssistantEducativeMaterial",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/browser-page-visit/read": {
      "post": {
        "tags": ["browser-page-visit"],
        "summary": "Read browser-page-visit",
        "operationId": "readBrowserPageVisit",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "owner_personSlug",
                            "id",
                            "url",
                            "websiteDomainSlug",
                            "websiteDomain",
                            "managedDomain",
                            "title",
                            "createdAt",
                            "isUrlRobotsAllowed",
                            "isUrlInSitemap",
                            "serpResult",
                            "serpResultSummary",
                            "browserScrapedContent",
                            "browserScrapedContentStripped",
                            "browsersScrapedContentSummary",
                            "fetchScrapedContent",
                            "fetchScrapedContentStripped",
                            "fetchScrapedContentSummary",
                            "localScrapedContent",
                            "localScrapedContentStripped",
                            "localScrapedContentSummary",
                            "remotePuppeteerScrapedContent",
                            "remotePuppeteerScrapedContentStripped",
                            "remotePuppeteerScrapedContentSummary",
                            "finalSummary",
                            "isAuthwall",
                            "isPaywall",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "owner_personSlug",
                            "id",
                            "url",
                            "websiteDomainSlug",
                            "websiteDomain",
                            "managedDomain",
                            "title",
                            "createdAt",
                            "isUrlRobotsAllowed",
                            "isUrlInSitemap",
                            "serpResult",
                            "serpResultSummary",
                            "browserScrapedContent",
                            "browserScrapedContentStripped",
                            "browsersScrapedContentSummary",
                            "fetchScrapedContent",
                            "fetchScrapedContentStripped",
                            "fetchScrapedContentSummary",
                            "localScrapedContent",
                            "localScrapedContentStripped",
                            "localScrapedContentSummary",
                            "remotePuppeteerScrapedContent",
                            "remotePuppeteerScrapedContentStripped",
                            "remotePuppeteerScrapedContentSummary",
                            "finalSummary",
                            "isAuthwall",
                            "isPaywall",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "owner_personSlug",
                        "id",
                        "url",
                        "websiteDomainSlug",
                        "websiteDomain",
                        "managedDomain",
                        "title",
                        "createdAt",
                        "isUrlRobotsAllowed",
                        "isUrlInSitemap",
                        "serpResult",
                        "serpResultSummary",
                        "browserScrapedContent",
                        "browserScrapedContentStripped",
                        "browsersScrapedContentSummary",
                        "fetchScrapedContent",
                        "fetchScrapedContentStripped",
                        "fetchScrapedContentSummary",
                        "localScrapedContent",
                        "localScrapedContentStripped",
                        "localScrapedContentSummary",
                        "remotePuppeteerScrapedContent",
                        "remotePuppeteerScrapedContentStripped",
                        "remotePuppeteerScrapedContentSummary",
                        "finalSummary",
                        "isAuthwall",
                        "isPaywall",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "owner_personSlug",
                        "id",
                        "url",
                        "websiteDomainSlug",
                        "websiteDomain",
                        "managedDomain",
                        "title",
                        "createdAt",
                        "isUrlRobotsAllowed",
                        "isUrlInSitemap",
                        "serpResult",
                        "serpResultSummary",
                        "browserScrapedContent",
                        "browserScrapedContentStripped",
                        "browsersScrapedContentSummary",
                        "fetchScrapedContent",
                        "fetchScrapedContentStripped",
                        "fetchScrapedContentSummary",
                        "localScrapedContent",
                        "localScrapedContentStripped",
                        "localScrapedContentSummary",
                        "remotePuppeteerScrapedContent",
                        "remotePuppeteerScrapedContentStripped",
                        "remotePuppeteerScrapedContentSummary",
                        "finalSummary",
                        "isAuthwall",
                        "isPaywall",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "owner_personSlug": {
                                "type": "string",
                                "description": "If it was executed in a browser of a user using a chrome extension, this can be stored"
                              },
                              "id": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "websiteDomainSlug": {
                                "type": "string",
                                "description": "this is the domain"
                              },
                              "websiteDomain": {},
                              "managedDomain": {},
                              "title": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "number"
                              },
                              "isUrlRobotsAllowed": {
                                "type": "boolean"
                              },
                              "isUrlInSitemap": {
                                "type": "boolean"
                              },
                              "serpResult": {
                                "type": "string",
                                "enum": ["none", "index", "exact"],
                                "description": "What we find if we google the url. Index means it doesn't go to the exact url yet, but rather a page on a more general route"
                              },
                              "serpResultSummary": {
                                "type": "string",
                                "description": "if we google the url and/or title, what do we find?"
                              },
                              "browserScrapedContent": {
                                "type": "string"
                              },
                              "browserScrapedContentStripped": {
                                "type": "string",
                                "description": "as close to just the relevant text as possible"
                              },
                              "browsersScrapedContentSummary": {
                                "type": "string"
                              },
                              "fetchScrapedContent": {
                                "type": "string"
                              },
                              "fetchScrapedContentStripped": {
                                "type": "string"
                              },
                              "fetchScrapedContentSummary": {
                                "type": "string"
                              },
                              "localScrapedContent": {
                                "type": "string"
                              },
                              "localScrapedContentStripped": {
                                "type": "string"
                              },
                              "localScrapedContentSummary": {
                                "type": "string"
                              },
                              "remotePuppeteerScrapedContent": {
                                "type": "string"
                              },
                              "remotePuppeteerScrapedContentStripped": {
                                "type": "string"
                              },
                              "remotePuppeteerScrapedContentSummary": {
                                "type": "string"
                              },
                              "finalSummary": {
                                "type": "string"
                              },
                              "isAuthwall": {
                                "type": "boolean"
                              },
                              "isPaywall": {
                                "type": "boolean"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/browser-page-visit/create": {
      "post": {
        "tags": ["browser-page-visit"],
        "summary": "Create browser-page-visit",
        "operationId": "createBrowserPageVisit",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "owner_personSlug": {
                          "type": "string",
                          "description": "If it was executed in a browser of a user using a chrome extension, this can be stored"
                        },
                        "id": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        },
                        "websiteDomainSlug": {
                          "type": "string",
                          "description": "this is the domain"
                        },
                        "websiteDomain": {},
                        "managedDomain": {},
                        "title": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "number"
                        },
                        "isUrlRobotsAllowed": {
                          "type": "boolean"
                        },
                        "isUrlInSitemap": {
                          "type": "boolean"
                        },
                        "serpResult": {
                          "type": "string",
                          "enum": ["none", "index", "exact"],
                          "description": "What we find if we google the url. Index means it doesn't go to the exact url yet, but rather a page on a more general route"
                        },
                        "serpResultSummary": {
                          "type": "string",
                          "description": "if we google the url and/or title, what do we find?"
                        },
                        "browserScrapedContent": {
                          "type": "string"
                        },
                        "browserScrapedContentStripped": {
                          "type": "string",
                          "description": "as close to just the relevant text as possible"
                        },
                        "browsersScrapedContentSummary": {
                          "type": "string"
                        },
                        "fetchScrapedContent": {
                          "type": "string"
                        },
                        "fetchScrapedContentStripped": {
                          "type": "string"
                        },
                        "fetchScrapedContentSummary": {
                          "type": "string"
                        },
                        "localScrapedContent": {
                          "type": "string"
                        },
                        "localScrapedContentStripped": {
                          "type": "string"
                        },
                        "localScrapedContentSummary": {
                          "type": "string"
                        },
                        "remotePuppeteerScrapedContent": {
                          "type": "string"
                        },
                        "remotePuppeteerScrapedContentStripped": {
                          "type": "string"
                        },
                        "remotePuppeteerScrapedContentSummary": {
                          "type": "string"
                        },
                        "finalSummary": {
                          "type": "string"
                        },
                        "isAuthwall": {
                          "type": "boolean"
                        },
                        "isPaywall": {
                          "type": "boolean"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/browser-page-visit/update": {
      "post": {
        "tags": ["browser-page-visit"],
        "summary": "Update browser-page-visit",
        "operationId": "updateBrowserPageVisit",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "owner_personSlug": {
                        "type": "string",
                        "description": "If it was executed in a browser of a user using a chrome extension, this can be stored"
                      },
                      "id": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      },
                      "websiteDomainSlug": {
                        "type": "string",
                        "description": "this is the domain"
                      },
                      "websiteDomain": {},
                      "managedDomain": {},
                      "title": {
                        "type": "string"
                      },
                      "createdAt": {
                        "type": "number"
                      },
                      "isUrlRobotsAllowed": {
                        "type": "boolean"
                      },
                      "isUrlInSitemap": {
                        "type": "boolean"
                      },
                      "serpResult": {
                        "type": "string",
                        "enum": ["none", "index", "exact"],
                        "description": "What we find if we google the url. Index means it doesn't go to the exact url yet, but rather a page on a more general route"
                      },
                      "serpResultSummary": {
                        "type": "string",
                        "description": "if we google the url and/or title, what do we find?"
                      },
                      "browserScrapedContent": {
                        "type": "string"
                      },
                      "browserScrapedContentStripped": {
                        "type": "string",
                        "description": "as close to just the relevant text as possible"
                      },
                      "browsersScrapedContentSummary": {
                        "type": "string"
                      },
                      "fetchScrapedContent": {
                        "type": "string"
                      },
                      "fetchScrapedContentStripped": {
                        "type": "string"
                      },
                      "fetchScrapedContentSummary": {
                        "type": "string"
                      },
                      "localScrapedContent": {
                        "type": "string"
                      },
                      "localScrapedContentStripped": {
                        "type": "string"
                      },
                      "localScrapedContentSummary": {
                        "type": "string"
                      },
                      "remotePuppeteerScrapedContent": {
                        "type": "string"
                      },
                      "remotePuppeteerScrapedContentStripped": {
                        "type": "string"
                      },
                      "remotePuppeteerScrapedContentSummary": {
                        "type": "string"
                      },
                      "finalSummary": {
                        "type": "string"
                      },
                      "isAuthwall": {
                        "type": "boolean"
                      },
                      "isPaywall": {
                        "type": "boolean"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/browser-page-visit/execute": {
      "put": {
        "tags": ["browser-page-visit"],
        "summary": "Execute browser-page-visit",
        "operationId": "generateBrowserPageVisit",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "owner_personSlug",
                      "id",
                      "url",
                      "websiteDomainSlug",
                      "websiteDomain",
                      "managedDomain",
                      "title",
                      "createdAt",
                      "isUrlRobotsAllowed",
                      "isUrlInSitemap",
                      "serpResult",
                      "serpResultSummary",
                      "browserScrapedContent",
                      "browserScrapedContentStripped",
                      "browsersScrapedContentSummary",
                      "fetchScrapedContent",
                      "fetchScrapedContentStripped",
                      "fetchScrapedContentSummary",
                      "localScrapedContent",
                      "localScrapedContentStripped",
                      "localScrapedContentSummary",
                      "remotePuppeteerScrapedContent",
                      "remotePuppeteerScrapedContentStripped",
                      "remotePuppeteerScrapedContentSummary",
                      "finalSummary",
                      "isAuthwall",
                      "isPaywall",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/browser-page-visit": {
      "delete": {
        "tags": ["browser-page-visit"],
        "summary": "Delete browser-page-visit",
        "operationId": "deleteBrowserPageVisit",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/calendar-event/read": {
      "post": {
        "tags": ["calendar-event"],
        "summary": "Read calendar-event",
        "operationId": "readCalendarEvent",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "summary",
                            "createdAt",
                            "updatedAt",
                            "startAt",
                            "endAt",
                            "description",
                            "status",
                            "location",
                            "attendees",
                            "modelName"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "summary",
                            "createdAt",
                            "updatedAt",
                            "startAt",
                            "endAt",
                            "description",
                            "status",
                            "location",
                            "attendees",
                            "modelName"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "summary",
                        "createdAt",
                        "updatedAt",
                        "startAt",
                        "endAt",
                        "description",
                        "status",
                        "location",
                        "attendees",
                        "modelName"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "summary",
                        "createdAt",
                        "updatedAt",
                        "startAt",
                        "endAt",
                        "description",
                        "status",
                        "location",
                        "attendees",
                        "modelName"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string",
                                "description": "As a person doesn't have more than, let's say, 10000 events, this can be a 4 letter unique identifier, short enough to make it easy for the LLM"
                              },
                              "summary": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "number"
                              },
                              "updatedAt": {
                                "type": "number"
                              },
                              "startAt": {
                                "type": "number",
                                "description": "Start date in UNIX milliseconds"
                              },
                              "endAt": {
                                "type": "number",
                                "description": "End date in UNIX milliseconds"
                              },
                              "description": {
                                "type": "string",
                                "description": "Description about the event"
                              },
                              "status": {
                                "type": "string",
                                "enum": ["tentative", "confirmed", "canceled"],
                                "description": "RSVP"
                              },
                              "location": {
                                "type": "string",
                                "description": "Can be a meeting link as well as a physical location"
                              },
                              "attendees": {
                                "type": "string"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/calendar-event/create": {
      "post": {
        "tags": ["calendar-event"],
        "summary": "Create calendar-event",
        "operationId": "createCalendarEvent",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string",
                          "description": "As a person doesn't have more than, let's say, 10000 events, this can be a 4 letter unique identifier, short enough to make it easy for the LLM"
                        },
                        "summary": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "number"
                        },
                        "updatedAt": {
                          "type": "number"
                        },
                        "startAt": {
                          "type": "number",
                          "description": "Start date in UNIX milliseconds"
                        },
                        "endAt": {
                          "type": "number",
                          "description": "End date in UNIX milliseconds"
                        },
                        "description": {
                          "type": "string",
                          "description": "Description about the event"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["tentative", "confirmed", "canceled"],
                          "description": "RSVP"
                        },
                        "location": {
                          "type": "string",
                          "description": "Can be a meeting link as well as a physical location"
                        },
                        "attendees": {
                          "type": "string"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/calendar-event/update": {
      "post": {
        "tags": ["calendar-event"],
        "summary": "Update calendar-event",
        "operationId": "updateCalendarEvent",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string",
                        "description": "As a person doesn't have more than, let's say, 10000 events, this can be a 4 letter unique identifier, short enough to make it easy for the LLM"
                      },
                      "summary": {
                        "type": "string"
                      },
                      "createdAt": {
                        "type": "number"
                      },
                      "updatedAt": {
                        "type": "number"
                      },
                      "startAt": {
                        "type": "number",
                        "description": "Start date in UNIX milliseconds"
                      },
                      "endAt": {
                        "type": "number",
                        "description": "End date in UNIX milliseconds"
                      },
                      "description": {
                        "type": "string",
                        "description": "Description about the event"
                      },
                      "status": {
                        "type": "string",
                        "enum": ["tentative", "confirmed", "canceled"],
                        "description": "RSVP"
                      },
                      "location": {
                        "type": "string",
                        "description": "Can be a meeting link as well as a physical location"
                      },
                      "attendees": {
                        "type": "string"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/calendar-event/execute": {
      "put": {
        "tags": ["calendar-event"],
        "summary": "Execute calendar-event",
        "operationId": "generateCalendarEvent",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "__id",
                      "summary",
                      "createdAt",
                      "updatedAt",
                      "startAt",
                      "endAt",
                      "description",
                      "status",
                      "location",
                      "attendees",
                      "modelName"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/calendar-event": {
      "delete": {
        "tags": ["calendar-event"],
        "summary": "Delete calendar-event",
        "operationId": "deleteCalendarEvent",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/call-conference/read": {
      "post": {
        "tags": ["call-conference"],
        "summary": "Read call-conference",
        "operationId": "readCallConference",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "createdAt",
                            "isFinished",
                            "participants",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "createdAt",
                            "isFinished",
                            "participants",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "createdAt",
                        "isFinished",
                        "participants",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "createdAt",
                        "isFinished",
                        "participants",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "id": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "number",
                                "description": "Old (buggy) conferences can be auto-removed"
                              },
                              "isFinished": {
                                "type": "boolean",
                                "description": "If true, this isn't active anymore. Can be deleted also maybe."
                              },
                              "participants": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "personSlug": {
                                      "type": "string"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "unanswered",
                                        "declined",
                                        "accepted",
                                        "finished"
                                      ]
                                    },
                                    "isRemote": {
                                      "type": "boolean",
                                      "description": "If true, the audio should be streamed and the transcription is processed differently"
                                    },
                                    "recordingUrl": {
                                      "type": "string"
                                    },
                                    "recordingStartAt": {
                                      "type": "number"
                                    },
                                    "recordingEndAt": {
                                      "type": "number"
                                    }
                                  },
                                  "required": ["personSlug", "status"],
                                  "additionalProperties": false
                                },
                                "description": "Participants into the call. Will be possible to later add more people, both remote and IRL. People can also leave and join again potentially"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/call-conference/create": {
      "post": {
        "tags": ["call-conference"],
        "summary": "Create call-conference",
        "operationId": "createCallConference",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "id": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "number",
                          "description": "Old (buggy) conferences can be auto-removed"
                        },
                        "isFinished": {
                          "type": "boolean",
                          "description": "If true, this isn't active anymore. Can be deleted also maybe."
                        },
                        "participants": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "personSlug": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "unanswered",
                                  "declined",
                                  "accepted",
                                  "finished"
                                ]
                              },
                              "isRemote": {
                                "type": "boolean",
                                "description": "If true, the audio should be streamed and the transcription is processed differently"
                              },
                              "recordingUrl": {
                                "type": "string"
                              },
                              "recordingStartAt": {
                                "type": "number"
                              },
                              "recordingEndAt": {
                                "type": "number"
                              }
                            },
                            "required": ["personSlug", "status"],
                            "additionalProperties": false
                          },
                          "description": "Participants into the call. Will be possible to later add more people, both remote and IRL. People can also leave and join again potentially"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/call-conference/update": {
      "post": {
        "tags": ["call-conference"],
        "summary": "Update call-conference",
        "operationId": "updateCallConference",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "id": {
                        "type": "string"
                      },
                      "createdAt": {
                        "type": "number",
                        "description": "Old (buggy) conferences can be auto-removed"
                      },
                      "isFinished": {
                        "type": "boolean",
                        "description": "If true, this isn't active anymore. Can be deleted also maybe."
                      },
                      "participants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "personSlug": {
                              "type": "string"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "unanswered",
                                "declined",
                                "accepted",
                                "finished"
                              ]
                            },
                            "isRemote": {
                              "type": "boolean",
                              "description": "If true, the audio should be streamed and the transcription is processed differently"
                            },
                            "recordingUrl": {
                              "type": "string"
                            },
                            "recordingStartAt": {
                              "type": "number"
                            },
                            "recordingEndAt": {
                              "type": "number"
                            }
                          },
                          "required": ["personSlug", "status"],
                          "additionalProperties": false
                        },
                        "description": "Participants into the call. Will be possible to later add more people, both remote and IRL. People can also leave and join again potentially"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/call-conference/execute": {
      "put": {
        "tags": ["call-conference"],
        "summary": "Execute call-conference",
        "operationId": "generateCallConference",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "id",
                      "createdAt",
                      "isFinished",
                      "participants",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/call-conference": {
      "delete": {
        "tags": ["call-conference"],
        "summary": "Delete call-conference",
        "operationId": "deleteCallConference",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/chat-message/read": {
      "post": {
        "tags": ["chat-message"],
        "summary": "Read chat-message",
        "operationId": "readChatMessage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "relation_personSlug",
                            "date",
                            "createdAt",
                            "messagingChannel",
                            "direction",
                            "status",
                            "message",
                            "messageLanguage",
                            "englishMessage",
                            "preferredLanguageMessage",
                            "markdownHelperAugmentedMessage",
                            "creditCost",
                            "isPaywallMessage",
                            "whatsappMessageSid",
                            "assets",
                            "scene",
                            "location",
                            "replied_chatMessageCreatedAt",
                            "replied_chatMessage",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "relation_personSlug",
                            "date",
                            "createdAt",
                            "messagingChannel",
                            "direction",
                            "status",
                            "message",
                            "messageLanguage",
                            "englishMessage",
                            "preferredLanguageMessage",
                            "markdownHelperAugmentedMessage",
                            "creditCost",
                            "isPaywallMessage",
                            "whatsappMessageSid",
                            "assets",
                            "scene",
                            "location",
                            "replied_chatMessageCreatedAt",
                            "replied_chatMessage",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "relation_personSlug",
                        "date",
                        "createdAt",
                        "messagingChannel",
                        "direction",
                        "status",
                        "message",
                        "messageLanguage",
                        "englishMessage",
                        "preferredLanguageMessage",
                        "markdownHelperAugmentedMessage",
                        "creditCost",
                        "isPaywallMessage",
                        "whatsappMessageSid",
                        "assets",
                        "scene",
                        "location",
                        "replied_chatMessageCreatedAt",
                        "replied_chatMessage",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "relation_personSlug",
                        "date",
                        "createdAt",
                        "messagingChannel",
                        "direction",
                        "status",
                        "message",
                        "messageLanguage",
                        "englishMessage",
                        "preferredLanguageMessage",
                        "markdownHelperAugmentedMessage",
                        "creditCost",
                        "isPaywallMessage",
                        "whatsappMessageSid",
                        "assets",
                        "scene",
                        "location",
                        "replied_chatMessageCreatedAt",
                        "replied_chatMessage",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "personSlug": {
                                "type": "string",
                                "description": "Person that sent the message"
                              },
                              "relation_personSlug": {
                                "type": "string",
                                "description": "is empty for groups"
                              },
                              "date": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "number"
                              },
                              "messagingChannel": {
                                "$ref": "#/components/schemas/MessagingChannel",
                                "description": "where did the message come from or where is it sent to?"
                              },
                              "direction": {
                                "type": "string",
                                "enum": ["received", "sent"],
                                "description": "If sent, the dicection is \"relation -> person\" If received, the direction is \"person -> relation\""
                              },
                              "status": {
                                "type": "string",
                                "enum": ["sent", "received", "read", "sending"],
                                "description": "logic to do the double checkmark thingy a la whatsapp"
                              },
                              "message": {
                                "type": "string",
                                "description": "Original message. Can be:\n\n- text message\n- transcribed voice message\n- description of video, audio, image\n- textual content of textfile, pdf or other"
                              },
                              "messageLanguage": {
                                "type": "string",
                                "description": "Original message language"
                              },
                              "englishMessage": {
                                "type": "string",
                                "description": "Used for prompts and summaries etc."
                              },
                              "preferredLanguageMessage": {
                                "type": "string",
                                "description": "Message, translated to the preferred language of the user"
                              },
                              "markdownHelperAugmentedMessage": {
                                "type": "string",
                                "description": "Message, augmented with helper language words, using markdown"
                              },
                              "creditCost": {
                                "type": "number",
                                "description": "total cost for this message (including all assets, generation, etc). Useful to count the cost for a certain channel, maybe?"
                              },
                              "isPaywallMessage": {
                                "type": "boolean"
                              },
                              "whatsappMessageSid": {
                                "type": "string",
                                "description": "In case of whatsapp, sid must be here"
                              },
                              "assets": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/BackendAsset"
                                }
                              },
                              "scene": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/MessageAsset"
                                },
                                "description": "Can be automatically attached, based on the prompts, to allow for video creation based on a conversation\n\nExample scene assets:\n\n- background music/sound effects\n- background image/gif/video"
                              },
                              "location": {
                                "$ref": "#/components/schemas/MessageLocation"
                              },
                              "replied_chatMessageCreatedAt": {
                                "type": "number"
                              },
                              "replied_chatMessage": {
                                "description": "Reference to another one of itself."
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/chat-message/create": {
      "post": {
        "tags": ["chat-message"],
        "summary": "Create chat-message",
        "operationId": "createChatMessage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "personSlug": {
                          "type": "string",
                          "description": "Person that sent the message"
                        },
                        "relation_personSlug": {
                          "type": "string",
                          "description": "is empty for groups"
                        },
                        "date": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "number"
                        },
                        "messagingChannel": {
                          "$ref": "#/components/schemas/MessagingChannel",
                          "description": "where did the message come from or where is it sent to?"
                        },
                        "direction": {
                          "type": "string",
                          "enum": ["received", "sent"],
                          "description": "If sent, the dicection is \"relation -> person\" If received, the direction is \"person -> relation\""
                        },
                        "status": {
                          "type": "string",
                          "enum": ["sent", "received", "read", "sending"],
                          "description": "logic to do the double checkmark thingy a la whatsapp"
                        },
                        "message": {
                          "type": "string",
                          "description": "Original message. Can be:\n\n- text message\n- transcribed voice message\n- description of video, audio, image\n- textual content of textfile, pdf or other"
                        },
                        "messageLanguage": {
                          "type": "string",
                          "description": "Original message language"
                        },
                        "englishMessage": {
                          "type": "string",
                          "description": "Used for prompts and summaries etc."
                        },
                        "preferredLanguageMessage": {
                          "type": "string",
                          "description": "Message, translated to the preferred language of the user"
                        },
                        "markdownHelperAugmentedMessage": {
                          "type": "string",
                          "description": "Message, augmented with helper language words, using markdown"
                        },
                        "creditCost": {
                          "type": "number",
                          "description": "total cost for this message (including all assets, generation, etc). Useful to count the cost for a certain channel, maybe?"
                        },
                        "isPaywallMessage": {
                          "type": "boolean"
                        },
                        "whatsappMessageSid": {
                          "type": "string",
                          "description": "In case of whatsapp, sid must be here"
                        },
                        "assets": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/BackendAsset"
                          }
                        },
                        "scene": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/MessageAsset"
                          },
                          "description": "Can be automatically attached, based on the prompts, to allow for video creation based on a conversation\n\nExample scene assets:\n\n- background music/sound effects\n- background image/gif/video"
                        },
                        "location": {
                          "$ref": "#/components/schemas/MessageLocation"
                        },
                        "replied_chatMessageCreatedAt": {
                          "type": "number"
                        },
                        "replied_chatMessage": {
                          "description": "Reference to another one of itself."
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/chat-message/update": {
      "post": {
        "tags": ["chat-message"],
        "summary": "Update chat-message",
        "operationId": "updateChatMessage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "personSlug": {
                        "type": "string",
                        "description": "Person that sent the message"
                      },
                      "relation_personSlug": {
                        "type": "string",
                        "description": "is empty for groups"
                      },
                      "date": {
                        "type": "string"
                      },
                      "createdAt": {
                        "type": "number"
                      },
                      "messagingChannel": {
                        "$ref": "#/components/schemas/MessagingChannel",
                        "description": "where did the message come from or where is it sent to?"
                      },
                      "direction": {
                        "type": "string",
                        "enum": ["received", "sent"],
                        "description": "If sent, the dicection is \"relation -> person\" If received, the direction is \"person -> relation\""
                      },
                      "status": {
                        "type": "string",
                        "enum": ["sent", "received", "read", "sending"],
                        "description": "logic to do the double checkmark thingy a la whatsapp"
                      },
                      "message": {
                        "type": "string",
                        "description": "Original message. Can be:\n\n- text message\n- transcribed voice message\n- description of video, audio, image\n- textual content of textfile, pdf or other"
                      },
                      "messageLanguage": {
                        "type": "string",
                        "description": "Original message language"
                      },
                      "englishMessage": {
                        "type": "string",
                        "description": "Used for prompts and summaries etc."
                      },
                      "preferredLanguageMessage": {
                        "type": "string",
                        "description": "Message, translated to the preferred language of the user"
                      },
                      "markdownHelperAugmentedMessage": {
                        "type": "string",
                        "description": "Message, augmented with helper language words, using markdown"
                      },
                      "creditCost": {
                        "type": "number",
                        "description": "total cost for this message (including all assets, generation, etc). Useful to count the cost for a certain channel, maybe?"
                      },
                      "isPaywallMessage": {
                        "type": "boolean"
                      },
                      "whatsappMessageSid": {
                        "type": "string",
                        "description": "In case of whatsapp, sid must be here"
                      },
                      "assets": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/BackendAsset"
                        }
                      },
                      "scene": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/MessageAsset"
                        },
                        "description": "Can be automatically attached, based on the prompts, to allow for video creation based on a conversation\n\nExample scene assets:\n\n- background music/sound effects\n- background image/gif/video"
                      },
                      "location": {
                        "$ref": "#/components/schemas/MessageLocation"
                      },
                      "replied_chatMessageCreatedAt": {
                        "type": "number"
                      },
                      "replied_chatMessage": {
                        "description": "Reference to another one of itself."
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/chat-message/execute": {
      "put": {
        "tags": ["chat-message"],
        "summary": "Execute chat-message",
        "operationId": "generateChatMessage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "personSlug",
                      "relation_personSlug",
                      "date",
                      "createdAt",
                      "messagingChannel",
                      "direction",
                      "status",
                      "message",
                      "messageLanguage",
                      "englishMessage",
                      "preferredLanguageMessage",
                      "markdownHelperAugmentedMessage",
                      "creditCost",
                      "isPaywallMessage",
                      "whatsappMessageSid",
                      "assets",
                      "scene",
                      "location",
                      "replied_chatMessageCreatedAt",
                      "replied_chatMessage",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/chat-message": {
      "delete": {
        "tags": ["chat-message"],
        "summary": "Delete chat-message",
        "operationId": "deleteChatMessage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt/read": {
      "post": {
        "tags": ["contextual-prompt"],
        "summary": "Read contextual-prompt",
        "operationId": "readContextualPrompt",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "contextType",
                            "instantExecution",
                            "isFavorite",
                            "categoryStack",
                            "pricing",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "category",
                            "slug",
                            "name",
                            "personaSlug",
                            "title",
                            "description",
                            "scopeProjectRelativePath",
                            "model",
                            "promptContent",
                            "folderContentContext",
                            "usesContext",
                            "usesSelection",
                            "usesAnyContext",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "contextType",
                            "instantExecution",
                            "isFavorite",
                            "categoryStack",
                            "pricing",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "category",
                            "slug",
                            "name",
                            "personaSlug",
                            "title",
                            "description",
                            "scopeProjectRelativePath",
                            "model",
                            "promptContent",
                            "folderContentContext",
                            "usesContext",
                            "usesSelection",
                            "usesAnyContext",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "contextType",
                        "instantExecution",
                        "isFavorite",
                        "categoryStack",
                        "pricing",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "category",
                        "slug",
                        "name",
                        "personaSlug",
                        "title",
                        "description",
                        "scopeProjectRelativePath",
                        "model",
                        "promptContent",
                        "folderContentContext",
                        "usesContext",
                        "usesSelection",
                        "usesAnyContext",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "contextType",
                        "instantExecution",
                        "isFavorite",
                        "categoryStack",
                        "pricing",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "category",
                        "slug",
                        "name",
                        "personaSlug",
                        "title",
                        "description",
                        "scopeProjectRelativePath",
                        "model",
                        "promptContent",
                        "folderContentContext",
                        "usesContext",
                        "usesSelection",
                        "usesAnyContext",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "contextType": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "If given, will be used to filter the selection of prompts to match the context type"
                              },
                              "instantExecution": {
                                "type": "boolean"
                              },
                              "isFavorite": {
                                "type": "boolean"
                              },
                              "categoryStack": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "pricing": {
                                "type": "string",
                                "enum": [
                                  "bad",
                                  "good",
                                  "premium",
                                  "enterprise",
                                  "private"
                                ]
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "category": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string",
                                "description": "descriptive name of what the prompt does, the same way as you would name a function.\n\nUsed to generate the name of the function"
                              },
                              "personaSlug": {
                                "type": "string",
                                "description": "Can be used to create links easily for the chatbot, which can be shown on the bot landing page, among other things"
                              },
                              "title": {
                                "type": "string",
                                "description": "Short description of the function.\n\nUsed to be added to as a doc-comment when generating a function for the prompt"
                              },
                              "description": {
                                "type": "string",
                                "description": "Bit longer description of the prompt"
                              },
                              "scopeProjectRelativePath": {
                                "type": "string",
                                "description": "if given, should be a path to a file or folder, so the prompt will never be shown outside of this scope\n\nNever stored! Is found based on the location of the file in your file system"
                              },
                              "model": {
                                "anyOf": [
                                  {
                                    "$ref": "#/components/schemas/LanguageModelEnum"
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/components/schemas/LanguageModelEnum"
                                    }
                                  }
                                ],
                                "description": "Which models can this be applied on?"
                              },
                              "promptContent": {
                                "type": "string",
                                "description": "Only prompt is stored (string)"
                              },
                              "folderContentContext": {
                                "type": "string",
                                "enum": ["summary", "flat", "recursive"],
                                "description": "Variable: `${folder}`\n\nIf set to `flat`, all folder content will be added as context, without sub-folders\n\nIf set to `recursive`, all folder content will be added as context, including sub-folders\n\nIf set to `summary-flat`/`summary-recursive`, a key-value with \"filename: summary\" with a one-line summary of the content of the file/folder will be added. Folder summaries must be longer.\n\nIDEA: if you have any question about your complete codebase, you can do a recurisve search in files/folders, taking all the relevant summaries every time, and doing a prompt for every result that might have the answer.\n\n1) First we need to collect the relevant information 2) Then we need to prune the relevant information 3) Then we can answer the question based on truth that links to files\n\nIf I can do this, I have a very powerful search engine."
                              },
                              "usesContext": {
                                "type": "boolean",
                                "description": "Variable: ${context}\n\nWhether or not the prompt requires the context\n\nCan be a file contents, but can also be the contents of an HTML page"
                              },
                              "usesSelection": {
                                "type": "boolean",
                                "description": "Variable: ${selection}\n\nWhether or not the prompt requires the selection"
                              },
                              "usesAnyContext": {
                                "type": "boolean",
                                "description": "Variable: ${any}\n\nIf true, will return this prompt in any context prompt, as selection results because it can use any of them as its variable. It will use the smallest one available."
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt/create": {
      "post": {
        "tags": ["contextual-prompt"],
        "summary": "Create contextual-prompt",
        "operationId": "createContextualPrompt",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "contextType": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "If given, will be used to filter the selection of prompts to match the context type"
                        },
                        "instantExecution": {
                          "type": "boolean"
                        },
                        "isFavorite": {
                          "type": "boolean"
                        },
                        "categoryStack": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "pricing": {
                          "type": "string",
                          "enum": [
                            "bad",
                            "good",
                            "premium",
                            "enterprise",
                            "private"
                          ]
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "category": {
                          "type": "string"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string",
                          "description": "descriptive name of what the prompt does, the same way as you would name a function.\n\nUsed to generate the name of the function"
                        },
                        "personaSlug": {
                          "type": "string",
                          "description": "Can be used to create links easily for the chatbot, which can be shown on the bot landing page, among other things"
                        },
                        "title": {
                          "type": "string",
                          "description": "Short description of the function.\n\nUsed to be added to as a doc-comment when generating a function for the prompt"
                        },
                        "description": {
                          "type": "string",
                          "description": "Bit longer description of the prompt"
                        },
                        "scopeProjectRelativePath": {
                          "type": "string",
                          "description": "if given, should be a path to a file or folder, so the prompt will never be shown outside of this scope\n\nNever stored! Is found based on the location of the file in your file system"
                        },
                        "model": {
                          "anyOf": [
                            {
                              "$ref": "#/components/schemas/LanguageModelEnum"
                            },
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/LanguageModelEnum"
                              }
                            }
                          ],
                          "description": "Which models can this be applied on?"
                        },
                        "promptContent": {
                          "type": "string",
                          "description": "Only prompt is stored (string)"
                        },
                        "folderContentContext": {
                          "type": "string",
                          "enum": ["summary", "flat", "recursive"],
                          "description": "Variable: `${folder}`\n\nIf set to `flat`, all folder content will be added as context, without sub-folders\n\nIf set to `recursive`, all folder content will be added as context, including sub-folders\n\nIf set to `summary-flat`/`summary-recursive`, a key-value with \"filename: summary\" with a one-line summary of the content of the file/folder will be added. Folder summaries must be longer.\n\nIDEA: if you have any question about your complete codebase, you can do a recurisve search in files/folders, taking all the relevant summaries every time, and doing a prompt for every result that might have the answer.\n\n1) First we need to collect the relevant information 2) Then we need to prune the relevant information 3) Then we can answer the question based on truth that links to files\n\nIf I can do this, I have a very powerful search engine."
                        },
                        "usesContext": {
                          "type": "boolean",
                          "description": "Variable: ${context}\n\nWhether or not the prompt requires the context\n\nCan be a file contents, but can also be the contents of an HTML page"
                        },
                        "usesSelection": {
                          "type": "boolean",
                          "description": "Variable: ${selection}\n\nWhether or not the prompt requires the selection"
                        },
                        "usesAnyContext": {
                          "type": "boolean",
                          "description": "Variable: ${any}\n\nIf true, will return this prompt in any context prompt, as selection results because it can use any of them as its variable. It will use the smallest one available."
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt/update": {
      "post": {
        "tags": ["contextual-prompt"],
        "summary": "Update contextual-prompt",
        "operationId": "updateContextualPrompt",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "contextType": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "If given, will be used to filter the selection of prompts to match the context type"
                      },
                      "instantExecution": {
                        "type": "boolean"
                      },
                      "isFavorite": {
                        "type": "boolean"
                      },
                      "categoryStack": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "pricing": {
                        "type": "string",
                        "enum": [
                          "bad",
                          "good",
                          "premium",
                          "enterprise",
                          "private"
                        ]
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "category": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string",
                        "description": "descriptive name of what the prompt does, the same way as you would name a function.\n\nUsed to generate the name of the function"
                      },
                      "personaSlug": {
                        "type": "string",
                        "description": "Can be used to create links easily for the chatbot, which can be shown on the bot landing page, among other things"
                      },
                      "title": {
                        "type": "string",
                        "description": "Short description of the function.\n\nUsed to be added to as a doc-comment when generating a function for the prompt"
                      },
                      "description": {
                        "type": "string",
                        "description": "Bit longer description of the prompt"
                      },
                      "scopeProjectRelativePath": {
                        "type": "string",
                        "description": "if given, should be a path to a file or folder, so the prompt will never be shown outside of this scope\n\nNever stored! Is found based on the location of the file in your file system"
                      },
                      "model": {
                        "anyOf": [
                          {
                            "$ref": "#/components/schemas/LanguageModelEnum"
                          },
                          {
                            "type": "array",
                            "items": {
                              "$ref": "#/components/schemas/LanguageModelEnum"
                            }
                          }
                        ],
                        "description": "Which models can this be applied on?"
                      },
                      "promptContent": {
                        "type": "string",
                        "description": "Only prompt is stored (string)"
                      },
                      "folderContentContext": {
                        "type": "string",
                        "enum": ["summary", "flat", "recursive"],
                        "description": "Variable: `${folder}`\n\nIf set to `flat`, all folder content will be added as context, without sub-folders\n\nIf set to `recursive`, all folder content will be added as context, including sub-folders\n\nIf set to `summary-flat`/`summary-recursive`, a key-value with \"filename: summary\" with a one-line summary of the content of the file/folder will be added. Folder summaries must be longer.\n\nIDEA: if you have any question about your complete codebase, you can do a recurisve search in files/folders, taking all the relevant summaries every time, and doing a prompt for every result that might have the answer.\n\n1) First we need to collect the relevant information 2) Then we need to prune the relevant information 3) Then we can answer the question based on truth that links to files\n\nIf I can do this, I have a very powerful search engine."
                      },
                      "usesContext": {
                        "type": "boolean",
                        "description": "Variable: ${context}\n\nWhether or not the prompt requires the context\n\nCan be a file contents, but can also be the contents of an HTML page"
                      },
                      "usesSelection": {
                        "type": "boolean",
                        "description": "Variable: ${selection}\n\nWhether or not the prompt requires the selection"
                      },
                      "usesAnyContext": {
                        "type": "boolean",
                        "description": "Variable: ${any}\n\nIf true, will return this prompt in any context prompt, as selection results because it can use any of them as its variable. It will use the smallest one available."
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt/execute": {
      "put": {
        "tags": ["contextual-prompt"],
        "summary": "Execute contextual-prompt",
        "operationId": "generateContextualPrompt",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "contextType",
                      "instantExecution",
                      "isFavorite",
                      "categoryStack",
                      "pricing",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "category",
                      "slug",
                      "name",
                      "personaSlug",
                      "title",
                      "description",
                      "scopeProjectRelativePath",
                      "model",
                      "promptContent",
                      "folderContentContext",
                      "usesContext",
                      "usesSelection",
                      "usesAnyContext",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt": {
      "delete": {
        "tags": ["contextual-prompt"],
        "summary": "Delete contextual-prompt",
        "operationId": "deleteContextualPrompt",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt-result/read": {
      "post": {
        "tags": ["contextual-prompt-result"],
        "summary": "Read contextual-prompt-result",
        "operationId": "readContextualPromptResult",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "createdAt",
                            "isValidCalculated",
                            "isFake",
                            "contextualPromptSlug",
                            "prompt_projectRelativePath",
                            "prompt",
                            "selectionString",
                            "isFavorite",
                            "resultText",
                            "resultAssets",
                            "thread",
                            "noteContent",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "createdAt",
                            "isValidCalculated",
                            "isFake",
                            "contextualPromptSlug",
                            "prompt_projectRelativePath",
                            "prompt",
                            "selectionString",
                            "isFavorite",
                            "resultText",
                            "resultAssets",
                            "thread",
                            "noteContent",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "createdAt",
                        "isValidCalculated",
                        "isFake",
                        "contextualPromptSlug",
                        "prompt_projectRelativePath",
                        "prompt",
                        "selectionString",
                        "isFavorite",
                        "resultText",
                        "resultAssets",
                        "thread",
                        "noteContent",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "createdAt",
                        "isValidCalculated",
                        "isFake",
                        "contextualPromptSlug",
                        "prompt_projectRelativePath",
                        "prompt",
                        "selectionString",
                        "isFavorite",
                        "resultText",
                        "resultAssets",
                        "thread",
                        "noteContent",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "id": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "number",
                                "description": "When was the result created"
                              },
                              "isValidCalculated": {
                                "type": "boolean",
                                "description": "It's a crucial question whether prompt results are still valid once the actual file has been altered. If we have prompts in a chain, it may be so that all of them become invalid\n\nFor example, if a very fundamental belief changes, I need to alter all generated inferences for that belief.\n\nI think it might be better to add indexation on the validity maybe, if beliefs change, and mark the file as \"old\" if I want to write a new version. The frontmatter may change, but we should probably keep the content immutable because it has too many implications if we don't\n\nIt is the same as the O in the SOLID principle!"
                              },
                              "isFake": {
                                "type": "boolean",
                                "description": "Fake result for testing, marked to be able to easily clean it up"
                              },
                              "contextualPromptSlug": {
                                "type": "string",
                                "description": "Contextual prompt this prompt was based on. We don't have the acutal prompt here since we use an extended convention from `fs-orm`"
                              },
                              "prompt_projectRelativePath": {
                                "type": "string",
                                "description": "Path the result is about, if any. Can also be a folder!"
                              },
                              "prompt": {
                                "type": "string",
                                "description": "Prompt string of the prompt, but only of this very question, not all previous things if this is a later item in a thread, that can be stored in another result."
                              },
                              "selectionString": {
                                "type": "string",
                                "description": "In case the prompt had `.useSelection: true`, this should be the selected string, so the location can be found in the markdown, so the markdown can be augmented with a link to the result."
                              },
                              "isFavorite": {
                                "type": "boolean",
                                "description": "If true, will get priority in where it's shown"
                              },
                              "resultText": {
                                "type": "string"
                              },
                              "resultAssets": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/BackendAsset"
                                }
                              },
                              "thread": {
                                "type": "string",
                                "description": "Unique ID for this thread, generated if not given to the prompt"
                              },
                              "noteContent": {
                                "type": "string",
                                "description": "Note you can attach to the Prompt result."
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt-result/create": {
      "post": {
        "tags": ["contextual-prompt-result"],
        "summary": "Create contextual-prompt-result",
        "operationId": "createContextualPromptResult",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "id": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "number",
                          "description": "When was the result created"
                        },
                        "isValidCalculated": {
                          "type": "boolean",
                          "description": "It's a crucial question whether prompt results are still valid once the actual file has been altered. If we have prompts in a chain, it may be so that all of them become invalid\n\nFor example, if a very fundamental belief changes, I need to alter all generated inferences for that belief.\n\nI think it might be better to add indexation on the validity maybe, if beliefs change, and mark the file as \"old\" if I want to write a new version. The frontmatter may change, but we should probably keep the content immutable because it has too many implications if we don't\n\nIt is the same as the O in the SOLID principle!"
                        },
                        "isFake": {
                          "type": "boolean",
                          "description": "Fake result for testing, marked to be able to easily clean it up"
                        },
                        "contextualPromptSlug": {
                          "type": "string",
                          "description": "Contextual prompt this prompt was based on. We don't have the acutal prompt here since we use an extended convention from `fs-orm`"
                        },
                        "prompt_projectRelativePath": {
                          "type": "string",
                          "description": "Path the result is about, if any. Can also be a folder!"
                        },
                        "prompt": {
                          "type": "string",
                          "description": "Prompt string of the prompt, but only of this very question, not all previous things if this is a later item in a thread, that can be stored in another result."
                        },
                        "selectionString": {
                          "type": "string",
                          "description": "In case the prompt had `.useSelection: true`, this should be the selected string, so the location can be found in the markdown, so the markdown can be augmented with a link to the result."
                        },
                        "isFavorite": {
                          "type": "boolean",
                          "description": "If true, will get priority in where it's shown"
                        },
                        "resultText": {
                          "type": "string"
                        },
                        "resultAssets": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/BackendAsset"
                          }
                        },
                        "thread": {
                          "type": "string",
                          "description": "Unique ID for this thread, generated if not given to the prompt"
                        },
                        "noteContent": {
                          "type": "string",
                          "description": "Note you can attach to the Prompt result."
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt-result/update": {
      "post": {
        "tags": ["contextual-prompt-result"],
        "summary": "Update contextual-prompt-result",
        "operationId": "updateContextualPromptResult",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "id": {
                        "type": "string"
                      },
                      "createdAt": {
                        "type": "number",
                        "description": "When was the result created"
                      },
                      "isValidCalculated": {
                        "type": "boolean",
                        "description": "It's a crucial question whether prompt results are still valid once the actual file has been altered. If we have prompts in a chain, it may be so that all of them become invalid\n\nFor example, if a very fundamental belief changes, I need to alter all generated inferences for that belief.\n\nI think it might be better to add indexation on the validity maybe, if beliefs change, and mark the file as \"old\" if I want to write a new version. The frontmatter may change, but we should probably keep the content immutable because it has too many implications if we don't\n\nIt is the same as the O in the SOLID principle!"
                      },
                      "isFake": {
                        "type": "boolean",
                        "description": "Fake result for testing, marked to be able to easily clean it up"
                      },
                      "contextualPromptSlug": {
                        "type": "string",
                        "description": "Contextual prompt this prompt was based on. We don't have the acutal prompt here since we use an extended convention from `fs-orm`"
                      },
                      "prompt_projectRelativePath": {
                        "type": "string",
                        "description": "Path the result is about, if any. Can also be a folder!"
                      },
                      "prompt": {
                        "type": "string",
                        "description": "Prompt string of the prompt, but only of this very question, not all previous things if this is a later item in a thread, that can be stored in another result."
                      },
                      "selectionString": {
                        "type": "string",
                        "description": "In case the prompt had `.useSelection: true`, this should be the selected string, so the location can be found in the markdown, so the markdown can be augmented with a link to the result."
                      },
                      "isFavorite": {
                        "type": "boolean",
                        "description": "If true, will get priority in where it's shown"
                      },
                      "resultText": {
                        "type": "string"
                      },
                      "resultAssets": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/BackendAsset"
                        }
                      },
                      "thread": {
                        "type": "string",
                        "description": "Unique ID for this thread, generated if not given to the prompt"
                      },
                      "noteContent": {
                        "type": "string",
                        "description": "Note you can attach to the Prompt result."
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt-result/execute": {
      "put": {
        "tags": ["contextual-prompt-result"],
        "summary": "Execute contextual-prompt-result",
        "operationId": "generateContextualPromptResult",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "id",
                      "createdAt",
                      "isValidCalculated",
                      "isFake",
                      "contextualPromptSlug",
                      "prompt_projectRelativePath",
                      "prompt",
                      "selectionString",
                      "isFavorite",
                      "resultText",
                      "resultAssets",
                      "thread",
                      "noteContent",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contextual-prompt-result": {
      "delete": {
        "tags": ["contextual-prompt-result"],
        "summary": "Delete contextual-prompt-result",
        "operationId": "deleteContextualPromptResult",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/data-pipeline/read": {
      "post": {
        "tags": ["data-pipeline"],
        "summary": "Read data-pipeline",
        "operationId": "readDataPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "slug",
                            "category",
                            "status",
                            "owner_personSlug",
                            "queueIds",
                            "queues",
                            "maxBudgetPerDayEuro",
                            "maxTotalBudgetEuro",
                            "totalCostEuro",
                            "totalCostTodayEuro",
                            "estimatedProfitEuro",
                            "notesDescription",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "prospecting_groupSlug",
                            "prospecting_group",
                            "strategyDescription",
                            "mrklResult",
                            "mapFilterSequence",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "slug",
                            "category",
                            "status",
                            "owner_personSlug",
                            "queueIds",
                            "queues",
                            "maxBudgetPerDayEuro",
                            "maxTotalBudgetEuro",
                            "totalCostEuro",
                            "totalCostTodayEuro",
                            "estimatedProfitEuro",
                            "notesDescription",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "prospecting_groupSlug",
                            "prospecting_group",
                            "strategyDescription",
                            "mrklResult",
                            "mapFilterSequence",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "slug",
                        "category",
                        "status",
                        "owner_personSlug",
                        "queueIds",
                        "queues",
                        "maxBudgetPerDayEuro",
                        "maxTotalBudgetEuro",
                        "totalCostEuro",
                        "totalCostTodayEuro",
                        "estimatedProfitEuro",
                        "notesDescription",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "prospecting_groupSlug",
                        "prospecting_group",
                        "strategyDescription",
                        "mrklResult",
                        "mapFilterSequence",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "slug",
                        "category",
                        "status",
                        "owner_personSlug",
                        "queueIds",
                        "queues",
                        "maxBudgetPerDayEuro",
                        "maxTotalBudgetEuro",
                        "totalCostEuro",
                        "totalCostTodayEuro",
                        "estimatedProfitEuro",
                        "notesDescription",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "prospecting_groupSlug",
                        "prospecting_group",
                        "strategyDescription",
                        "mrklResult",
                        "mapFilterSequence",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "draft",
                                  "ongoing",
                                  "paused",
                                  "over-budget"
                                ]
                              },
                              "owner_personSlug": {
                                "type": "string",
                                "description": "Who is paying for this (and is granted access to the results)"
                              },
                              "queueIds": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Queue items that have been created for this pipeline"
                              },
                              "queues": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Queue"
                                }
                              },
                              "maxBudgetPerDayEuro": {
                                "type": "number",
                                "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
                              },
                              "maxTotalBudgetEuro": {
                                "type": "number"
                              },
                              "totalCostEuro": {
                                "type": "number",
                                "description": "Total budget spent until now"
                              },
                              "totalCostTodayEuro": {
                                "type": "number",
                                "description": "Total budget spent today"
                              },
                              "estimatedProfitEuro": {
                                "type": "number",
                                "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
                              },
                              "notesDescription": {
                                "type": "string",
                                "description": "Notes by the owner"
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "prospecting_groupSlug": {
                                "type": "string",
                                "description": "Marking the person once we inserted them into the database. This group can be defined as \"may be target audience\""
                              },
                              "prospecting_group": {},
                              "strategyDescription": {
                                "type": "string",
                                "description": "Human language description of how we're going to find them"
                              },
                              "mrklResult": {
                                "type": "string",
                                "description": "Edit strategy just as long until you like the MRKL result. If it's a good result, you can start the pipeline, which will add it to the queue."
                              },
                              "mapFilterSequence": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "gptMapSlug": {
                                      "type": "string"
                                    },
                                    "filterFunctionName": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": false
                                },
                                "description": "Must be a list of maps and filters, to be executed in sequence for each item in the `prospecting_group`.\n\nNB: each item in the array should only contain either gptMap or filterfunction"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/data-pipeline/create": {
      "post": {
        "tags": ["data-pipeline"],
        "summary": "Create data-pipeline",
        "operationId": "createDataPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "slug": {
                          "type": "string"
                        },
                        "category": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "ongoing", "paused", "over-budget"]
                        },
                        "owner_personSlug": {
                          "type": "string",
                          "description": "Who is paying for this (and is granted access to the results)"
                        },
                        "queueIds": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Queue items that have been created for this pipeline"
                        },
                        "queues": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Queue"
                          }
                        },
                        "maxBudgetPerDayEuro": {
                          "type": "number",
                          "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
                        },
                        "maxTotalBudgetEuro": {
                          "type": "number"
                        },
                        "totalCostEuro": {
                          "type": "number",
                          "description": "Total budget spent until now"
                        },
                        "totalCostTodayEuro": {
                          "type": "number",
                          "description": "Total budget spent today"
                        },
                        "estimatedProfitEuro": {
                          "type": "number",
                          "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
                        },
                        "notesDescription": {
                          "type": "string",
                          "description": "Notes by the owner"
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "prospecting_groupSlug": {
                          "type": "string",
                          "description": "Marking the person once we inserted them into the database. This group can be defined as \"may be target audience\""
                        },
                        "prospecting_group": {},
                        "strategyDescription": {
                          "type": "string",
                          "description": "Human language description of how we're going to find them"
                        },
                        "mrklResult": {
                          "type": "string",
                          "description": "Edit strategy just as long until you like the MRKL result. If it's a good result, you can start the pipeline, which will add it to the queue."
                        },
                        "mapFilterSequence": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "gptMapSlug": {
                                "type": "string"
                              },
                              "filterFunctionName": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          },
                          "description": "Must be a list of maps and filters, to be executed in sequence for each item in the `prospecting_group`.\n\nNB: each item in the array should only contain either gptMap or filterfunction"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/data-pipeline/update": {
      "post": {
        "tags": ["data-pipeline"],
        "summary": "Update data-pipeline",
        "operationId": "updateDataPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string",
                        "enum": ["draft", "ongoing", "paused", "over-budget"]
                      },
                      "owner_personSlug": {
                        "type": "string",
                        "description": "Who is paying for this (and is granted access to the results)"
                      },
                      "queueIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Queue items that have been created for this pipeline"
                      },
                      "queues": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Queue"
                        }
                      },
                      "maxBudgetPerDayEuro": {
                        "type": "number",
                        "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
                      },
                      "maxTotalBudgetEuro": {
                        "type": "number"
                      },
                      "totalCostEuro": {
                        "type": "number",
                        "description": "Total budget spent until now"
                      },
                      "totalCostTodayEuro": {
                        "type": "number",
                        "description": "Total budget spent today"
                      },
                      "estimatedProfitEuro": {
                        "type": "number",
                        "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
                      },
                      "notesDescription": {
                        "type": "string",
                        "description": "Notes by the owner"
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "prospecting_groupSlug": {
                        "type": "string",
                        "description": "Marking the person once we inserted them into the database. This group can be defined as \"may be target audience\""
                      },
                      "prospecting_group": {},
                      "strategyDescription": {
                        "type": "string",
                        "description": "Human language description of how we're going to find them"
                      },
                      "mrklResult": {
                        "type": "string",
                        "description": "Edit strategy just as long until you like the MRKL result. If it's a good result, you can start the pipeline, which will add it to the queue."
                      },
                      "mapFilterSequence": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "gptMapSlug": {
                              "type": "string"
                            },
                            "filterFunctionName": {
                              "type": "string"
                            }
                          },
                          "additionalProperties": false
                        },
                        "description": "Must be a list of maps and filters, to be executed in sequence for each item in the `prospecting_group`.\n\nNB: each item in the array should only contain either gptMap or filterfunction"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/data-pipeline/execute": {
      "put": {
        "tags": ["data-pipeline"],
        "summary": "Execute data-pipeline",
        "operationId": "generateDataPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "slug",
                      "category",
                      "status",
                      "owner_personSlug",
                      "queueIds",
                      "queues",
                      "maxBudgetPerDayEuro",
                      "maxTotalBudgetEuro",
                      "totalCostEuro",
                      "totalCostTodayEuro",
                      "estimatedProfitEuro",
                      "notesDescription",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "prospecting_groupSlug",
                      "prospecting_group",
                      "strategyDescription",
                      "mrklResult",
                      "mapFilterSequence",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/data-pipeline": {
      "delete": {
        "tags": ["data-pipeline"],
        "summary": "Delete data-pipeline",
        "operationId": "deleteDataPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/dataset/read": {
      "post": {
        "tags": ["dataset"],
        "summary": "Read dataset",
        "operationId": "readDataset",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "filter",
                            "sort",
                            "maxRows",
                            "startFromIndex",
                            "objectParameterKeys",
                            "ignoreObjectParameterKeys",
                            "view",
                            "authorizations",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "price",
                            "defaultView",
                            "allowedModelViews",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "filter",
                            "sort",
                            "maxRows",
                            "startFromIndex",
                            "objectParameterKeys",
                            "ignoreObjectParameterKeys",
                            "view",
                            "authorizations",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "price",
                            "defaultView",
                            "allowedModelViews",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "filter",
                        "sort",
                        "maxRows",
                        "startFromIndex",
                        "objectParameterKeys",
                        "ignoreObjectParameterKeys",
                        "view",
                        "authorizations",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "price",
                        "defaultView",
                        "allowedModelViews",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "filter",
                        "sort",
                        "maxRows",
                        "startFromIndex",
                        "objectParameterKeys",
                        "ignoreObjectParameterKeys",
                        "view",
                        "authorizations",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "price",
                        "defaultView",
                        "allowedModelViews",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "filter": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/DatasetFilter"
                                },
                                "description": "Filters are applied after each other"
                              },
                              "sort": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/DatasetSort"
                                }
                              },
                              "maxRows": {
                                "type": "number",
                                "description": "Specify a max amount of items n"
                              },
                              "startFromIndex": {
                                "type": "number",
                                "description": "If specified, slices the sorted array to omit the first n items;"
                              },
                              "objectParameterKeys": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "If specified, will only include these parameter keys of the model object. Otherwise all keys will be taken"
                              },
                              "ignoreObjectParameterKeys": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "If specified, will omit these keys when creating the dataset"
                              },
                              "view": {},
                              "authorizations": {
                                "$ref": "#/components/schemas/GroupAuthorizationObject"
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "The model you want to make a dataset from"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "price": {
                                "$ref": "#/components/schemas/Price",
                                "description": "How much does this dataset cost?"
                              },
                              "defaultView": {
                                "$ref": "#/components/schemas/ModelViewEnum"
                              },
                              "allowedModelViews": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/ModelViewEnum"
                                }
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/dataset/create": {
      "post": {
        "tags": ["dataset"],
        "summary": "Create dataset",
        "operationId": "createDataset",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "filter": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/DatasetFilter"
                          },
                          "description": "Filters are applied after each other"
                        },
                        "sort": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/DatasetSort"
                          }
                        },
                        "maxRows": {
                          "type": "number",
                          "description": "Specify a max amount of items n"
                        },
                        "startFromIndex": {
                          "type": "number",
                          "description": "If specified, slices the sorted array to omit the first n items;"
                        },
                        "objectParameterKeys": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "If specified, will only include these parameter keys of the model object. Otherwise all keys will be taken"
                        },
                        "ignoreObjectParameterKeys": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "If specified, will omit these keys when creating the dataset"
                        },
                        "view": {},
                        "authorizations": {
                          "$ref": "#/components/schemas/GroupAuthorizationObject"
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "The model you want to make a dataset from"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "price": {
                          "$ref": "#/components/schemas/Price",
                          "description": "How much does this dataset cost?"
                        },
                        "defaultView": {
                          "$ref": "#/components/schemas/ModelViewEnum"
                        },
                        "allowedModelViews": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ModelViewEnum"
                          }
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/dataset/update": {
      "post": {
        "tags": ["dataset"],
        "summary": "Update dataset",
        "operationId": "updateDataset",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "filter": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/DatasetFilter"
                        },
                        "description": "Filters are applied after each other"
                      },
                      "sort": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/DatasetSort"
                        }
                      },
                      "maxRows": {
                        "type": "number",
                        "description": "Specify a max amount of items n"
                      },
                      "startFromIndex": {
                        "type": "number",
                        "description": "If specified, slices the sorted array to omit the first n items;"
                      },
                      "objectParameterKeys": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "If specified, will only include these parameter keys of the model object. Otherwise all keys will be taken"
                      },
                      "ignoreObjectParameterKeys": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "If specified, will omit these keys when creating the dataset"
                      },
                      "view": {},
                      "authorizations": {
                        "$ref": "#/components/schemas/GroupAuthorizationObject"
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "The model you want to make a dataset from"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "price": {
                        "$ref": "#/components/schemas/Price",
                        "description": "How much does this dataset cost?"
                      },
                      "defaultView": {
                        "$ref": "#/components/schemas/ModelViewEnum"
                      },
                      "allowedModelViews": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/ModelViewEnum"
                        }
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/dataset/execute": {
      "put": {
        "tags": ["dataset"],
        "summary": "Execute dataset",
        "operationId": "generateDataset",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "filter",
                      "sort",
                      "maxRows",
                      "startFromIndex",
                      "objectParameterKeys",
                      "ignoreObjectParameterKeys",
                      "view",
                      "authorizations",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "slug",
                      "price",
                      "defaultView",
                      "allowedModelViews",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/dataset": {
      "delete": {
        "tags": ["dataset"],
        "summary": "Delete dataset",
        "operationId": "deleteDataset",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/device/read": {
      "post": {
        "tags": ["device"],
        "summary": "Read device",
        "operationId": "readDevice",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "currentPersonSlug",
                            "personSlugs",
                            "ip",
                            "city",
                            "position",
                            "positionRadiusKm",
                            "country",
                            "region",
                            "timezone",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "userAgentString",
                            "name",
                            "hasPapi",
                            "isOnlineCalculated",
                            "lastOnlineAt",
                            "isLocalIpCalculated",
                            "isFavorite",
                            "isPrivate",
                            "lastSyncDatabaseAtObject",
                            "persons",
                            "currentPersonCalculated",
                            "appOperationsCalculated",
                            "authenticationMethods",
                            "paymentLink",
                            "paymentLinkCreatedAt"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "currentPersonSlug",
                            "personSlugs",
                            "ip",
                            "city",
                            "position",
                            "positionRadiusKm",
                            "country",
                            "region",
                            "timezone",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "userAgentString",
                            "name",
                            "hasPapi",
                            "isOnlineCalculated",
                            "lastOnlineAt",
                            "isLocalIpCalculated",
                            "isFavorite",
                            "isPrivate",
                            "lastSyncDatabaseAtObject",
                            "persons",
                            "currentPersonCalculated",
                            "appOperationsCalculated",
                            "authenticationMethods",
                            "paymentLink",
                            "paymentLinkCreatedAt"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "currentPersonSlug",
                        "personSlugs",
                        "ip",
                        "city",
                        "position",
                        "positionRadiusKm",
                        "country",
                        "region",
                        "timezone",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "userAgentString",
                        "name",
                        "hasPapi",
                        "isOnlineCalculated",
                        "lastOnlineAt",
                        "isLocalIpCalculated",
                        "isFavorite",
                        "isPrivate",
                        "lastSyncDatabaseAtObject",
                        "persons",
                        "currentPersonCalculated",
                        "appOperationsCalculated",
                        "authenticationMethods",
                        "paymentLink",
                        "paymentLinkCreatedAt"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "currentPersonSlug",
                        "personSlugs",
                        "ip",
                        "city",
                        "position",
                        "positionRadiusKm",
                        "country",
                        "region",
                        "timezone",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "userAgentString",
                        "name",
                        "hasPapi",
                        "isOnlineCalculated",
                        "lastOnlineAt",
                        "isLocalIpCalculated",
                        "isFavorite",
                        "isPrivate",
                        "lastSyncDatabaseAtObject",
                        "persons",
                        "currentPersonCalculated",
                        "appOperationsCalculated",
                        "authenticationMethods",
                        "paymentLink",
                        "paymentLinkCreatedAt"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string",
                                "description": "AuthToken is used to identify a device. Unique identifier that is saved in the devices browser/app.\n\nIf the authToken is the same, we can be sure that the device is matched, even if the IP is different.\n\nShould be identical to ID"
                              },
                              "currentPersonSlug": {
                                "$ref": "#/components/schemas/Slug",
                                "description": "A device can switch between persons, by changing this value"
                              },
                              "personSlugs": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Id"
                                },
                                "description": "If the device is authenticated, this should be set.\n\nCan be unset by the person"
                              },
                              "ip": {
                                "type": "string",
                                "description": "The ip of the device. Can be a local IP or remote IP.\n\nNB: Port is not included"
                              },
                              "city": {
                                "type": "string"
                              },
                              "position": {
                                "$ref": "#/components/schemas/Position"
                              },
                              "positionRadiusKm": {
                                "type": "number"
                              },
                              "country": {
                                "type": "string"
                              },
                              "region": {
                                "type": "string"
                              },
                              "timezone": {
                                "type": "string"
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "userAgentString": {
                                "type": "string",
                                "description": "Raw `User-Agent` header.\n\nNOT used to identify the device, since the device can already be connected to a person!"
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the device, calculated based on metadata like location, os, and ip\n\nCan be edited by the user"
                              },
                              "hasPapi": {
                                "type": "boolean",
                                "description": "Is set to true if the devices IP is pinged and seems to have something that resembles a King OS PAPI."
                              },
                              "isOnlineCalculated": {
                                "type": "boolean",
                                "description": "Returning `true` or `false` indicating whether or not the IP is giving a response"
                              },
                              "lastOnlineAt": {
                                "type": "number",
                                "description": "Whenever the peer is online, this should update"
                              },
                              "isLocalIpCalculated": {
                                "type": "boolean",
                                "description": "if true, the above IP is a local one, meaning it cannot be accessed from outside of this network\n\nThis is easy to determine: local IP's must start with \"192.168\""
                              },
                              "isFavorite": {
                                "type": "boolean",
                                "description": "if `true`, this device will show on top"
                              },
                              "isPrivate": {
                                "type": "boolean",
                                "description": "If true, this peer should not be shared"
                              },
                              "lastSyncDatabaseAtObject": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "number"
                                },
                                "description": "last sync of any model\n\nUseful for example for a p2p messaging"
                              },
                              "persons": {
                                "type": "array",
                                "items": {},
                                "description": "reference to another model"
                              },
                              "currentPersonCalculated": {
                                "$ref": "#/components/schemas/Person",
                                "description": "If you have a currentPersonId, it is calculated and provided by selecting it from the persons array\n\nFor now, only provided by functioncontext"
                              },
                              "appOperationsCalculated": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/AppOperation"
                                },
                                "description": "Calculated all operations that can be exposed as apps. This is taken from `getAllAppOperations` function"
                              },
                              "authenticationMethods": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/AuthenticationMethod"
                                },
                                "description": "DEPRECATED: Going to move to `Person.authentication` in favor of simplicity.\n\nLater, we may need a `LoginAttempt` Model in order to facilitate 2FA because it may take multiple steps to log someone in.\n\nFor now, you're immediately logged in once the password or OTP matches the Person, and you can immediately set `currentPersonId` and `personIds`\n\nIf the `Device` is not identified as a person yet, this can be configured to authenticate with different methods. Once it matches to a person, this can be cleared and `personId` can be attached."
                              },
                              "paymentLink": {
                                "type": "string",
                                "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                              },
                              "paymentLinkCreatedAt": {
                                "type": "number",
                                "description": "Date the payment link was created so it's not too old"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/device/create": {
      "post": {
        "tags": ["device"],
        "summary": "Create device",
        "operationId": "createDevice",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string",
                          "description": "AuthToken is used to identify a device. Unique identifier that is saved in the devices browser/app.\n\nIf the authToken is the same, we can be sure that the device is matched, even if the IP is different.\n\nShould be identical to ID"
                        },
                        "currentPersonSlug": {
                          "$ref": "#/components/schemas/Slug",
                          "description": "A device can switch between persons, by changing this value"
                        },
                        "personSlugs": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Id"
                          },
                          "description": "If the device is authenticated, this should be set.\n\nCan be unset by the person"
                        },
                        "ip": {
                          "type": "string",
                          "description": "The ip of the device. Can be a local IP or remote IP.\n\nNB: Port is not included"
                        },
                        "city": {
                          "type": "string"
                        },
                        "position": {
                          "$ref": "#/components/schemas/Position"
                        },
                        "positionRadiusKm": {
                          "type": "number"
                        },
                        "country": {
                          "type": "string"
                        },
                        "region": {
                          "type": "string"
                        },
                        "timezone": {
                          "type": "string"
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "userAgentString": {
                          "type": "string",
                          "description": "Raw `User-Agent` header.\n\nNOT used to identify the device, since the device can already be connected to a person!"
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the device, calculated based on metadata like location, os, and ip\n\nCan be edited by the user"
                        },
                        "hasPapi": {
                          "type": "boolean",
                          "description": "Is set to true if the devices IP is pinged and seems to have something that resembles a King OS PAPI."
                        },
                        "isOnlineCalculated": {
                          "type": "boolean",
                          "description": "Returning `true` or `false` indicating whether or not the IP is giving a response"
                        },
                        "lastOnlineAt": {
                          "type": "number",
                          "description": "Whenever the peer is online, this should update"
                        },
                        "isLocalIpCalculated": {
                          "type": "boolean",
                          "description": "if true, the above IP is a local one, meaning it cannot be accessed from outside of this network\n\nThis is easy to determine: local IP's must start with \"192.168\""
                        },
                        "isFavorite": {
                          "type": "boolean",
                          "description": "if `true`, this device will show on top"
                        },
                        "isPrivate": {
                          "type": "boolean",
                          "description": "If true, this peer should not be shared"
                        },
                        "lastSyncDatabaseAtObject": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "number"
                          },
                          "description": "last sync of any model\n\nUseful for example for a p2p messaging"
                        },
                        "persons": {
                          "type": "array",
                          "items": {},
                          "description": "reference to another model"
                        },
                        "currentPersonCalculated": {
                          "$ref": "#/components/schemas/Person",
                          "description": "If you have a currentPersonId, it is calculated and provided by selecting it from the persons array\n\nFor now, only provided by functioncontext"
                        },
                        "appOperationsCalculated": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AppOperation"
                          },
                          "description": "Calculated all operations that can be exposed as apps. This is taken from `getAllAppOperations` function"
                        },
                        "authenticationMethods": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AuthenticationMethod"
                          },
                          "description": "DEPRECATED: Going to move to `Person.authentication` in favor of simplicity.\n\nLater, we may need a `LoginAttempt` Model in order to facilitate 2FA because it may take multiple steps to log someone in.\n\nFor now, you're immediately logged in once the password or OTP matches the Person, and you can immediately set `currentPersonId` and `personIds`\n\nIf the `Device` is not identified as a person yet, this can be configured to authenticate with different methods. Once it matches to a person, this can be cleared and `personId` can be attached."
                        },
                        "paymentLink": {
                          "type": "string",
                          "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                        },
                        "paymentLinkCreatedAt": {
                          "type": "number",
                          "description": "Date the payment link was created so it's not too old"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/device/update": {
      "post": {
        "tags": ["device"],
        "summary": "Update device",
        "operationId": "updateDevice",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string",
                        "description": "AuthToken is used to identify a device. Unique identifier that is saved in the devices browser/app.\n\nIf the authToken is the same, we can be sure that the device is matched, even if the IP is different.\n\nShould be identical to ID"
                      },
                      "currentPersonSlug": {
                        "$ref": "#/components/schemas/Slug",
                        "description": "A device can switch between persons, by changing this value"
                      },
                      "personSlugs": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Id"
                        },
                        "description": "If the device is authenticated, this should be set.\n\nCan be unset by the person"
                      },
                      "ip": {
                        "type": "string",
                        "description": "The ip of the device. Can be a local IP or remote IP.\n\nNB: Port is not included"
                      },
                      "city": {
                        "type": "string"
                      },
                      "position": {
                        "$ref": "#/components/schemas/Position"
                      },
                      "positionRadiusKm": {
                        "type": "number"
                      },
                      "country": {
                        "type": "string"
                      },
                      "region": {
                        "type": "string"
                      },
                      "timezone": {
                        "type": "string"
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "userAgentString": {
                        "type": "string",
                        "description": "Raw `User-Agent` header.\n\nNOT used to identify the device, since the device can already be connected to a person!"
                      },
                      "name": {
                        "type": "string",
                        "description": "Name of the device, calculated based on metadata like location, os, and ip\n\nCan be edited by the user"
                      },
                      "hasPapi": {
                        "type": "boolean",
                        "description": "Is set to true if the devices IP is pinged and seems to have something that resembles a King OS PAPI."
                      },
                      "isOnlineCalculated": {
                        "type": "boolean",
                        "description": "Returning `true` or `false` indicating whether or not the IP is giving a response"
                      },
                      "lastOnlineAt": {
                        "type": "number",
                        "description": "Whenever the peer is online, this should update"
                      },
                      "isLocalIpCalculated": {
                        "type": "boolean",
                        "description": "if true, the above IP is a local one, meaning it cannot be accessed from outside of this network\n\nThis is easy to determine: local IP's must start with \"192.168\""
                      },
                      "isFavorite": {
                        "type": "boolean",
                        "description": "if `true`, this device will show on top"
                      },
                      "isPrivate": {
                        "type": "boolean",
                        "description": "If true, this peer should not be shared"
                      },
                      "lastSyncDatabaseAtObject": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "number"
                        },
                        "description": "last sync of any model\n\nUseful for example for a p2p messaging"
                      },
                      "persons": {
                        "type": "array",
                        "items": {},
                        "description": "reference to another model"
                      },
                      "currentPersonCalculated": {
                        "$ref": "#/components/schemas/Person",
                        "description": "If you have a currentPersonId, it is calculated and provided by selecting it from the persons array\n\nFor now, only provided by functioncontext"
                      },
                      "appOperationsCalculated": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/AppOperation"
                        },
                        "description": "Calculated all operations that can be exposed as apps. This is taken from `getAllAppOperations` function"
                      },
                      "authenticationMethods": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/AuthenticationMethod"
                        },
                        "description": "DEPRECATED: Going to move to `Person.authentication` in favor of simplicity.\n\nLater, we may need a `LoginAttempt` Model in order to facilitate 2FA because it may take multiple steps to log someone in.\n\nFor now, you're immediately logged in once the password or OTP matches the Person, and you can immediately set `currentPersonId` and `personIds`\n\nIf the `Device` is not identified as a person yet, this can be configured to authenticate with different methods. Once it matches to a person, this can be cleared and `personId` can be attached."
                      },
                      "paymentLink": {
                        "type": "string",
                        "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                      },
                      "paymentLinkCreatedAt": {
                        "type": "number",
                        "description": "Date the payment link was created so it's not too old"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/device/execute": {
      "put": {
        "tags": ["device"],
        "summary": "Execute device",
        "operationId": "generateDevice",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "__id",
                      "currentPersonSlug",
                      "personSlugs",
                      "ip",
                      "city",
                      "position",
                      "positionRadiusKm",
                      "country",
                      "region",
                      "timezone",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "userAgentString",
                      "name",
                      "hasPapi",
                      "isOnlineCalculated",
                      "lastOnlineAt",
                      "isLocalIpCalculated",
                      "isFavorite",
                      "isPrivate",
                      "lastSyncDatabaseAtObject",
                      "persons",
                      "currentPersonCalculated",
                      "appOperationsCalculated",
                      "authenticationMethods",
                      "paymentLink",
                      "paymentLinkCreatedAt"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/device": {
      "delete": {
        "tags": ["device"],
        "summary": "Delete device",
        "operationId": "deleteDevice",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/download/read": {
      "post": {
        "tags": ["download"],
        "summary": "Read download",
        "operationId": "readDownload",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "persistence",
                            "availableUntilAt",
                            "download_projectRelativePath",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "persistence",
                            "availableUntilAt",
                            "download_projectRelativePath",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "persistence",
                        "availableUntilAt",
                        "download_projectRelativePath",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "persistence",
                        "availableUntilAt",
                        "download_projectRelativePath",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "id": {
                                "type": "string",
                                "description": "download ID"
                              },
                              "persistence": {
                                "type": "string",
                                "enum": ["one-time", "forever"],
                                "description": "defaults to \"one-time\""
                              },
                              "availableUntilAt": {
                                "type": "number",
                                "description": "If given, download is availablue until this date is past."
                              },
                              "download_projectRelativePath": {
                                "type": "string",
                                "description": "URL to download"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/download/create": {
      "post": {
        "tags": ["download"],
        "summary": "Create download",
        "operationId": "createDownload",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "id": {
                          "type": "string",
                          "description": "download ID"
                        },
                        "persistence": {
                          "type": "string",
                          "enum": ["one-time", "forever"],
                          "description": "defaults to \"one-time\""
                        },
                        "availableUntilAt": {
                          "type": "number",
                          "description": "If given, download is availablue until this date is past."
                        },
                        "download_projectRelativePath": {
                          "type": "string",
                          "description": "URL to download"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/download/update": {
      "post": {
        "tags": ["download"],
        "summary": "Update download",
        "operationId": "updateDownload",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "id": {
                        "type": "string",
                        "description": "download ID"
                      },
                      "persistence": {
                        "type": "string",
                        "enum": ["one-time", "forever"],
                        "description": "defaults to \"one-time\""
                      },
                      "availableUntilAt": {
                        "type": "number",
                        "description": "If given, download is availablue until this date is past."
                      },
                      "download_projectRelativePath": {
                        "type": "string",
                        "description": "URL to download"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/download/execute": {
      "put": {
        "tags": ["download"],
        "summary": "Execute download",
        "operationId": "generateDownload",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "id",
                      "persistence",
                      "availableUntilAt",
                      "download_projectRelativePath",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/download": {
      "delete": {
        "tags": ["download"],
        "summary": "Delete download",
        "operationId": "deleteDownload",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/filesave/read": {
      "post": {
        "tags": ["filesave"],
        "summary": "Read filesave",
        "operationId": "readFilesave",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "projectRelativeFilePath",
                            "originalProjectRelativeFilePath",
                            "updatedAt",
                            "isDeleted",
                            "content",
                            "previousContent",
                            "canParse",
                            "difference",
                            "differenceSummary",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "projectRelativeFilePath",
                            "originalProjectRelativeFilePath",
                            "updatedAt",
                            "isDeleted",
                            "content",
                            "previousContent",
                            "canParse",
                            "difference",
                            "differenceSummary",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "projectRelativeFilePath",
                        "originalProjectRelativeFilePath",
                        "updatedAt",
                        "isDeleted",
                        "content",
                        "previousContent",
                        "canParse",
                        "difference",
                        "differenceSummary",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "projectRelativeFilePath",
                        "originalProjectRelativeFilePath",
                        "updatedAt",
                        "isDeleted",
                        "content",
                        "previousContent",
                        "canParse",
                        "difference",
                        "differenceSummary",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "id": {
                                "type": "string"
                              },
                              "projectRelativeFilePath": {
                                "type": "string"
                              },
                              "originalProjectRelativeFilePath": {
                                "type": "string",
                                "description": "If given, this indicates the file has been moved/renamed over time and this was the original filename when saved"
                              },
                              "updatedAt": {
                                "type": "number"
                              },
                              "isDeleted": {
                                "type": "boolean"
                              },
                              "content": {
                                "type": "string"
                              },
                              "previousContent": {
                                "type": "string"
                              },
                              "canParse": {
                                "type": "boolean"
                              },
                              "difference": {
                                "type": "string"
                              },
                              "differenceSummary": {
                                "type": "string"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/filesave/create": {
      "post": {
        "tags": ["filesave"],
        "summary": "Create filesave",
        "operationId": "createFilesave",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "id": {
                          "type": "string"
                        },
                        "projectRelativeFilePath": {
                          "type": "string"
                        },
                        "originalProjectRelativeFilePath": {
                          "type": "string",
                          "description": "If given, this indicates the file has been moved/renamed over time and this was the original filename when saved"
                        },
                        "updatedAt": {
                          "type": "number"
                        },
                        "isDeleted": {
                          "type": "boolean"
                        },
                        "content": {
                          "type": "string"
                        },
                        "previousContent": {
                          "type": "string"
                        },
                        "canParse": {
                          "type": "boolean"
                        },
                        "difference": {
                          "type": "string"
                        },
                        "differenceSummary": {
                          "type": "string"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/filesave/update": {
      "post": {
        "tags": ["filesave"],
        "summary": "Update filesave",
        "operationId": "updateFilesave",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "id": {
                        "type": "string"
                      },
                      "projectRelativeFilePath": {
                        "type": "string"
                      },
                      "originalProjectRelativeFilePath": {
                        "type": "string",
                        "description": "If given, this indicates the file has been moved/renamed over time and this was the original filename when saved"
                      },
                      "updatedAt": {
                        "type": "number"
                      },
                      "isDeleted": {
                        "type": "boolean"
                      },
                      "content": {
                        "type": "string"
                      },
                      "previousContent": {
                        "type": "string"
                      },
                      "canParse": {
                        "type": "boolean"
                      },
                      "difference": {
                        "type": "string"
                      },
                      "differenceSummary": {
                        "type": "string"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/filesave/execute": {
      "put": {
        "tags": ["filesave"],
        "summary": "Execute filesave",
        "operationId": "generateFilesave",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "id",
                      "projectRelativeFilePath",
                      "originalProjectRelativeFilePath",
                      "updatedAt",
                      "isDeleted",
                      "content",
                      "previousContent",
                      "canParse",
                      "difference",
                      "differenceSummary",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/filesave": {
      "delete": {
        "tags": ["filesave"],
        "summary": "Delete filesave",
        "operationId": "deleteFilesave",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/gpt-map/read": {
      "post": {
        "tags": ["gpt-map"],
        "summary": "Read gpt-map",
        "operationId": "readGptMap",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "owner_personSlug",
                            "mapModelName",
                            "mapPrompt",
                            "listDescription",
                            "newKeys",
                            "requiredKeys",
                            "pluginNames",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "owner_personSlug",
                            "mapModelName",
                            "mapPrompt",
                            "listDescription",
                            "newKeys",
                            "requiredKeys",
                            "pluginNames",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "owner_personSlug",
                        "mapModelName",
                        "mapPrompt",
                        "listDescription",
                        "newKeys",
                        "requiredKeys",
                        "pluginNames",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "owner_personSlug",
                        "mapModelName",
                        "mapPrompt",
                        "listDescription",
                        "newKeys",
                        "requiredKeys",
                        "pluginNames",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "owner_personSlug": {
                                "type": "string"
                              },
                              "mapModelName": {
                                "type": "string",
                                "description": "If provided, this should be the name of the model that the GptMap augments"
                              },
                              "mapPrompt": {
                                "type": "string",
                                "description": "The original mapPrompt"
                              },
                              "listDescription": {
                                "type": "string"
                              },
                              "newKeys": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "key": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": "string"
                                    },
                                    "type": {
                                      "type": "string"
                                    }
                                  },
                                  "required": ["key", "description", "type"],
                                  "additionalProperties": false
                                }
                              },
                              "requiredKeys": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "pluginNames": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/gpt-map/create": {
      "post": {
        "tags": ["gpt-map"],
        "summary": "Create gpt-map",
        "operationId": "createGptMap",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "owner_personSlug": {
                          "type": "string"
                        },
                        "mapModelName": {
                          "type": "string",
                          "description": "If provided, this should be the name of the model that the GptMap augments"
                        },
                        "mapPrompt": {
                          "type": "string",
                          "description": "The original mapPrompt"
                        },
                        "listDescription": {
                          "type": "string"
                        },
                        "newKeys": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              }
                            },
                            "required": ["key", "description", "type"],
                            "additionalProperties": false
                          }
                        },
                        "requiredKeys": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "pluginNames": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/gpt-map/update": {
      "post": {
        "tags": ["gpt-map"],
        "summary": "Update gpt-map",
        "operationId": "updateGptMap",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "owner_personSlug": {
                        "type": "string"
                      },
                      "mapModelName": {
                        "type": "string",
                        "description": "If provided, this should be the name of the model that the GptMap augments"
                      },
                      "mapPrompt": {
                        "type": "string",
                        "description": "The original mapPrompt"
                      },
                      "listDescription": {
                        "type": "string"
                      },
                      "newKeys": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "type": {
                              "type": "string"
                            }
                          },
                          "required": ["key", "description", "type"],
                          "additionalProperties": false
                        }
                      },
                      "requiredKeys": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "pluginNames": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/gpt-map/execute": {
      "put": {
        "tags": ["gpt-map"],
        "summary": "Execute gpt-map",
        "operationId": "generateGptMap",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "slug",
                      "owner_personSlug",
                      "mapModelName",
                      "mapPrompt",
                      "listDescription",
                      "newKeys",
                      "requiredKeys",
                      "pluginNames",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/gpt-map": {
      "delete": {
        "tags": ["gpt-map"],
        "summary": "Delete gpt-map",
        "operationId": "deleteGptMap",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/group/read": {
      "post": {
        "tags": ["group"],
        "summary": "Read group",
        "operationId": "readGroup",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "subscriptionType",
                            "paymentAuthToken",
                            "stripeCustomerEmail",
                            "hasSubscription",
                            "paymentLink",
                            "paymentLinkCreatedAt",
                            "paymentLinkExpiresAt",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "name",
                            "slug",
                            "owner_personSlugs",
                            "description",
                            "inherited_groupSlugs",
                            "customAuthorizations",
                            "indexedAuthorizationCalculated",
                            "admin_personSlugs",
                            "personSlugs",
                            "persons",
                            "channels",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "subscriptionType",
                            "paymentAuthToken",
                            "stripeCustomerEmail",
                            "hasSubscription",
                            "paymentLink",
                            "paymentLinkCreatedAt",
                            "paymentLinkExpiresAt",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "name",
                            "slug",
                            "owner_personSlugs",
                            "description",
                            "inherited_groupSlugs",
                            "customAuthorizations",
                            "indexedAuthorizationCalculated",
                            "admin_personSlugs",
                            "personSlugs",
                            "persons",
                            "channels",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "subscriptionType",
                        "paymentAuthToken",
                        "stripeCustomerEmail",
                        "hasSubscription",
                        "paymentLink",
                        "paymentLinkCreatedAt",
                        "paymentLinkExpiresAt",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "name",
                        "slug",
                        "owner_personSlugs",
                        "description",
                        "inherited_groupSlugs",
                        "customAuthorizations",
                        "indexedAuthorizationCalculated",
                        "admin_personSlugs",
                        "personSlugs",
                        "persons",
                        "channels",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "subscriptionType",
                        "paymentAuthToken",
                        "stripeCustomerEmail",
                        "hasSubscription",
                        "paymentLink",
                        "paymentLinkCreatedAt",
                        "paymentLinkExpiresAt",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "name",
                        "slug",
                        "owner_personSlugs",
                        "description",
                        "inherited_groupSlugs",
                        "customAuthorizations",
                        "indexedAuthorizationCalculated",
                        "admin_personSlugs",
                        "personSlugs",
                        "persons",
                        "channels",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "subscriptionType": {
                                "type": "string",
                                "enum": ["stripe", "gift"],
                                "description": "In case of 'gift' it will not be removed"
                              },
                              "paymentAuthToken": {
                                "type": "string",
                                "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
                              },
                              "stripeCustomerEmail": {
                                "type": "string",
                                "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
                              },
                              "hasSubscription": {
                                "type": "boolean",
                                "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
                              },
                              "paymentLink": {
                                "type": "string",
                                "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                              },
                              "paymentLinkCreatedAt": {
                                "type": "number",
                                "description": "Date the payment link was created so it's not too old"
                              },
                              "paymentLinkExpiresAt": {
                                "type": "number"
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the group (will set slug)\n\nNB: this can be used in functions to specify certain access to groups. It should there fore be unique and you should be careful when changing it!"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "owner_personSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "TODO: Persons that are allowed to see who's in this group. Useful for research pipelines"
                              },
                              "description": {
                                "type": "string"
                              },
                              "inherited_groupSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Any group recursively inherits other groups until it finds itself being in a loop. This way you can have authorizations applied on multiple groups at once, more easily\n\nTODO: change this into parent_groupSlugs. it's just a hierarchical categorisation, in a way."
                              },
                              "customAuthorizations": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Authorization"
                                },
                                "description": "DEPRECATED: not needed\n\nOptionally, provide custom authorization to a group"
                              },
                              "indexedAuthorizationCalculated": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/AuthorizationModel"
                                }
                              },
                              "admin_personSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Who can manage the groups channels?"
                              },
                              "personSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "TODO: there should be some functions that help you  to add people to groups\n\n- addToGroup(personSlug, groupSlug)\n- removeFromGroup(personSlug, groupSlug)\n\nThese update the person entry and the group entry so there's a two-way index."
                              },
                              "persons": {
                                "type": "array",
                                "items": {}
                              },
                              "channels": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "slug": {
                                      "type": "string"
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": "string"
                                    }
                                  },
                                  "required": ["slug", "title", "description"],
                                  "additionalProperties": false
                                },
                                "description": "List of channels for members of the group to conversate in"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/group/create": {
      "post": {
        "tags": ["group"],
        "summary": "Create group",
        "operationId": "createGroup",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "subscriptionType": {
                          "type": "string",
                          "enum": ["stripe", "gift"],
                          "description": "In case of 'gift' it will not be removed"
                        },
                        "paymentAuthToken": {
                          "type": "string",
                          "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
                        },
                        "stripeCustomerEmail": {
                          "type": "string",
                          "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
                        },
                        "hasSubscription": {
                          "type": "boolean",
                          "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
                        },
                        "paymentLink": {
                          "type": "string",
                          "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                        },
                        "paymentLinkCreatedAt": {
                          "type": "number",
                          "description": "Date the payment link was created so it's not too old"
                        },
                        "paymentLinkExpiresAt": {
                          "type": "number"
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the group (will set slug)\n\nNB: this can be used in functions to specify certain access to groups. It should there fore be unique and you should be careful when changing it!"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "owner_personSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "TODO: Persons that are allowed to see who's in this group. Useful for research pipelines"
                        },
                        "description": {
                          "type": "string"
                        },
                        "inherited_groupSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Any group recursively inherits other groups until it finds itself being in a loop. This way you can have authorizations applied on multiple groups at once, more easily\n\nTODO: change this into parent_groupSlugs. it's just a hierarchical categorisation, in a way."
                        },
                        "customAuthorizations": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Authorization"
                          },
                          "description": "DEPRECATED: not needed\n\nOptionally, provide custom authorization to a group"
                        },
                        "indexedAuthorizationCalculated": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AuthorizationModel"
                          }
                        },
                        "admin_personSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Who can manage the groups channels?"
                        },
                        "personSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "TODO: there should be some functions that help you  to add people to groups\n\n- addToGroup(personSlug, groupSlug)\n- removeFromGroup(personSlug, groupSlug)\n\nThese update the person entry and the group entry so there's a two-way index."
                        },
                        "persons": {
                          "type": "array",
                          "items": {}
                        },
                        "channels": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              }
                            },
                            "required": ["slug", "title", "description"],
                            "additionalProperties": false
                          },
                          "description": "List of channels for members of the group to conversate in"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/group/update": {
      "post": {
        "tags": ["group"],
        "summary": "Update group",
        "operationId": "updateGroup",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "subscriptionType": {
                        "type": "string",
                        "enum": ["stripe", "gift"],
                        "description": "In case of 'gift' it will not be removed"
                      },
                      "paymentAuthToken": {
                        "type": "string",
                        "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
                      },
                      "stripeCustomerEmail": {
                        "type": "string",
                        "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
                      },
                      "hasSubscription": {
                        "type": "boolean",
                        "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
                      },
                      "paymentLink": {
                        "type": "string",
                        "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                      },
                      "paymentLinkCreatedAt": {
                        "type": "number",
                        "description": "Date the payment link was created so it's not too old"
                      },
                      "paymentLinkExpiresAt": {
                        "type": "number"
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "name": {
                        "type": "string",
                        "description": "Name of the group (will set slug)\n\nNB: this can be used in functions to specify certain access to groups. It should there fore be unique and you should be careful when changing it!"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "owner_personSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "TODO: Persons that are allowed to see who's in this group. Useful for research pipelines"
                      },
                      "description": {
                        "type": "string"
                      },
                      "inherited_groupSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Any group recursively inherits other groups until it finds itself being in a loop. This way you can have authorizations applied on multiple groups at once, more easily\n\nTODO: change this into parent_groupSlugs. it's just a hierarchical categorisation, in a way."
                      },
                      "customAuthorizations": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Authorization"
                        },
                        "description": "DEPRECATED: not needed\n\nOptionally, provide custom authorization to a group"
                      },
                      "indexedAuthorizationCalculated": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/AuthorizationModel"
                        }
                      },
                      "admin_personSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Who can manage the groups channels?"
                      },
                      "personSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "TODO: there should be some functions that help you  to add people to groups\n\n- addToGroup(personSlug, groupSlug)\n- removeFromGroup(personSlug, groupSlug)\n\nThese update the person entry and the group entry so there's a two-way index."
                      },
                      "persons": {
                        "type": "array",
                        "items": {}
                      },
                      "channels": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "slug": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            }
                          },
                          "required": ["slug", "title", "description"],
                          "additionalProperties": false
                        },
                        "description": "List of channels for members of the group to conversate in"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/group/execute": {
      "put": {
        "tags": ["group"],
        "summary": "Execute group",
        "operationId": "generateGroup",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "subscriptionType",
                      "paymentAuthToken",
                      "stripeCustomerEmail",
                      "hasSubscription",
                      "paymentLink",
                      "paymentLinkCreatedAt",
                      "paymentLinkExpiresAt",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "name",
                      "slug",
                      "owner_personSlugs",
                      "description",
                      "inherited_groupSlugs",
                      "customAuthorizations",
                      "indexedAuthorizationCalculated",
                      "admin_personSlugs",
                      "personSlugs",
                      "persons",
                      "channels",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/group": {
      "delete": {
        "tags": ["group"],
        "summary": "Delete group",
        "operationId": "deleteGroup",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/guided-conversation-pipeline/read": {
      "post": {
        "tags": ["guided-conversation-pipeline"],
        "summary": "Read guided-conversation-pipeline",
        "operationId": "readGuidedConversationPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "slug",
                            "category",
                            "status",
                            "owner_personSlug",
                            "queueIds",
                            "queues",
                            "maxBudgetPerDayEuro",
                            "maxTotalBudgetEuro",
                            "totalCostEuro",
                            "totalCostTodayEuro",
                            "estimatedProfitEuro",
                            "notesDescription",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "purposeDescription",
                            "groupSlugsCalculated",
                            "relationsAmountCalculated",
                            "conversationStrategies",
                            "personaSlugs",
                            "target_groupSlug",
                            "dataPipelineSlugs",
                            "dataPipelines",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "slug",
                            "category",
                            "status",
                            "owner_personSlug",
                            "queueIds",
                            "queues",
                            "maxBudgetPerDayEuro",
                            "maxTotalBudgetEuro",
                            "totalCostEuro",
                            "totalCostTodayEuro",
                            "estimatedProfitEuro",
                            "notesDescription",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "purposeDescription",
                            "groupSlugsCalculated",
                            "relationsAmountCalculated",
                            "conversationStrategies",
                            "personaSlugs",
                            "target_groupSlug",
                            "dataPipelineSlugs",
                            "dataPipelines",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "slug",
                        "category",
                        "status",
                        "owner_personSlug",
                        "queueIds",
                        "queues",
                        "maxBudgetPerDayEuro",
                        "maxTotalBudgetEuro",
                        "totalCostEuro",
                        "totalCostTodayEuro",
                        "estimatedProfitEuro",
                        "notesDescription",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "purposeDescription",
                        "groupSlugsCalculated",
                        "relationsAmountCalculated",
                        "conversationStrategies",
                        "personaSlugs",
                        "target_groupSlug",
                        "dataPipelineSlugs",
                        "dataPipelines",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "slug",
                        "category",
                        "status",
                        "owner_personSlug",
                        "queueIds",
                        "queues",
                        "maxBudgetPerDayEuro",
                        "maxTotalBudgetEuro",
                        "totalCostEuro",
                        "totalCostTodayEuro",
                        "estimatedProfitEuro",
                        "notesDescription",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "purposeDescription",
                        "groupSlugsCalculated",
                        "relationsAmountCalculated",
                        "conversationStrategies",
                        "personaSlugs",
                        "target_groupSlug",
                        "dataPipelineSlugs",
                        "dataPipelines",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "draft",
                                  "ongoing",
                                  "paused",
                                  "over-budget"
                                ]
                              },
                              "owner_personSlug": {
                                "type": "string",
                                "description": "Who is paying for this (and is granted access to the results)"
                              },
                              "queueIds": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Queue items that have been created for this pipeline"
                              },
                              "queues": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Queue"
                                }
                              },
                              "maxBudgetPerDayEuro": {
                                "type": "number",
                                "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
                              },
                              "maxTotalBudgetEuro": {
                                "type": "number"
                              },
                              "totalCostEuro": {
                                "type": "number",
                                "description": "Total budget spent until now"
                              },
                              "totalCostTodayEuro": {
                                "type": "number",
                                "description": "Total budget spent today"
                              },
                              "estimatedProfitEuro": {
                                "type": "number",
                                "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
                              },
                              "notesDescription": {
                                "type": "string",
                                "description": "Notes by the owner"
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "purposeDescription": {
                                "type": "string",
                                "description": "Human language description the purpose of this conversation"
                              },
                              "groupSlugsCalculated": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Calculated based on all groups of all research pipelines"
                              },
                              "relationsAmountCalculated": {
                                "type": "number"
                              },
                              "conversationStrategies": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Human language description of the strategy\n\nBased on these and a person from the target audience, we can select the persona with the best person fit. With all that, we create a `Relation` with a `personGoal`.\n\nNB: at a later stage, the strategies can be automatically filled in by AI"
                              },
                              "personaSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Based on the different strategies that can be manually filled in, select or create multiple personas.\n\nList of personas that can be used for the strategies."
                              },
                              "target_groupSlug": {
                                "type": "string"
                              },
                              "dataPipelineSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Pipelines that need to be activated if we run out of persons"
                              },
                              "dataPipelines": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/DataPipeline"
                                }
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/guided-conversation-pipeline/create": {
      "post": {
        "tags": ["guided-conversation-pipeline"],
        "summary": "Create guided-conversation-pipeline",
        "operationId": "createGuidedConversationPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "slug": {
                          "type": "string"
                        },
                        "category": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["draft", "ongoing", "paused", "over-budget"]
                        },
                        "owner_personSlug": {
                          "type": "string",
                          "description": "Who is paying for this (and is granted access to the results)"
                        },
                        "queueIds": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Queue items that have been created for this pipeline"
                        },
                        "queues": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Queue"
                          }
                        },
                        "maxBudgetPerDayEuro": {
                          "type": "number",
                          "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
                        },
                        "maxTotalBudgetEuro": {
                          "type": "number"
                        },
                        "totalCostEuro": {
                          "type": "number",
                          "description": "Total budget spent until now"
                        },
                        "totalCostTodayEuro": {
                          "type": "number",
                          "description": "Total budget spent today"
                        },
                        "estimatedProfitEuro": {
                          "type": "number",
                          "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
                        },
                        "notesDescription": {
                          "type": "string",
                          "description": "Notes by the owner"
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "purposeDescription": {
                          "type": "string",
                          "description": "Human language description the purpose of this conversation"
                        },
                        "groupSlugsCalculated": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Calculated based on all groups of all research pipelines"
                        },
                        "relationsAmountCalculated": {
                          "type": "number"
                        },
                        "conversationStrategies": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Human language description of the strategy\n\nBased on these and a person from the target audience, we can select the persona with the best person fit. With all that, we create a `Relation` with a `personGoal`.\n\nNB: at a later stage, the strategies can be automatically filled in by AI"
                        },
                        "personaSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Based on the different strategies that can be manually filled in, select or create multiple personas.\n\nList of personas that can be used for the strategies."
                        },
                        "target_groupSlug": {
                          "type": "string"
                        },
                        "dataPipelineSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Pipelines that need to be activated if we run out of persons"
                        },
                        "dataPipelines": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/DataPipeline"
                          }
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/guided-conversation-pipeline/update": {
      "post": {
        "tags": ["guided-conversation-pipeline"],
        "summary": "Update guided-conversation-pipeline",
        "operationId": "updateGuidedConversationPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string",
                        "enum": ["draft", "ongoing", "paused", "over-budget"]
                      },
                      "owner_personSlug": {
                        "type": "string",
                        "description": "Who is paying for this (and is granted access to the results)"
                      },
                      "queueIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Queue items that have been created for this pipeline"
                      },
                      "queues": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Queue"
                        }
                      },
                      "maxBudgetPerDayEuro": {
                        "type": "number",
                        "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
                      },
                      "maxTotalBudgetEuro": {
                        "type": "number"
                      },
                      "totalCostEuro": {
                        "type": "number",
                        "description": "Total budget spent until now"
                      },
                      "totalCostTodayEuro": {
                        "type": "number",
                        "description": "Total budget spent today"
                      },
                      "estimatedProfitEuro": {
                        "type": "number",
                        "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
                      },
                      "notesDescription": {
                        "type": "string",
                        "description": "Notes by the owner"
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "purposeDescription": {
                        "type": "string",
                        "description": "Human language description the purpose of this conversation"
                      },
                      "groupSlugsCalculated": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Calculated based on all groups of all research pipelines"
                      },
                      "relationsAmountCalculated": {
                        "type": "number"
                      },
                      "conversationStrategies": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Human language description of the strategy\n\nBased on these and a person from the target audience, we can select the persona with the best person fit. With all that, we create a `Relation` with a `personGoal`.\n\nNB: at a later stage, the strategies can be automatically filled in by AI"
                      },
                      "personaSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Based on the different strategies that can be manually filled in, select or create multiple personas.\n\nList of personas that can be used for the strategies."
                      },
                      "target_groupSlug": {
                        "type": "string"
                      },
                      "dataPipelineSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Pipelines that need to be activated if we run out of persons"
                      },
                      "dataPipelines": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/DataPipeline"
                        }
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/guided-conversation-pipeline/execute": {
      "put": {
        "tags": ["guided-conversation-pipeline"],
        "summary": "Execute guided-conversation-pipeline",
        "operationId": "generateGuidedConversationPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "slug",
                      "category",
                      "status",
                      "owner_personSlug",
                      "queueIds",
                      "queues",
                      "maxBudgetPerDayEuro",
                      "maxTotalBudgetEuro",
                      "totalCostEuro",
                      "totalCostTodayEuro",
                      "estimatedProfitEuro",
                      "notesDescription",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "purposeDescription",
                      "groupSlugsCalculated",
                      "relationsAmountCalculated",
                      "conversationStrategies",
                      "personaSlugs",
                      "target_groupSlug",
                      "dataPipelineSlugs",
                      "dataPipelines",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/guided-conversation-pipeline": {
      "delete": {
        "tags": ["guided-conversation-pipeline"],
        "summary": "Delete guided-conversation-pipeline",
        "operationId": "deleteGuidedConversationPipeline",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/key-performance-indicator/read": {
      "post": {
        "tags": ["key-performance-indicator"],
        "summary": "Read key-performance-indicator",
        "operationId": "readKeyPerformanceIndicator",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "fromDate",
                            "untilDate",
                            "messagesReceivedAmount",
                            "messagesSentAmount",
                            "emailReceivedAmount",
                            "emailSentAmount",
                            "revenueEuros",
                            "newRelationsAmount",
                            "isAlreadyCalculated",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "fromDate",
                            "untilDate",
                            "messagesReceivedAmount",
                            "messagesSentAmount",
                            "emailReceivedAmount",
                            "emailSentAmount",
                            "revenueEuros",
                            "newRelationsAmount",
                            "isAlreadyCalculated",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "fromDate",
                        "untilDate",
                        "messagesReceivedAmount",
                        "messagesSentAmount",
                        "emailReceivedAmount",
                        "emailSentAmount",
                        "revenueEuros",
                        "newRelationsAmount",
                        "isAlreadyCalculated",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "fromDate",
                        "untilDate",
                        "messagesReceivedAmount",
                        "messagesSentAmount",
                        "emailReceivedAmount",
                        "emailSentAmount",
                        "revenueEuros",
                        "newRelationsAmount",
                        "isAlreadyCalculated",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "personSlug": {
                                "type": "string",
                                "description": "always filled in"
                              },
                              "fromDate": {
                                "type": "string"
                              },
                              "untilDate": {
                                "type": "string",
                                "description": "if provided, should be a date later than \"fromDate\", which makes this KPI item a summary over multiple dates if not provided, this KPI item is just a single day"
                              },
                              "messagesReceivedAmount": {
                                "type": "number"
                              },
                              "messagesSentAmount": {
                                "type": "number"
                              },
                              "emailReceivedAmount": {
                                "type": "number"
                              },
                              "emailSentAmount": {
                                "type": "number"
                              },
                              "revenueEuros": {
                                "type": "number",
                                "description": "fetch data from stripe (ensure to check metadata.personaSlug)"
                              },
                              "newRelationsAmount": {
                                "type": "number",
                                "description": "see all relations of the person and look for their createdAt (not person.createdAt but relation.createdAt)"
                              },
                              "isAlreadyCalculated": {
                                "type": "boolean",
                                "description": "If true, this was already there. Not to be stored"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/key-performance-indicator/create": {
      "post": {
        "tags": ["key-performance-indicator"],
        "summary": "Create key-performance-indicator",
        "operationId": "createKeyPerformanceIndicator",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "personSlug": {
                          "type": "string",
                          "description": "always filled in"
                        },
                        "fromDate": {
                          "type": "string"
                        },
                        "untilDate": {
                          "type": "string",
                          "description": "if provided, should be a date later than \"fromDate\", which makes this KPI item a summary over multiple dates if not provided, this KPI item is just a single day"
                        },
                        "messagesReceivedAmount": {
                          "type": "number"
                        },
                        "messagesSentAmount": {
                          "type": "number"
                        },
                        "emailReceivedAmount": {
                          "type": "number"
                        },
                        "emailSentAmount": {
                          "type": "number"
                        },
                        "revenueEuros": {
                          "type": "number",
                          "description": "fetch data from stripe (ensure to check metadata.personaSlug)"
                        },
                        "newRelationsAmount": {
                          "type": "number",
                          "description": "see all relations of the person and look for their createdAt (not person.createdAt but relation.createdAt)"
                        },
                        "isAlreadyCalculated": {
                          "type": "boolean",
                          "description": "If true, this was already there. Not to be stored"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/key-performance-indicator/update": {
      "post": {
        "tags": ["key-performance-indicator"],
        "summary": "Update key-performance-indicator",
        "operationId": "updateKeyPerformanceIndicator",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "personSlug": {
                        "type": "string",
                        "description": "always filled in"
                      },
                      "fromDate": {
                        "type": "string"
                      },
                      "untilDate": {
                        "type": "string",
                        "description": "if provided, should be a date later than \"fromDate\", which makes this KPI item a summary over multiple dates if not provided, this KPI item is just a single day"
                      },
                      "messagesReceivedAmount": {
                        "type": "number"
                      },
                      "messagesSentAmount": {
                        "type": "number"
                      },
                      "emailReceivedAmount": {
                        "type": "number"
                      },
                      "emailSentAmount": {
                        "type": "number"
                      },
                      "revenueEuros": {
                        "type": "number",
                        "description": "fetch data from stripe (ensure to check metadata.personaSlug)"
                      },
                      "newRelationsAmount": {
                        "type": "number",
                        "description": "see all relations of the person and look for their createdAt (not person.createdAt but relation.createdAt)"
                      },
                      "isAlreadyCalculated": {
                        "type": "boolean",
                        "description": "If true, this was already there. Not to be stored"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/key-performance-indicator/execute": {
      "put": {
        "tags": ["key-performance-indicator"],
        "summary": "Execute key-performance-indicator",
        "operationId": "generateKeyPerformanceIndicator",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "personSlug",
                      "fromDate",
                      "untilDate",
                      "messagesReceivedAmount",
                      "messagesSentAmount",
                      "emailReceivedAmount",
                      "emailSentAmount",
                      "revenueEuros",
                      "newRelationsAmount",
                      "isAlreadyCalculated",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/key-performance-indicator": {
      "delete": {
        "tags": ["key-performance-indicator"],
        "summary": "Delete key-performance-indicator",
        "operationId": "deleteKeyPerformanceIndicator",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/llm-translation/read": {
      "post": {
        "tags": ["llm-translation"],
        "summary": "Read llm-translation",
        "operationId": "readLlmTranslation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "markdown",
                            "model",
                            "isCustomised",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "markdown",
                            "model",
                            "isCustomised",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "markdown",
                        "model",
                        "isCustomised",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "markdown",
                        "model",
                        "isCustomised",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "slug": {
                                "type": "string",
                                "description": "The filename."
                              },
                              "markdown": {
                                "type": "string"
                              },
                              "model": {
                                "type": "string",
                                "description": "LLM model key. useful to know"
                              },
                              "isCustomised": {
                                "type": "boolean",
                                "description": "If true, the admin has edited this tranlsation to his/her own taste"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/llm-translation/create": {
      "post": {
        "tags": ["llm-translation"],
        "summary": "Create llm-translation",
        "operationId": "createLlmTranslation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "slug": {
                          "type": "string",
                          "description": "The filename."
                        },
                        "markdown": {
                          "type": "string"
                        },
                        "model": {
                          "type": "string",
                          "description": "LLM model key. useful to know"
                        },
                        "isCustomised": {
                          "type": "boolean",
                          "description": "If true, the admin has edited this tranlsation to his/her own taste"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/llm-translation/update": {
      "post": {
        "tags": ["llm-translation"],
        "summary": "Update llm-translation",
        "operationId": "updateLlmTranslation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "slug": {
                        "type": "string",
                        "description": "The filename."
                      },
                      "markdown": {
                        "type": "string"
                      },
                      "model": {
                        "type": "string",
                        "description": "LLM model key. useful to know"
                      },
                      "isCustomised": {
                        "type": "boolean",
                        "description": "If true, the admin has edited this tranlsation to his/her own taste"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/llm-translation/execute": {
      "put": {
        "tags": ["llm-translation"],
        "summary": "Execute llm-translation",
        "operationId": "generateLlmTranslation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "slug",
                      "markdown",
                      "model",
                      "isCustomised",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/llm-translation": {
      "delete": {
        "tags": ["llm-translation"],
        "summary": "Delete llm-translation",
        "operationId": "deleteLlmTranslation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/one-time-password/read": {
      "post": {
        "tags": ["one-time-password"],
        "summary": "Read one-time-password",
        "operationId": "readOneTimePassword",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "code",
                            "href",
                            "createdAt",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "code",
                            "href",
                            "createdAt",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "code",
                        "href",
                        "createdAt",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "code",
                        "href",
                        "createdAt",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "personSlug": {
                                "type": "string"
                              },
                              "code": {
                                "type": "string"
                              },
                              "href": {
                                "type": "string",
                                "description": "if given, the OTP will redirect to a custom URL after login. default is \"/dashboard\". must be a string starting with \"/\" so it can be pushed as navigation url"
                              },
                              "createdAt": {
                                "type": "number"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/one-time-password/create": {
      "post": {
        "tags": ["one-time-password"],
        "summary": "Create one-time-password",
        "operationId": "createOneTimePassword",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "personSlug": {
                          "type": "string"
                        },
                        "code": {
                          "type": "string"
                        },
                        "href": {
                          "type": "string",
                          "description": "if given, the OTP will redirect to a custom URL after login. default is \"/dashboard\". must be a string starting with \"/\" so it can be pushed as navigation url"
                        },
                        "createdAt": {
                          "type": "number"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/one-time-password/update": {
      "post": {
        "tags": ["one-time-password"],
        "summary": "Update one-time-password",
        "operationId": "updateOneTimePassword",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "personSlug": {
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "href": {
                        "type": "string",
                        "description": "if given, the OTP will redirect to a custom URL after login. default is \"/dashboard\". must be a string starting with \"/\" so it can be pushed as navigation url"
                      },
                      "createdAt": {
                        "type": "number"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/one-time-password/execute": {
      "put": {
        "tags": ["one-time-password"],
        "summary": "Execute one-time-password",
        "operationId": "generateOneTimePassword",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "personSlug",
                      "code",
                      "href",
                      "createdAt",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/one-time-password": {
      "delete": {
        "tags": ["one-time-password"],
        "summary": "Delete one-time-password",
        "operationId": "deleteOneTimePassword",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/open-file/read": {
      "post": {
        "tags": ["open-file"],
        "summary": "Read open-file",
        "operationId": "readOpenFile",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "file_projectRelativePath",
                            "isPinned",
                            "isOpen",
                            "openedAt",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "file_projectRelativePath",
                            "isPinned",
                            "isOpen",
                            "openedAt",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "file_projectRelativePath",
                        "isPinned",
                        "isOpen",
                        "openedAt",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "file_projectRelativePath",
                        "isPinned",
                        "isOpen",
                        "openedAt",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "personSlug": {
                                "type": "string"
                              },
                              "file_projectRelativePath": {
                                "type": "string"
                              },
                              "isPinned": {
                                "type": "boolean"
                              },
                              "isOpen": {
                                "type": "boolean"
                              },
                              "openedAt": {
                                "type": "number",
                                "description": "The openfile be removed if not open and pinned after a certain time"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/open-file/create": {
      "post": {
        "tags": ["open-file"],
        "summary": "Create open-file",
        "operationId": "createOpenFile",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "personSlug": {
                          "type": "string"
                        },
                        "file_projectRelativePath": {
                          "type": "string"
                        },
                        "isPinned": {
                          "type": "boolean"
                        },
                        "isOpen": {
                          "type": "boolean"
                        },
                        "openedAt": {
                          "type": "number",
                          "description": "The openfile be removed if not open and pinned after a certain time"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/open-file/update": {
      "post": {
        "tags": ["open-file"],
        "summary": "Update open-file",
        "operationId": "updateOpenFile",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "personSlug": {
                        "type": "string"
                      },
                      "file_projectRelativePath": {
                        "type": "string"
                      },
                      "isPinned": {
                        "type": "boolean"
                      },
                      "isOpen": {
                        "type": "boolean"
                      },
                      "openedAt": {
                        "type": "number",
                        "description": "The openfile be removed if not open and pinned after a certain time"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/open-file/execute": {
      "put": {
        "tags": ["open-file"],
        "summary": "Execute open-file",
        "operationId": "generateOpenFile",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "personSlug",
                      "file_projectRelativePath",
                      "isPinned",
                      "isOpen",
                      "openedAt",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/open-file": {
      "delete": {
        "tags": ["open-file"],
        "summary": "Delete open-file",
        "operationId": "deleteOpenFile",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/openapi-proxy/read": {
      "post": {
        "tags": ["openapi-proxy"],
        "summary": "Read openapi-proxy",
        "operationId": "readOpenapiProxy",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "proxies",
                            "info",
                            "openApiGenerated"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "proxies",
                            "info",
                            "openApiGenerated"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": ["__id", "proxies", "info", "openApiGenerated"]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": ["__id", "proxies", "info", "openApiGenerated"]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string",
                                "description": "Name of the proxy to be made accessible at '[__id].[slug].actionschema.com'"
                              },
                              "proxies": {
                                "type": "string",
                                "description": "List of multiple paths from multiple openapis"
                              },
                              "info": {
                                "type": "string",
                                "description": "Info object of the to be served openapi"
                              },
                              "openApiGenerated": {
                                "type": "string",
                                "description": "Generated openapi after fetching and merging the paths"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/openapi-proxy/create": {
      "post": {
        "tags": ["openapi-proxy"],
        "summary": "Create openapi-proxy",
        "operationId": "createOpenapiProxy",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string",
                          "description": "Name of the proxy to be made accessible at '[__id].[slug].actionschema.com'"
                        },
                        "proxies": {
                          "type": "string",
                          "description": "List of multiple paths from multiple openapis"
                        },
                        "info": {
                          "type": "string",
                          "description": "Info object of the to be served openapi"
                        },
                        "openApiGenerated": {
                          "type": "string",
                          "description": "Generated openapi after fetching and merging the paths"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/openapi-proxy/update": {
      "post": {
        "tags": ["openapi-proxy"],
        "summary": "Update openapi-proxy",
        "operationId": "updateOpenapiProxy",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string",
                        "description": "Name of the proxy to be made accessible at '[__id].[slug].actionschema.com'"
                      },
                      "proxies": {
                        "type": "string",
                        "description": "List of multiple paths from multiple openapis"
                      },
                      "info": {
                        "type": "string",
                        "description": "Info object of the to be served openapi"
                      },
                      "openApiGenerated": {
                        "type": "string",
                        "description": "Generated openapi after fetching and merging the paths"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/openapi-proxy/execute": {
      "put": {
        "tags": ["openapi-proxy"],
        "summary": "Execute openapi-proxy",
        "operationId": "generateOpenapiProxy",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": ["__id", "proxies", "info", "openApiGenerated"],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/openapi-proxy": {
      "delete": {
        "tags": ["openapi-proxy"],
        "summary": "Delete openapi-proxy",
        "operationId": "deleteOpenapiProxy",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/person/read": {
      "post": {
        "tags": ["person"],
        "summary": "Read person",
        "operationId": "readPerson",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "authToken",
                            "createdAt",
                            "name",
                            "notes",
                            "phoneNumber",
                            "isPhoneNumberVerified",
                            "whatsappPhoneNumber",
                            "isWhatsappPhoneNumberVerified",
                            "email",
                            "isEmailVerified",
                            "googlePlacesInfo",
                            "isPhoneNumberPublic",
                            "isEmailPublic",
                            "fullName",
                            "firstName",
                            "lastName",
                            "profession",
                            "interests",
                            "address",
                            "companies",
                            "summary",
                            "followUpSearchQueries",
                            "subscriptionType",
                            "paymentAuthToken",
                            "stripeCustomerEmail",
                            "hasSubscription",
                            "paymentLink",
                            "paymentLinkCreatedAt",
                            "paymentLinkExpiresAt",
                            "modelName",
                            "isWhatsappPhoneNumberPublic",
                            "hasPhoneNumberCalculated",
                            "hasWhatsappPhoneNumberCalculated",
                            "hasEmailCalculated",
                            "pictureImages",
                            "emoji",
                            "betaMode",
                            "isAlphaAllowed",
                            "lastAnalysedAt",
                            "isChatAnonymousMode",
                            "goalsDescription",
                            "crud_personaSlugs",
                            "isPersona",
                            "lastActivityAt",
                            "lastActivity_personSlug",
                            "isEmailSubscribed",
                            "messengerId",
                            "bio",
                            "authentication",
                            "interestSlugs",
                            "mediaChannelIds",
                            "preferred_mediaChannelId",
                            "devicesCalculated",
                            "authenticationMethods",
                            "groupSlugs",
                            "groups",
                            "credit",
                            "currentConferenceCallId",
                            "isWaitlistRequested",
                            "trialStartedAt",
                            "trialDurationDays",
                            "subscribee_personSlugs",
                            "subscriber_personSlug",
                            "isDiscoveryEnabled",
                            "sendingMessageAt",
                            "totalCreditSpent",
                            "totalCreditPaid",
                            "totalCreditGiven",
                            "totalCreditGivenFriends",
                            "referralSlug",
                            "referral_personaSlug",
                            "icalWebfeedUrl",
                            "lastLocation",
                            "utcTimeOffsetHours",
                            "preferredLanguage",
                            "helperLanguages",
                            "relationSlugsCalculated",
                            "lastLocationAt",
                            "socialMediaChannels",
                            "isSemanticSearchDone"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "authToken",
                            "createdAt",
                            "name",
                            "notes",
                            "phoneNumber",
                            "isPhoneNumberVerified",
                            "whatsappPhoneNumber",
                            "isWhatsappPhoneNumberVerified",
                            "email",
                            "isEmailVerified",
                            "googlePlacesInfo",
                            "isPhoneNumberPublic",
                            "isEmailPublic",
                            "fullName",
                            "firstName",
                            "lastName",
                            "profession",
                            "interests",
                            "address",
                            "companies",
                            "summary",
                            "followUpSearchQueries",
                            "subscriptionType",
                            "paymentAuthToken",
                            "stripeCustomerEmail",
                            "hasSubscription",
                            "paymentLink",
                            "paymentLinkCreatedAt",
                            "paymentLinkExpiresAt",
                            "modelName",
                            "isWhatsappPhoneNumberPublic",
                            "hasPhoneNumberCalculated",
                            "hasWhatsappPhoneNumberCalculated",
                            "hasEmailCalculated",
                            "pictureImages",
                            "emoji",
                            "betaMode",
                            "isAlphaAllowed",
                            "lastAnalysedAt",
                            "isChatAnonymousMode",
                            "goalsDescription",
                            "crud_personaSlugs",
                            "isPersona",
                            "lastActivityAt",
                            "lastActivity_personSlug",
                            "isEmailSubscribed",
                            "messengerId",
                            "bio",
                            "authentication",
                            "interestSlugs",
                            "mediaChannelIds",
                            "preferred_mediaChannelId",
                            "devicesCalculated",
                            "authenticationMethods",
                            "groupSlugs",
                            "groups",
                            "credit",
                            "currentConferenceCallId",
                            "isWaitlistRequested",
                            "trialStartedAt",
                            "trialDurationDays",
                            "subscribee_personSlugs",
                            "subscriber_personSlug",
                            "isDiscoveryEnabled",
                            "sendingMessageAt",
                            "totalCreditSpent",
                            "totalCreditPaid",
                            "totalCreditGiven",
                            "totalCreditGivenFriends",
                            "referralSlug",
                            "referral_personaSlug",
                            "icalWebfeedUrl",
                            "lastLocation",
                            "utcTimeOffsetHours",
                            "preferredLanguage",
                            "helperLanguages",
                            "relationSlugsCalculated",
                            "lastLocationAt",
                            "socialMediaChannels",
                            "isSemanticSearchDone"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "authToken",
                        "createdAt",
                        "name",
                        "notes",
                        "phoneNumber",
                        "isPhoneNumberVerified",
                        "whatsappPhoneNumber",
                        "isWhatsappPhoneNumberVerified",
                        "email",
                        "isEmailVerified",
                        "googlePlacesInfo",
                        "isPhoneNumberPublic",
                        "isEmailPublic",
                        "fullName",
                        "firstName",
                        "lastName",
                        "profession",
                        "interests",
                        "address",
                        "companies",
                        "summary",
                        "followUpSearchQueries",
                        "subscriptionType",
                        "paymentAuthToken",
                        "stripeCustomerEmail",
                        "hasSubscription",
                        "paymentLink",
                        "paymentLinkCreatedAt",
                        "paymentLinkExpiresAt",
                        "modelName",
                        "isWhatsappPhoneNumberPublic",
                        "hasPhoneNumberCalculated",
                        "hasWhatsappPhoneNumberCalculated",
                        "hasEmailCalculated",
                        "pictureImages",
                        "emoji",
                        "betaMode",
                        "isAlphaAllowed",
                        "lastAnalysedAt",
                        "isChatAnonymousMode",
                        "goalsDescription",
                        "crud_personaSlugs",
                        "isPersona",
                        "lastActivityAt",
                        "lastActivity_personSlug",
                        "isEmailSubscribed",
                        "messengerId",
                        "bio",
                        "authentication",
                        "interestSlugs",
                        "mediaChannelIds",
                        "preferred_mediaChannelId",
                        "devicesCalculated",
                        "authenticationMethods",
                        "groupSlugs",
                        "groups",
                        "credit",
                        "currentConferenceCallId",
                        "isWaitlistRequested",
                        "trialStartedAt",
                        "trialDurationDays",
                        "subscribee_personSlugs",
                        "subscriber_personSlug",
                        "isDiscoveryEnabled",
                        "sendingMessageAt",
                        "totalCreditSpent",
                        "totalCreditPaid",
                        "totalCreditGiven",
                        "totalCreditGivenFriends",
                        "referralSlug",
                        "referral_personaSlug",
                        "icalWebfeedUrl",
                        "lastLocation",
                        "utcTimeOffsetHours",
                        "preferredLanguage",
                        "helperLanguages",
                        "relationSlugsCalculated",
                        "lastLocationAt",
                        "socialMediaChannels",
                        "isSemanticSearchDone"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "authToken",
                        "createdAt",
                        "name",
                        "notes",
                        "phoneNumber",
                        "isPhoneNumberVerified",
                        "whatsappPhoneNumber",
                        "isWhatsappPhoneNumberVerified",
                        "email",
                        "isEmailVerified",
                        "googlePlacesInfo",
                        "isPhoneNumberPublic",
                        "isEmailPublic",
                        "fullName",
                        "firstName",
                        "lastName",
                        "profession",
                        "interests",
                        "address",
                        "companies",
                        "summary",
                        "followUpSearchQueries",
                        "subscriptionType",
                        "paymentAuthToken",
                        "stripeCustomerEmail",
                        "hasSubscription",
                        "paymentLink",
                        "paymentLinkCreatedAt",
                        "paymentLinkExpiresAt",
                        "modelName",
                        "isWhatsappPhoneNumberPublic",
                        "hasPhoneNumberCalculated",
                        "hasWhatsappPhoneNumberCalculated",
                        "hasEmailCalculated",
                        "pictureImages",
                        "emoji",
                        "betaMode",
                        "isAlphaAllowed",
                        "lastAnalysedAt",
                        "isChatAnonymousMode",
                        "goalsDescription",
                        "crud_personaSlugs",
                        "isPersona",
                        "lastActivityAt",
                        "lastActivity_personSlug",
                        "isEmailSubscribed",
                        "messengerId",
                        "bio",
                        "authentication",
                        "interestSlugs",
                        "mediaChannelIds",
                        "preferred_mediaChannelId",
                        "devicesCalculated",
                        "authenticationMethods",
                        "groupSlugs",
                        "groups",
                        "credit",
                        "currentConferenceCallId",
                        "isWaitlistRequested",
                        "trialStartedAt",
                        "trialDurationDays",
                        "subscribee_personSlugs",
                        "subscriber_personSlug",
                        "isDiscoveryEnabled",
                        "sendingMessageAt",
                        "totalCreditSpent",
                        "totalCreditPaid",
                        "totalCreditGiven",
                        "totalCreditGivenFriends",
                        "referralSlug",
                        "referral_personaSlug",
                        "icalWebfeedUrl",
                        "lastLocation",
                        "utcTimeOffsetHours",
                        "preferredLanguage",
                        "helperLanguages",
                        "relationSlugsCalculated",
                        "lastLocationAt",
                        "socialMediaChannels",
                        "isSemanticSearchDone"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string"
                              },
                              "authToken": {
                                "type": "string",
                                "description": "authToken"
                              },
                              "createdAt": {
                                "type": "number"
                              },
                              "name": {
                                "type": "string"
                              },
                              "notes": {
                                "type": "string"
                              },
                              "phoneNumber": {
                                "type": "string",
                                "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
                              },
                              "isPhoneNumberVerified": {
                                "type": "boolean"
                              },
                              "whatsappPhoneNumber": {
                                "type": "string",
                                "description": "Phone number for whatsapp\n\nNB: may be the same as cellular, but not required."
                              },
                              "isWhatsappPhoneNumberVerified": {
                                "type": "boolean"
                              },
                              "email": {
                                "type": "string",
                                "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
                              },
                              "isEmailVerified": {
                                "type": "boolean"
                              },
                              "googlePlacesInfo": {
                                "type": "object",
                                "properties": {
                                  "rating": {
                                    "type": "number"
                                  },
                                  "priceLevel": {
                                    "type": "string"
                                  },
                                  "ratingCount": {
                                    "type": "number"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "cid": {
                                    "type": "string"
                                  },
                                  "placeId": {
                                    "type": "string"
                                  },
                                  "thumbnailUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "rating",
                                  "priceLevel",
                                  "ratingCount",
                                  "category",
                                  "cid",
                                  "placeId"
                                ],
                                "additionalProperties": false
                              },
                              "isPhoneNumberPublic": {
                                "type": "boolean"
                              },
                              "isEmailPublic": {
                                "type": "boolean"
                              },
                              "fullName": {
                                "type": "string"
                              },
                              "firstName": {
                                "type": "string"
                              },
                              "lastName": {
                                "type": "string"
                              },
                              "profession": {
                                "type": ["string", "null"]
                              },
                              "interests": {
                                "type": ["string", "null"]
                              },
                              "address": {
                                "type": ["string", "null"]
                              },
                              "companies": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "summary": {
                                "type": ["string", "null"]
                              },
                              "followUpSearchQueries": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "subscriptionType": {
                                "type": "string",
                                "enum": ["stripe", "gift"],
                                "description": "In case of 'gift' it will not be removed"
                              },
                              "paymentAuthToken": {
                                "type": "string",
                                "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
                              },
                              "stripeCustomerEmail": {
                                "type": "string",
                                "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
                              },
                              "hasSubscription": {
                                "type": "boolean",
                                "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
                              },
                              "paymentLink": {
                                "type": "string",
                                "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                              },
                              "paymentLinkCreatedAt": {
                                "type": "number",
                                "description": "Date the payment link was created so it's not too old"
                              },
                              "paymentLinkExpiresAt": {
                                "type": "number"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "isWhatsappPhoneNumberPublic": {
                                "type": "boolean"
                              },
                              "hasPhoneNumberCalculated": {
                                "type": "boolean"
                              },
                              "hasWhatsappPhoneNumberCalculated": {
                                "type": "boolean"
                              },
                              "hasEmailCalculated": {
                                "type": "boolean"
                              },
                              "pictureImages": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "emoji": {
                                "type": "string"
                              },
                              "betaMode": {
                                "type": "string",
                                "enum": ["alpha", "beta"]
                              },
                              "isAlphaAllowed": {
                                "type": "boolean",
                                "description": "if true, user can set betaMode to alpha too. Beta is always allowed"
                              },
                              "lastAnalysedAt": {
                                "type": "number",
                                "description": "last analysed"
                              },
                              "isChatAnonymousMode": {
                                "type": "boolean",
                                "description": "if true, this person is just there for looking at the chat, not responding. This means it needs to be anonymous and you shouldn't be able to see the name and phone number of the relations. For now, this can be frontend-only to keep it simple."
                              },
                              "goalsDescription": {
                                "type": "string",
                                "description": "Goals to be used in the CRM"
                              },
                              "crud_personaSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "personas that this person should have the right for to crud"
                              },
                              "isPersona": {
                                "type": "boolean",
                                "description": "Todo: Replace this with groupSlugs[\"persona\"] and refactor all personas to be in this group."
                              },
                              "lastActivityAt": {
                                "type": "number",
                                "description": "used for whatsapp messages to determine the users last message"
                              },
                              "lastActivity_personSlug": {
                                "type": "string"
                              },
                              "isEmailSubscribed": {
                                "type": "boolean"
                              },
                              "messengerId": {
                                "type": "string"
                              },
                              "bio": {
                                "type": "string",
                                "description": "Markdown that the person can write about themselves."
                              },
                              "authentication": {
                                "type": "object",
                                "properties": {
                                  "emailIsVerified": {
                                    "type": "boolean"
                                  },
                                  "emailOtp": {
                                    "type": "string"
                                  },
                                  "emailOtpAt": {
                                    "type": "number"
                                  },
                                  "twoFactorAuthenticationStrategy": {
                                    "type": "string",
                                    "enum": [
                                      "disabled",
                                      "any",
                                      "email",
                                      "phoneNumber",
                                      "both"
                                    ],
                                    "description": "Strategy for the user to authenticate. Defaults to disabled, which means you can just verify in a single way."
                                  },
                                  "phoneNumberIsVerified": {
                                    "type": "boolean"
                                  },
                                  "phoneNumberOtp": {
                                    "type": "string"
                                  },
                                  "phoneNumberOtpAt": {
                                    "type": "number"
                                  },
                                  "encryptedPassword": {
                                    "type": "string"
                                  }
                                },
                                "additionalProperties": false,
                                "description": "To replace the initial system of having multiple `authenticationMethod`s\n\nIf authentication exists, that means the user is attempting to access their account\n\nWe can already have their person registered and we can already have information about them or for them without them having an account yet, because it's the same `Person` model.\n\nTODO: Remove this completely, outdated"
                              },
                              "interestSlugs": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Slug"
                                },
                                "description": "slugs of interest categories that this person should be notified about.\n\nSince this is a hierarchical model, parent interests will ensure all children are also applied."
                              },
                              "mediaChannelIds": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Id"
                                },
                                "description": "After the `MediaChannel` DB is filled, we can index the names of the persons of the `MediaChannel`, and and we can push them to here, if the name is \"similar\" to the name of this `Person`.\n\n`*` = \"similar\" means: exact match, or at least first name + last name match"
                              },
                              "preferred_mediaChannelId": {
                                "$ref": "#/components/schemas/Id",
                                "description": "Optional. Can be set by admin (not indexed)\n\nIf not available, take the first (mediaChannelIds[0])"
                              },
                              "devicesCalculated": {
                                "type": "array",
                                "items": {},
                                "description": "Devices can be attached to a person by looking in the device model and finding the devices that refer to this person\n\nAmong other things, this can be used to determine the `Person` location"
                              },
                              "authenticationMethods": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/AuthenticationMethod"
                                },
                                "description": "DEPRECATED: to be replaced by `authentication` in favor of simplicity\n\nMethods that can be used to identify yourself as being this user\n\nShould be set up by the user either when registering, or in settings, to provide more methods.\n\nNB: It's important to note that a `Person` should not be able to add credentials that are already added by another person. This means that, when adding such a method, all `Person`s need to be searched!"
                              },
                              "groupSlugs": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Slug"
                                },
                                "description": "To which groups does this person belong?\n\nThis determines additional authorizations\n\nCan be set on signup, but can always be edited by admin\n\nDEPRECATED?! Should be replaced by groups.personSlug for efficiency"
                              },
                              "groups": {
                                "type": "array",
                                "items": {}
                              },
                              "credit": {
                                "$ref": "#/components/schemas/Credit",
                                "description": "Actions by the `Person` can create changes in the amount of credits\n\nThe exact meaning of the number of credits is determined by the OS settings. Can for example be 1:1 to euro, 1:1 to bitcoin, or a custom credit system. Transferability is also customisable.\n\nInsufficient credit can limit the persons possibilities within the OS"
                              },
                              "currentConferenceCallId": {
                                "type": "string",
                                "description": "needed for active calls"
                              },
                              "isWaitlistRequested": {
                                "type": "boolean",
                                "description": "if true, user has given email and\n\n- for high-income country, trial is requested\n- for low-income country, free unlimited is requested"
                              },
                              "trialStartedAt": {
                                "type": "number",
                                "description": "if admins give the trial access, this will be enabled, and unlimited will be turned on"
                              },
                              "trialDurationDays": {
                                "type": "number",
                                "description": "amount of days the trial will take"
                              },
                              "subscribee_personSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "the persons that you have given your subscription automatically, if any. Should, upon payment, link 3 low-income country people to you."
                              },
                              "subscriber_personSlug": {
                                "type": "string",
                                "description": "the persons that you have given your subscription, if it was given."
                              },
                              "isDiscoveryEnabled": {
                                "type": "boolean",
                                "description": "If the person sets this to true (opt-in)\n- as a subscriber, you allow the subscribees to contact you\n- as a subscribee, you allow the subscriber to contact you"
                              },
                              "sendingMessageAt": {
                                "type": "number",
                                "description": "gets set to the date when you start sending a message, gets reset afterwards, so you don't send two messages at the same time, there is some sort of wait system"
                              },
                              "totalCreditSpent": {
                                "$ref": "#/components/schemas/Credit",
                                "description": "Useful metric. Should accumulate every time the user spends credit"
                              },
                              "totalCreditPaid": {
                                "$ref": "#/components/schemas/Credit",
                                "description": "Useful metric"
                              },
                              "totalCreditGiven": {
                                "$ref": "#/components/schemas/Credit",
                                "description": "Useful metric: how much credit was given for free to the user by the system"
                              },
                              "totalCreditGivenFriends": {
                                "$ref": "#/components/schemas/Credit",
                                "description": "Useful metric, how much credit was given to friends"
                              },
                              "referralSlug": {
                                "type": "string",
                                "description": "Referral business (based on initial message). Links to `Referral` model instance"
                              },
                              "referral_personaSlug": {
                                "type": "string",
                                "description": "Persona that the user used the app the first..."
                              },
                              "icalWebfeedUrl": {
                                "type": "string",
                                "description": "webfeed iCal URL to sync your calendar into our system"
                              },
                              "lastLocation": {
                                "$ref": "#/components/schemas/AssistantLocation",
                                "description": "To be used as Assistant Context"
                              },
                              "utcTimeOffsetHours": {
                                "type": "number",
                                "description": "Set when user signs up, updated when user gives location"
                              },
                              "preferredLanguage": {
                                "type": "string",
                                "description": "Set upon user creation, can be changed into anything.\n\nThis is the baselanguage in which you prefer to receive all communication"
                              },
                              "helperLanguages": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Language"
                                },
                                "description": "If set, and if `.preferredLanguage` is also a `Language`, the `WordMatrix` can be used to show words in these languages on hover (or on mobile on-click)"
                              },
                              "relationSlugsCalculated": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "lastLocationAt": {
                                "type": "number",
                                "description": "To be used as Assistant Context"
                              },
                              "socialMediaChannels": {
                                "$ref": "#/components/schemas/SocialMediaChannels"
                              },
                              "isSemanticSearchDone": {
                                "type": "boolean",
                                "description": "See `getFastPersonInfo`"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/person/create": {
      "post": {
        "tags": ["person"],
        "summary": "Create person",
        "operationId": "createPerson",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string"
                        },
                        "authToken": {
                          "type": "string",
                          "description": "authToken"
                        },
                        "createdAt": {
                          "type": "number"
                        },
                        "name": {
                          "type": "string"
                        },
                        "notes": {
                          "type": "string"
                        },
                        "phoneNumber": {
                          "type": "string",
                          "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
                        },
                        "isPhoneNumberVerified": {
                          "type": "boolean"
                        },
                        "whatsappPhoneNumber": {
                          "type": "string",
                          "description": "Phone number for whatsapp\n\nNB: may be the same as cellular, but not required."
                        },
                        "isWhatsappPhoneNumberVerified": {
                          "type": "boolean"
                        },
                        "email": {
                          "type": "string",
                          "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
                        },
                        "isEmailVerified": {
                          "type": "boolean"
                        },
                        "googlePlacesInfo": {
                          "type": "object",
                          "properties": {
                            "rating": {
                              "type": "number"
                            },
                            "priceLevel": {
                              "type": "string"
                            },
                            "ratingCount": {
                              "type": "number"
                            },
                            "category": {
                              "type": "string"
                            },
                            "cid": {
                              "type": "string"
                            },
                            "placeId": {
                              "type": "string"
                            },
                            "thumbnailUrl": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "rating",
                            "priceLevel",
                            "ratingCount",
                            "category",
                            "cid",
                            "placeId"
                          ],
                          "additionalProperties": false
                        },
                        "isPhoneNumberPublic": {
                          "type": "boolean"
                        },
                        "isEmailPublic": {
                          "type": "boolean"
                        },
                        "fullName": {
                          "type": "string"
                        },
                        "firstName": {
                          "type": "string"
                        },
                        "lastName": {
                          "type": "string"
                        },
                        "profession": {
                          "type": ["string", "null"]
                        },
                        "interests": {
                          "type": ["string", "null"]
                        },
                        "address": {
                          "type": ["string", "null"]
                        },
                        "companies": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "summary": {
                          "type": ["string", "null"]
                        },
                        "followUpSearchQueries": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "subscriptionType": {
                          "type": "string",
                          "enum": ["stripe", "gift"],
                          "description": "In case of 'gift' it will not be removed"
                        },
                        "paymentAuthToken": {
                          "type": "string",
                          "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
                        },
                        "stripeCustomerEmail": {
                          "type": "string",
                          "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
                        },
                        "hasSubscription": {
                          "type": "boolean",
                          "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
                        },
                        "paymentLink": {
                          "type": "string",
                          "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                        },
                        "paymentLinkCreatedAt": {
                          "type": "number",
                          "description": "Date the payment link was created so it's not too old"
                        },
                        "paymentLinkExpiresAt": {
                          "type": "number"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "isWhatsappPhoneNumberPublic": {
                          "type": "boolean"
                        },
                        "hasPhoneNumberCalculated": {
                          "type": "boolean"
                        },
                        "hasWhatsappPhoneNumberCalculated": {
                          "type": "boolean"
                        },
                        "hasEmailCalculated": {
                          "type": "boolean"
                        },
                        "pictureImages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "emoji": {
                          "type": "string"
                        },
                        "betaMode": {
                          "type": "string",
                          "enum": ["alpha", "beta"]
                        },
                        "isAlphaAllowed": {
                          "type": "boolean",
                          "description": "if true, user can set betaMode to alpha too. Beta is always allowed"
                        },
                        "lastAnalysedAt": {
                          "type": "number",
                          "description": "last analysed"
                        },
                        "isChatAnonymousMode": {
                          "type": "boolean",
                          "description": "if true, this person is just there for looking at the chat, not responding. This means it needs to be anonymous and you shouldn't be able to see the name and phone number of the relations. For now, this can be frontend-only to keep it simple."
                        },
                        "goalsDescription": {
                          "type": "string",
                          "description": "Goals to be used in the CRM"
                        },
                        "crud_personaSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "personas that this person should have the right for to crud"
                        },
                        "isPersona": {
                          "type": "boolean",
                          "description": "Todo: Replace this with groupSlugs[\"persona\"] and refactor all personas to be in this group."
                        },
                        "lastActivityAt": {
                          "type": "number",
                          "description": "used for whatsapp messages to determine the users last message"
                        },
                        "lastActivity_personSlug": {
                          "type": "string"
                        },
                        "isEmailSubscribed": {
                          "type": "boolean"
                        },
                        "messengerId": {
                          "type": "string"
                        },
                        "bio": {
                          "type": "string",
                          "description": "Markdown that the person can write about themselves."
                        },
                        "authentication": {
                          "type": "object",
                          "properties": {
                            "emailIsVerified": {
                              "type": "boolean"
                            },
                            "emailOtp": {
                              "type": "string"
                            },
                            "emailOtpAt": {
                              "type": "number"
                            },
                            "twoFactorAuthenticationStrategy": {
                              "type": "string",
                              "enum": [
                                "disabled",
                                "any",
                                "email",
                                "phoneNumber",
                                "both"
                              ],
                              "description": "Strategy for the user to authenticate. Defaults to disabled, which means you can just verify in a single way."
                            },
                            "phoneNumberIsVerified": {
                              "type": "boolean"
                            },
                            "phoneNumberOtp": {
                              "type": "string"
                            },
                            "phoneNumberOtpAt": {
                              "type": "number"
                            },
                            "encryptedPassword": {
                              "type": "string"
                            }
                          },
                          "additionalProperties": false,
                          "description": "To replace the initial system of having multiple `authenticationMethod`s\n\nIf authentication exists, that means the user is attempting to access their account\n\nWe can already have their person registered and we can already have information about them or for them without them having an account yet, because it's the same `Person` model.\n\nTODO: Remove this completely, outdated"
                        },
                        "interestSlugs": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Slug"
                          },
                          "description": "slugs of interest categories that this person should be notified about.\n\nSince this is a hierarchical model, parent interests will ensure all children are also applied."
                        },
                        "mediaChannelIds": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Id"
                          },
                          "description": "After the `MediaChannel` DB is filled, we can index the names of the persons of the `MediaChannel`, and and we can push them to here, if the name is \"similar\" to the name of this `Person`.\n\n`*` = \"similar\" means: exact match, or at least first name + last name match"
                        },
                        "preferred_mediaChannelId": {
                          "$ref": "#/components/schemas/Id",
                          "description": "Optional. Can be set by admin (not indexed)\n\nIf not available, take the first (mediaChannelIds[0])"
                        },
                        "devicesCalculated": {
                          "type": "array",
                          "items": {},
                          "description": "Devices can be attached to a person by looking in the device model and finding the devices that refer to this person\n\nAmong other things, this can be used to determine the `Person` location"
                        },
                        "authenticationMethods": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AuthenticationMethod"
                          },
                          "description": "DEPRECATED: to be replaced by `authentication` in favor of simplicity\n\nMethods that can be used to identify yourself as being this user\n\nShould be set up by the user either when registering, or in settings, to provide more methods.\n\nNB: It's important to note that a `Person` should not be able to add credentials that are already added by another person. This means that, when adding such a method, all `Person`s need to be searched!"
                        },
                        "groupSlugs": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Slug"
                          },
                          "description": "To which groups does this person belong?\n\nThis determines additional authorizations\n\nCan be set on signup, but can always be edited by admin\n\nDEPRECATED?! Should be replaced by groups.personSlug for efficiency"
                        },
                        "groups": {
                          "type": "array",
                          "items": {}
                        },
                        "credit": {
                          "$ref": "#/components/schemas/Credit",
                          "description": "Actions by the `Person` can create changes in the amount of credits\n\nThe exact meaning of the number of credits is determined by the OS settings. Can for example be 1:1 to euro, 1:1 to bitcoin, or a custom credit system. Transferability is also customisable.\n\nInsufficient credit can limit the persons possibilities within the OS"
                        },
                        "currentConferenceCallId": {
                          "type": "string",
                          "description": "needed for active calls"
                        },
                        "isWaitlistRequested": {
                          "type": "boolean",
                          "description": "if true, user has given email and\n\n- for high-income country, trial is requested\n- for low-income country, free unlimited is requested"
                        },
                        "trialStartedAt": {
                          "type": "number",
                          "description": "if admins give the trial access, this will be enabled, and unlimited will be turned on"
                        },
                        "trialDurationDays": {
                          "type": "number",
                          "description": "amount of days the trial will take"
                        },
                        "subscribee_personSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "the persons that you have given your subscription automatically, if any. Should, upon payment, link 3 low-income country people to you."
                        },
                        "subscriber_personSlug": {
                          "type": "string",
                          "description": "the persons that you have given your subscription, if it was given."
                        },
                        "isDiscoveryEnabled": {
                          "type": "boolean",
                          "description": "If the person sets this to true (opt-in)\n- as a subscriber, you allow the subscribees to contact you\n- as a subscribee, you allow the subscriber to contact you"
                        },
                        "sendingMessageAt": {
                          "type": "number",
                          "description": "gets set to the date when you start sending a message, gets reset afterwards, so you don't send two messages at the same time, there is some sort of wait system"
                        },
                        "totalCreditSpent": {
                          "$ref": "#/components/schemas/Credit",
                          "description": "Useful metric. Should accumulate every time the user spends credit"
                        },
                        "totalCreditPaid": {
                          "$ref": "#/components/schemas/Credit",
                          "description": "Useful metric"
                        },
                        "totalCreditGiven": {
                          "$ref": "#/components/schemas/Credit",
                          "description": "Useful metric: how much credit was given for free to the user by the system"
                        },
                        "totalCreditGivenFriends": {
                          "$ref": "#/components/schemas/Credit",
                          "description": "Useful metric, how much credit was given to friends"
                        },
                        "referralSlug": {
                          "type": "string",
                          "description": "Referral business (based on initial message). Links to `Referral` model instance"
                        },
                        "referral_personaSlug": {
                          "type": "string",
                          "description": "Persona that the user used the app the first..."
                        },
                        "icalWebfeedUrl": {
                          "type": "string",
                          "description": "webfeed iCal URL to sync your calendar into our system"
                        },
                        "lastLocation": {
                          "$ref": "#/components/schemas/AssistantLocation",
                          "description": "To be used as Assistant Context"
                        },
                        "utcTimeOffsetHours": {
                          "type": "number",
                          "description": "Set when user signs up, updated when user gives location"
                        },
                        "preferredLanguage": {
                          "type": "string",
                          "description": "Set upon user creation, can be changed into anything.\n\nThis is the baselanguage in which you prefer to receive all communication"
                        },
                        "helperLanguages": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Language"
                          },
                          "description": "If set, and if `.preferredLanguage` is also a `Language`, the `WordMatrix` can be used to show words in these languages on hover (or on mobile on-click)"
                        },
                        "relationSlugsCalculated": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "lastLocationAt": {
                          "type": "number",
                          "description": "To be used as Assistant Context"
                        },
                        "socialMediaChannels": {
                          "$ref": "#/components/schemas/SocialMediaChannels"
                        },
                        "isSemanticSearchDone": {
                          "type": "boolean",
                          "description": "See `getFastPersonInfo`"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/person/update": {
      "post": {
        "tags": ["person"],
        "summary": "Update person",
        "operationId": "updatePerson",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string"
                      },
                      "authToken": {
                        "type": "string",
                        "description": "authToken"
                      },
                      "createdAt": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      },
                      "notes": {
                        "type": "string"
                      },
                      "phoneNumber": {
                        "type": "string",
                        "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
                      },
                      "isPhoneNumberVerified": {
                        "type": "boolean"
                      },
                      "whatsappPhoneNumber": {
                        "type": "string",
                        "description": "Phone number for whatsapp\n\nNB: may be the same as cellular, but not required."
                      },
                      "isWhatsappPhoneNumberVerified": {
                        "type": "boolean"
                      },
                      "email": {
                        "type": "string",
                        "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
                      },
                      "isEmailVerified": {
                        "type": "boolean"
                      },
                      "googlePlacesInfo": {
                        "type": "object",
                        "properties": {
                          "rating": {
                            "type": "number"
                          },
                          "priceLevel": {
                            "type": "string"
                          },
                          "ratingCount": {
                            "type": "number"
                          },
                          "category": {
                            "type": "string"
                          },
                          "cid": {
                            "type": "string"
                          },
                          "placeId": {
                            "type": "string"
                          },
                          "thumbnailUrl": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "rating",
                          "priceLevel",
                          "ratingCount",
                          "category",
                          "cid",
                          "placeId"
                        ],
                        "additionalProperties": false
                      },
                      "isPhoneNumberPublic": {
                        "type": "boolean"
                      },
                      "isEmailPublic": {
                        "type": "boolean"
                      },
                      "fullName": {
                        "type": "string"
                      },
                      "firstName": {
                        "type": "string"
                      },
                      "lastName": {
                        "type": "string"
                      },
                      "profession": {
                        "type": ["string", "null"]
                      },
                      "interests": {
                        "type": ["string", "null"]
                      },
                      "address": {
                        "type": ["string", "null"]
                      },
                      "companies": {
                        "anyOf": [
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "summary": {
                        "type": ["string", "null"]
                      },
                      "followUpSearchQueries": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "subscriptionType": {
                        "type": "string",
                        "enum": ["stripe", "gift"],
                        "description": "In case of 'gift' it will not be removed"
                      },
                      "paymentAuthToken": {
                        "type": "string",
                        "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
                      },
                      "stripeCustomerEmail": {
                        "type": "string",
                        "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
                      },
                      "hasSubscription": {
                        "type": "boolean",
                        "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
                      },
                      "paymentLink": {
                        "type": "string",
                        "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
                      },
                      "paymentLinkCreatedAt": {
                        "type": "number",
                        "description": "Date the payment link was created so it's not too old"
                      },
                      "paymentLinkExpiresAt": {
                        "type": "number"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "isWhatsappPhoneNumberPublic": {
                        "type": "boolean"
                      },
                      "hasPhoneNumberCalculated": {
                        "type": "boolean"
                      },
                      "hasWhatsappPhoneNumberCalculated": {
                        "type": "boolean"
                      },
                      "hasEmailCalculated": {
                        "type": "boolean"
                      },
                      "pictureImages": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "emoji": {
                        "type": "string"
                      },
                      "betaMode": {
                        "type": "string",
                        "enum": ["alpha", "beta"]
                      },
                      "isAlphaAllowed": {
                        "type": "boolean",
                        "description": "if true, user can set betaMode to alpha too. Beta is always allowed"
                      },
                      "lastAnalysedAt": {
                        "type": "number",
                        "description": "last analysed"
                      },
                      "isChatAnonymousMode": {
                        "type": "boolean",
                        "description": "if true, this person is just there for looking at the chat, not responding. This means it needs to be anonymous and you shouldn't be able to see the name and phone number of the relations. For now, this can be frontend-only to keep it simple."
                      },
                      "goalsDescription": {
                        "type": "string",
                        "description": "Goals to be used in the CRM"
                      },
                      "crud_personaSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "personas that this person should have the right for to crud"
                      },
                      "isPersona": {
                        "type": "boolean",
                        "description": "Todo: Replace this with groupSlugs[\"persona\"] and refactor all personas to be in this group."
                      },
                      "lastActivityAt": {
                        "type": "number",
                        "description": "used for whatsapp messages to determine the users last message"
                      },
                      "lastActivity_personSlug": {
                        "type": "string"
                      },
                      "isEmailSubscribed": {
                        "type": "boolean"
                      },
                      "messengerId": {
                        "type": "string"
                      },
                      "bio": {
                        "type": "string",
                        "description": "Markdown that the person can write about themselves."
                      },
                      "authentication": {
                        "type": "object",
                        "properties": {
                          "emailIsVerified": {
                            "type": "boolean"
                          },
                          "emailOtp": {
                            "type": "string"
                          },
                          "emailOtpAt": {
                            "type": "number"
                          },
                          "twoFactorAuthenticationStrategy": {
                            "type": "string",
                            "enum": [
                              "disabled",
                              "any",
                              "email",
                              "phoneNumber",
                              "both"
                            ],
                            "description": "Strategy for the user to authenticate. Defaults to disabled, which means you can just verify in a single way."
                          },
                          "phoneNumberIsVerified": {
                            "type": "boolean"
                          },
                          "phoneNumberOtp": {
                            "type": "string"
                          },
                          "phoneNumberOtpAt": {
                            "type": "number"
                          },
                          "encryptedPassword": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false,
                        "description": "To replace the initial system of having multiple `authenticationMethod`s\n\nIf authentication exists, that means the user is attempting to access their account\n\nWe can already have their person registered and we can already have information about them or for them without them having an account yet, because it's the same `Person` model.\n\nTODO: Remove this completely, outdated"
                      },
                      "interestSlugs": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Slug"
                        },
                        "description": "slugs of interest categories that this person should be notified about.\n\nSince this is a hierarchical model, parent interests will ensure all children are also applied."
                      },
                      "mediaChannelIds": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Id"
                        },
                        "description": "After the `MediaChannel` DB is filled, we can index the names of the persons of the `MediaChannel`, and and we can push them to here, if the name is \"similar\" to the name of this `Person`.\n\n`*` = \"similar\" means: exact match, or at least first name + last name match"
                      },
                      "preferred_mediaChannelId": {
                        "$ref": "#/components/schemas/Id",
                        "description": "Optional. Can be set by admin (not indexed)\n\nIf not available, take the first (mediaChannelIds[0])"
                      },
                      "devicesCalculated": {
                        "type": "array",
                        "items": {},
                        "description": "Devices can be attached to a person by looking in the device model and finding the devices that refer to this person\n\nAmong other things, this can be used to determine the `Person` location"
                      },
                      "authenticationMethods": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/AuthenticationMethod"
                        },
                        "description": "DEPRECATED: to be replaced by `authentication` in favor of simplicity\n\nMethods that can be used to identify yourself as being this user\n\nShould be set up by the user either when registering, or in settings, to provide more methods.\n\nNB: It's important to note that a `Person` should not be able to add credentials that are already added by another person. This means that, when adding such a method, all `Person`s need to be searched!"
                      },
                      "groupSlugs": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Slug"
                        },
                        "description": "To which groups does this person belong?\n\nThis determines additional authorizations\n\nCan be set on signup, but can always be edited by admin\n\nDEPRECATED?! Should be replaced by groups.personSlug for efficiency"
                      },
                      "groups": {
                        "type": "array",
                        "items": {}
                      },
                      "credit": {
                        "$ref": "#/components/schemas/Credit",
                        "description": "Actions by the `Person` can create changes in the amount of credits\n\nThe exact meaning of the number of credits is determined by the OS settings. Can for example be 1:1 to euro, 1:1 to bitcoin, or a custom credit system. Transferability is also customisable.\n\nInsufficient credit can limit the persons possibilities within the OS"
                      },
                      "currentConferenceCallId": {
                        "type": "string",
                        "description": "needed for active calls"
                      },
                      "isWaitlistRequested": {
                        "type": "boolean",
                        "description": "if true, user has given email and\n\n- for high-income country, trial is requested\n- for low-income country, free unlimited is requested"
                      },
                      "trialStartedAt": {
                        "type": "number",
                        "description": "if admins give the trial access, this will be enabled, and unlimited will be turned on"
                      },
                      "trialDurationDays": {
                        "type": "number",
                        "description": "amount of days the trial will take"
                      },
                      "subscribee_personSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "the persons that you have given your subscription automatically, if any. Should, upon payment, link 3 low-income country people to you."
                      },
                      "subscriber_personSlug": {
                        "type": "string",
                        "description": "the persons that you have given your subscription, if it was given."
                      },
                      "isDiscoveryEnabled": {
                        "type": "boolean",
                        "description": "If the person sets this to true (opt-in)\n- as a subscriber, you allow the subscribees to contact you\n- as a subscribee, you allow the subscriber to contact you"
                      },
                      "sendingMessageAt": {
                        "type": "number",
                        "description": "gets set to the date when you start sending a message, gets reset afterwards, so you don't send two messages at the same time, there is some sort of wait system"
                      },
                      "totalCreditSpent": {
                        "$ref": "#/components/schemas/Credit",
                        "description": "Useful metric. Should accumulate every time the user spends credit"
                      },
                      "totalCreditPaid": {
                        "$ref": "#/components/schemas/Credit",
                        "description": "Useful metric"
                      },
                      "totalCreditGiven": {
                        "$ref": "#/components/schemas/Credit",
                        "description": "Useful metric: how much credit was given for free to the user by the system"
                      },
                      "totalCreditGivenFriends": {
                        "$ref": "#/components/schemas/Credit",
                        "description": "Useful metric, how much credit was given to friends"
                      },
                      "referralSlug": {
                        "type": "string",
                        "description": "Referral business (based on initial message). Links to `Referral` model instance"
                      },
                      "referral_personaSlug": {
                        "type": "string",
                        "description": "Persona that the user used the app the first..."
                      },
                      "icalWebfeedUrl": {
                        "type": "string",
                        "description": "webfeed iCal URL to sync your calendar into our system"
                      },
                      "lastLocation": {
                        "$ref": "#/components/schemas/AssistantLocation",
                        "description": "To be used as Assistant Context"
                      },
                      "utcTimeOffsetHours": {
                        "type": "number",
                        "description": "Set when user signs up, updated when user gives location"
                      },
                      "preferredLanguage": {
                        "type": "string",
                        "description": "Set upon user creation, can be changed into anything.\n\nThis is the baselanguage in which you prefer to receive all communication"
                      },
                      "helperLanguages": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Language"
                        },
                        "description": "If set, and if `.preferredLanguage` is also a `Language`, the `WordMatrix` can be used to show words in these languages on hover (or on mobile on-click)"
                      },
                      "relationSlugsCalculated": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "lastLocationAt": {
                        "type": "number",
                        "description": "To be used as Assistant Context"
                      },
                      "socialMediaChannels": {
                        "$ref": "#/components/schemas/SocialMediaChannels"
                      },
                      "isSemanticSearchDone": {
                        "type": "boolean",
                        "description": "See `getFastPersonInfo`"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/person/execute": {
      "put": {
        "tags": ["person"],
        "summary": "Execute person",
        "operationId": "generatePerson",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "__id",
                      "authToken",
                      "createdAt",
                      "name",
                      "notes",
                      "phoneNumber",
                      "isPhoneNumberVerified",
                      "whatsappPhoneNumber",
                      "isWhatsappPhoneNumberVerified",
                      "email",
                      "isEmailVerified",
                      "googlePlacesInfo",
                      "isPhoneNumberPublic",
                      "isEmailPublic",
                      "fullName",
                      "firstName",
                      "lastName",
                      "profession",
                      "interests",
                      "address",
                      "companies",
                      "summary",
                      "followUpSearchQueries",
                      "subscriptionType",
                      "paymentAuthToken",
                      "stripeCustomerEmail",
                      "hasSubscription",
                      "paymentLink",
                      "paymentLinkCreatedAt",
                      "paymentLinkExpiresAt",
                      "modelName",
                      "isWhatsappPhoneNumberPublic",
                      "hasPhoneNumberCalculated",
                      "hasWhatsappPhoneNumberCalculated",
                      "hasEmailCalculated",
                      "pictureImages",
                      "emoji",
                      "betaMode",
                      "isAlphaAllowed",
                      "lastAnalysedAt",
                      "isChatAnonymousMode",
                      "goalsDescription",
                      "crud_personaSlugs",
                      "isPersona",
                      "lastActivityAt",
                      "lastActivity_personSlug",
                      "isEmailSubscribed",
                      "messengerId",
                      "bio",
                      "authentication",
                      "interestSlugs",
                      "mediaChannelIds",
                      "preferred_mediaChannelId",
                      "devicesCalculated",
                      "authenticationMethods",
                      "groupSlugs",
                      "groups",
                      "credit",
                      "currentConferenceCallId",
                      "isWaitlistRequested",
                      "trialStartedAt",
                      "trialDurationDays",
                      "subscribee_personSlugs",
                      "subscriber_personSlug",
                      "isDiscoveryEnabled",
                      "sendingMessageAt",
                      "totalCreditSpent",
                      "totalCreditPaid",
                      "totalCreditGiven",
                      "totalCreditGivenFriends",
                      "referralSlug",
                      "referral_personaSlug",
                      "icalWebfeedUrl",
                      "lastLocation",
                      "utcTimeOffsetHours",
                      "preferredLanguage",
                      "helperLanguages",
                      "relationSlugsCalculated",
                      "lastLocationAt",
                      "socialMediaChannels",
                      "isSemanticSearchDone"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/person": {
      "delete": {
        "tags": ["person"],
        "summary": "Delete person",
        "operationId": "deletePerson",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persona/read": {
      "post": {
        "tags": ["persona"],
        "summary": "Read persona",
        "operationId": "readPersona",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "githubEmail",
                            "githubAccessToken",
                            "githubOrganisation",
                            "useGithubOrganisation",
                            "apiKey2Captcha",
                            "linkedinEmail",
                            "linkedinPassword",
                            "twitterLoginHandle",
                            "twitterPassword",
                            "twitterApiKey",
                            "twitterApiKeySecret",
                            "twitterBearerToken",
                            "twitterAccessToken",
                            "twitterAccessTokenSecret",
                            "twitterOAuth2ClientIdentifier",
                            "twitterOAuth2ClientSecret",
                            "facebookLoginHandle",
                            "facebookPassword",
                            "mediumLoginHandle",
                            "mediumPassword",
                            "redditLoginHandle",
                            "redditPassword",
                            "devtoLoginHandle",
                            "devtoPassword",
                            "slackLoginHandle",
                            "slackPassword",
                            "vercelProjectId",
                            "vercelTeamId",
                            "vercelApiToken",
                            "vercelDeployHookUrl",
                            "githubWebhookSecret",
                            "cloudflareEmail",
                            "cloudflareApiKey",
                            "cloudflareAccountId",
                            "namecheapApiKey",
                            "namecheapUsername",
                            "namecheapClientIp",
                            "stripeWebhookSigningSecret",
                            "stripePublishableKey",
                            "stripeSecret",
                            "twilioAccountSid",
                            "twilioAuthToken",
                            "sendgridApiKey",
                            "scrapingbeeToken",
                            "scrapedoApiToken",
                            "serperApiKey",
                            "deepgramApiKey",
                            "replicateApiToken",
                            "playhtUser",
                            "playhtSecret",
                            "openAiPassword",
                            "openAiEmail",
                            "openAiToken",
                            "huggingfaceAuthToken",
                            "uberduckApiKey",
                            "uberduckSecret",
                            "bananadevApiKey",
                            "bananadevModelKeys",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "name",
                            "useOwnCredentials",
                            "email",
                            "sendgridFromEmail",
                            "twilioWhatsappFromPhoneNumber",
                            "twilioMessengerIdentifier",
                            "status",
                            "purposes",
                            "transformations",
                            "reviewAssets",
                            "exampleAssets",
                            "description",
                            "tagline",
                            "preferredTextToText",
                            "isSubscriptionPlanDisabled",
                            "workflowSlugs",
                            "workflows",
                            "default_aiPluginSlugs",
                            "isAiPlugin",
                            "default_aiPlugins",
                            "domain",
                            "contextualPromptSlugs",
                            "contextualPrompts",
                            "genericVoices",
                            "isVoiceRequired",
                            "style",
                            "responseModality",
                            "autoReplyPolicy",
                            "inherited_personaSlug",
                            "disableVideos",
                            "payForWhat",
                            "costPerMessageCredit",
                            "freeMessagesPerNewUser",
                            "customCreditQuantity",
                            "freeMessagesPerDay",
                            "freeMessagesPerNewUserAfterDauLimit",
                            "maximumNewUsersPerDay",
                            "giftsPerDay",
                            "giftFreeMessages",
                            "dauLimit",
                            "dauLimitPaid",
                            "dauLimitVip",
                            "minimumCreditPaid",
                            "minimumCreditVip",
                            "freeMessagesForReferral",
                            "freeMessagesForReferralPay",
                            "fillerSentences",
                            "customWelcomeMessage",
                            "customWelcomeBackMessage",
                            "customPaywallMessage",
                            "defaultFollow_personSlugs",
                            "mediaCredentialIds",
                            "mediaCredentials",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "githubEmail",
                            "githubAccessToken",
                            "githubOrganisation",
                            "useGithubOrganisation",
                            "apiKey2Captcha",
                            "linkedinEmail",
                            "linkedinPassword",
                            "twitterLoginHandle",
                            "twitterPassword",
                            "twitterApiKey",
                            "twitterApiKeySecret",
                            "twitterBearerToken",
                            "twitterAccessToken",
                            "twitterAccessTokenSecret",
                            "twitterOAuth2ClientIdentifier",
                            "twitterOAuth2ClientSecret",
                            "facebookLoginHandle",
                            "facebookPassword",
                            "mediumLoginHandle",
                            "mediumPassword",
                            "redditLoginHandle",
                            "redditPassword",
                            "devtoLoginHandle",
                            "devtoPassword",
                            "slackLoginHandle",
                            "slackPassword",
                            "vercelProjectId",
                            "vercelTeamId",
                            "vercelApiToken",
                            "vercelDeployHookUrl",
                            "githubWebhookSecret",
                            "cloudflareEmail",
                            "cloudflareApiKey",
                            "cloudflareAccountId",
                            "namecheapApiKey",
                            "namecheapUsername",
                            "namecheapClientIp",
                            "stripeWebhookSigningSecret",
                            "stripePublishableKey",
                            "stripeSecret",
                            "twilioAccountSid",
                            "twilioAuthToken",
                            "sendgridApiKey",
                            "scrapingbeeToken",
                            "scrapedoApiToken",
                            "serperApiKey",
                            "deepgramApiKey",
                            "replicateApiToken",
                            "playhtUser",
                            "playhtSecret",
                            "openAiPassword",
                            "openAiEmail",
                            "openAiToken",
                            "huggingfaceAuthToken",
                            "uberduckApiKey",
                            "uberduckSecret",
                            "bananadevApiKey",
                            "bananadevModelKeys",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "name",
                            "useOwnCredentials",
                            "email",
                            "sendgridFromEmail",
                            "twilioWhatsappFromPhoneNumber",
                            "twilioMessengerIdentifier",
                            "status",
                            "purposes",
                            "transformations",
                            "reviewAssets",
                            "exampleAssets",
                            "description",
                            "tagline",
                            "preferredTextToText",
                            "isSubscriptionPlanDisabled",
                            "workflowSlugs",
                            "workflows",
                            "default_aiPluginSlugs",
                            "isAiPlugin",
                            "default_aiPlugins",
                            "domain",
                            "contextualPromptSlugs",
                            "contextualPrompts",
                            "genericVoices",
                            "isVoiceRequired",
                            "style",
                            "responseModality",
                            "autoReplyPolicy",
                            "inherited_personaSlug",
                            "disableVideos",
                            "payForWhat",
                            "costPerMessageCredit",
                            "freeMessagesPerNewUser",
                            "customCreditQuantity",
                            "freeMessagesPerDay",
                            "freeMessagesPerNewUserAfterDauLimit",
                            "maximumNewUsersPerDay",
                            "giftsPerDay",
                            "giftFreeMessages",
                            "dauLimit",
                            "dauLimitPaid",
                            "dauLimitVip",
                            "minimumCreditPaid",
                            "minimumCreditVip",
                            "freeMessagesForReferral",
                            "freeMessagesForReferralPay",
                            "fillerSentences",
                            "customWelcomeMessage",
                            "customWelcomeBackMessage",
                            "customPaywallMessage",
                            "defaultFollow_personSlugs",
                            "mediaCredentialIds",
                            "mediaCredentials",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "githubEmail",
                        "githubAccessToken",
                        "githubOrganisation",
                        "useGithubOrganisation",
                        "apiKey2Captcha",
                        "linkedinEmail",
                        "linkedinPassword",
                        "twitterLoginHandle",
                        "twitterPassword",
                        "twitterApiKey",
                        "twitterApiKeySecret",
                        "twitterBearerToken",
                        "twitterAccessToken",
                        "twitterAccessTokenSecret",
                        "twitterOAuth2ClientIdentifier",
                        "twitterOAuth2ClientSecret",
                        "facebookLoginHandle",
                        "facebookPassword",
                        "mediumLoginHandle",
                        "mediumPassword",
                        "redditLoginHandle",
                        "redditPassword",
                        "devtoLoginHandle",
                        "devtoPassword",
                        "slackLoginHandle",
                        "slackPassword",
                        "vercelProjectId",
                        "vercelTeamId",
                        "vercelApiToken",
                        "vercelDeployHookUrl",
                        "githubWebhookSecret",
                        "cloudflareEmail",
                        "cloudflareApiKey",
                        "cloudflareAccountId",
                        "namecheapApiKey",
                        "namecheapUsername",
                        "namecheapClientIp",
                        "stripeWebhookSigningSecret",
                        "stripePublishableKey",
                        "stripeSecret",
                        "twilioAccountSid",
                        "twilioAuthToken",
                        "sendgridApiKey",
                        "scrapingbeeToken",
                        "scrapedoApiToken",
                        "serperApiKey",
                        "deepgramApiKey",
                        "replicateApiToken",
                        "playhtUser",
                        "playhtSecret",
                        "openAiPassword",
                        "openAiEmail",
                        "openAiToken",
                        "huggingfaceAuthToken",
                        "uberduckApiKey",
                        "uberduckSecret",
                        "bananadevApiKey",
                        "bananadevModelKeys",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "name",
                        "useOwnCredentials",
                        "email",
                        "sendgridFromEmail",
                        "twilioWhatsappFromPhoneNumber",
                        "twilioMessengerIdentifier",
                        "status",
                        "purposes",
                        "transformations",
                        "reviewAssets",
                        "exampleAssets",
                        "description",
                        "tagline",
                        "preferredTextToText",
                        "isSubscriptionPlanDisabled",
                        "workflowSlugs",
                        "workflows",
                        "default_aiPluginSlugs",
                        "isAiPlugin",
                        "default_aiPlugins",
                        "domain",
                        "contextualPromptSlugs",
                        "contextualPrompts",
                        "genericVoices",
                        "isVoiceRequired",
                        "style",
                        "responseModality",
                        "autoReplyPolicy",
                        "inherited_personaSlug",
                        "disableVideos",
                        "payForWhat",
                        "costPerMessageCredit",
                        "freeMessagesPerNewUser",
                        "customCreditQuantity",
                        "freeMessagesPerDay",
                        "freeMessagesPerNewUserAfterDauLimit",
                        "maximumNewUsersPerDay",
                        "giftsPerDay",
                        "giftFreeMessages",
                        "dauLimit",
                        "dauLimitPaid",
                        "dauLimitVip",
                        "minimumCreditPaid",
                        "minimumCreditVip",
                        "freeMessagesForReferral",
                        "freeMessagesForReferralPay",
                        "fillerSentences",
                        "customWelcomeMessage",
                        "customWelcomeBackMessage",
                        "customPaywallMessage",
                        "defaultFollow_personSlugs",
                        "mediaCredentialIds",
                        "mediaCredentials",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "githubEmail",
                        "githubAccessToken",
                        "githubOrganisation",
                        "useGithubOrganisation",
                        "apiKey2Captcha",
                        "linkedinEmail",
                        "linkedinPassword",
                        "twitterLoginHandle",
                        "twitterPassword",
                        "twitterApiKey",
                        "twitterApiKeySecret",
                        "twitterBearerToken",
                        "twitterAccessToken",
                        "twitterAccessTokenSecret",
                        "twitterOAuth2ClientIdentifier",
                        "twitterOAuth2ClientSecret",
                        "facebookLoginHandle",
                        "facebookPassword",
                        "mediumLoginHandle",
                        "mediumPassword",
                        "redditLoginHandle",
                        "redditPassword",
                        "devtoLoginHandle",
                        "devtoPassword",
                        "slackLoginHandle",
                        "slackPassword",
                        "vercelProjectId",
                        "vercelTeamId",
                        "vercelApiToken",
                        "vercelDeployHookUrl",
                        "githubWebhookSecret",
                        "cloudflareEmail",
                        "cloudflareApiKey",
                        "cloudflareAccountId",
                        "namecheapApiKey",
                        "namecheapUsername",
                        "namecheapClientIp",
                        "stripeWebhookSigningSecret",
                        "stripePublishableKey",
                        "stripeSecret",
                        "twilioAccountSid",
                        "twilioAuthToken",
                        "sendgridApiKey",
                        "scrapingbeeToken",
                        "scrapedoApiToken",
                        "serperApiKey",
                        "deepgramApiKey",
                        "replicateApiToken",
                        "playhtUser",
                        "playhtSecret",
                        "openAiPassword",
                        "openAiEmail",
                        "openAiToken",
                        "huggingfaceAuthToken",
                        "uberduckApiKey",
                        "uberduckSecret",
                        "bananadevApiKey",
                        "bananadevModelKeys",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "name",
                        "useOwnCredentials",
                        "email",
                        "sendgridFromEmail",
                        "twilioWhatsappFromPhoneNumber",
                        "twilioMessengerIdentifier",
                        "status",
                        "purposes",
                        "transformations",
                        "reviewAssets",
                        "exampleAssets",
                        "description",
                        "tagline",
                        "preferredTextToText",
                        "isSubscriptionPlanDisabled",
                        "workflowSlugs",
                        "workflows",
                        "default_aiPluginSlugs",
                        "isAiPlugin",
                        "default_aiPlugins",
                        "domain",
                        "contextualPromptSlugs",
                        "contextualPrompts",
                        "genericVoices",
                        "isVoiceRequired",
                        "style",
                        "responseModality",
                        "autoReplyPolicy",
                        "inherited_personaSlug",
                        "disableVideos",
                        "payForWhat",
                        "costPerMessageCredit",
                        "freeMessagesPerNewUser",
                        "customCreditQuantity",
                        "freeMessagesPerDay",
                        "freeMessagesPerNewUserAfterDauLimit",
                        "maximumNewUsersPerDay",
                        "giftsPerDay",
                        "giftFreeMessages",
                        "dauLimit",
                        "dauLimitPaid",
                        "dauLimitVip",
                        "minimumCreditPaid",
                        "minimumCreditVip",
                        "freeMessagesForReferral",
                        "freeMessagesForReferralPay",
                        "fillerSentences",
                        "customWelcomeMessage",
                        "customWelcomeBackMessage",
                        "customPaywallMessage",
                        "defaultFollow_personSlugs",
                        "mediaCredentialIds",
                        "mediaCredentials",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "githubEmail": {
                                "type": "string",
                                "description": "Github stuff"
                              },
                              "githubAccessToken": {
                                "type": "string",
                                "description": "Personal access token"
                              },
                              "githubOrganisation": {
                                "type": "string"
                              },
                              "useGithubOrganisation": {
                                "type": "boolean"
                              },
                              "apiKey2Captcha": {
                                "type": "string"
                              },
                              "linkedinEmail": {
                                "type": "string"
                              },
                              "linkedinPassword": {
                                "type": "string"
                              },
                              "twitterLoginHandle": {
                                "type": "string",
                                "description": "phone, email or username"
                              },
                              "twitterPassword": {
                                "type": "string"
                              },
                              "twitterApiKey": {
                                "type": "string"
                              },
                              "twitterApiKeySecret": {
                                "type": "string"
                              },
                              "twitterBearerToken": {
                                "type": "string"
                              },
                              "twitterAccessToken": {
                                "type": "string"
                              },
                              "twitterAccessTokenSecret": {
                                "type": "string"
                              },
                              "twitterOAuth2ClientIdentifier": {
                                "type": "string"
                              },
                              "twitterOAuth2ClientSecret": {
                                "type": "string"
                              },
                              "facebookLoginHandle": {
                                "type": "string"
                              },
                              "facebookPassword": {
                                "type": "string"
                              },
                              "mediumLoginHandle": {
                                "type": "string"
                              },
                              "mediumPassword": {
                                "type": "string"
                              },
                              "redditLoginHandle": {
                                "type": "string"
                              },
                              "redditPassword": {
                                "type": "string"
                              },
                              "devtoLoginHandle": {
                                "type": "string"
                              },
                              "devtoPassword": {
                                "type": "string"
                              },
                              "slackLoginHandle": {
                                "type": "string"
                              },
                              "slackPassword": {
                                "type": "string"
                              },
                              "vercelProjectId": {
                                "type": "string"
                              },
                              "vercelTeamId": {
                                "type": "string"
                              },
                              "vercelApiToken": {
                                "type": "string"
                              },
                              "vercelDeployHookUrl": {
                                "type": "string"
                              },
                              "githubWebhookSecret": {
                                "type": "string"
                              },
                              "cloudflareEmail": {
                                "type": "string"
                              },
                              "cloudflareApiKey": {
                                "type": "string"
                              },
                              "cloudflareAccountId": {
                                "type": "string"
                              },
                              "namecheapApiKey": {
                                "type": "string"
                              },
                              "namecheapUsername": {
                                "type": "string"
                              },
                              "namecheapClientIp": {
                                "type": "string"
                              },
                              "stripeWebhookSigningSecret": {
                                "type": "string",
                                "description": "secret for signing the webhook"
                              },
                              "stripePublishableKey": {
                                "type": "string"
                              },
                              "stripeSecret": {
                                "type": "string",
                                "description": "NB: should have a custom input in the `SimplifiedSchemaForm`"
                              },
                              "twilioAccountSid": {
                                "type": "string"
                              },
                              "twilioAuthToken": {
                                "type": "string"
                              },
                              "sendgridApiKey": {
                                "type": "string"
                              },
                              "scrapingbeeToken": {
                                "type": "string",
                                "description": "scrapingbee"
                              },
                              "scrapedoApiToken": {
                                "type": "string"
                              },
                              "serperApiKey": {
                                "type": "string"
                              },
                              "deepgramApiKey": {
                                "type": "string"
                              },
                              "replicateApiToken": {
                                "type": "string"
                              },
                              "playhtUser": {
                                "type": "string",
                                "description": "user id of playht"
                              },
                              "playhtSecret": {
                                "type": "string"
                              },
                              "openAiPassword": {
                                "type": "string"
                              },
                              "openAiEmail": {
                                "type": "string"
                              },
                              "openAiToken": {
                                "type": "string"
                              },
                              "huggingfaceAuthToken": {
                                "type": "string"
                              },
                              "uberduckApiKey": {
                                "type": "string"
                              },
                              "uberduckSecret": {
                                "type": "string"
                              },
                              "bananadevApiKey": {
                                "type": "string"
                              },
                              "bananadevModelKeys": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "string"
                                }
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "slug": {
                                "type": "string",
                                "description": "Slug can also be a domain. If this is the case, this persona belongs to an `AiPlugin`."
                              },
                              "name": {
                                "type": "string"
                              },
                              "useOwnCredentials": {
                                "type": "boolean",
                                "description": "If true, this personas person is paying for their own api keys, meaning they don't need to be charged for this"
                              },
                              "email": {
                                "type": "string"
                              },
                              "sendgridFromEmail": {
                                "type": "string"
                              },
                              "twilioWhatsappFromPhoneNumber": {
                                "type": "string",
                                "description": "TODO: rename to twilioPhoneNumber\n\nMust be a phone number that is also a whatsapp sender if you want to use it for this as well"
                              },
                              "twilioMessengerIdentifier": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "disabled",
                                  "alpha",
                                  "beta",
                                  "production"
                                ],
                                "description": "disabled: doesn't show in the list alpha: only shows on the frontpage for team members beta: shows in the frontpage but has a 'beta' flag production: shows"
                              },
                              "purposes": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "purposeDescription": {
                                      "type": "string"
                                    },
                                    "slug": {
                                      "type": "string"
                                    }
                                  },
                                  "required": ["purposeDescription", "slug"],
                                  "additionalProperties": false
                                },
                                "description": "What does this persona do? Used for sales funnels"
                              },
                              "transformations": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Persona is someone that uses chat ai pro (web interface)\n\nThey can set up which transformations the message need to undergo when receiving a message"
                              },
                              "reviewAssets": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/BackendAsset"
                                },
                                "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
                              },
                              "exampleAssets": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/BackendAsset"
                                },
                                "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
                              },
                              "description": {
                                "type": "string",
                                "description": "Profile bio (can be multiline)"
                              },
                              "tagline": {
                                "type": "string",
                                "description": "one line description about the bot"
                              },
                              "preferredTextToText": {
                                "type": "string"
                              },
                              "isSubscriptionPlanDisabled": {
                                "type": "boolean",
                                "description": "TODO:\n\nif true, will not generate payment links and will not allow user to subscribe to this one"
                              },
                              "workflowSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Workflows that this persona should showcase"
                              },
                              "workflows": {
                                "type": "array",
                                "items": {}
                              },
                              "default_aiPluginSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "new users that interact with this assistant as a new relation will get these plugins assigned"
                              },
                              "isAiPlugin": {
                                "type": "boolean"
                              },
                              "default_aiPlugins": {
                                "type": "array",
                                "items": {}
                              },
                              "domain": {
                                "type": "string",
                                "description": "Required for root.\n\nShould be the primary domain. Used for email and maybe links from emails, sms, etc."
                              },
                              "contextualPromptSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Contextual prompts that need to be showcased on the personas profile for direct usage"
                              },
                              "contextualPrompts": {
                                "type": "array",
                                "items": {}
                              },
                              "genericVoices": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "object",
                                  "properties": {
                                    "model": {
                                      "type": "string",
                                      "enum": ["playht", "local", "uberduck"]
                                    },
                                    "voiceKey": {
                                      "type": "string"
                                    }
                                  },
                                  "required": ["model", "voiceKey"],
                                  "additionalProperties": false
                                },
                                "description": "Defaults back to a global generic voices object. Can be set automatically by the AI based on what we know about the person."
                              },
                              "isVoiceRequired": {
                                "type": "boolean",
                                "description": "If true, voice is required and language will thus be enforced to the available ones if this speaker style is selected.\n\nE.g. if the users preferredLanguage is Dutch but he sets the speaker style to eminem, and eminem is only available through voices in english, then the language will be set to english instead."
                              },
                              "style": {
                                "type": "string",
                                "description": "Hardcoded style, used for translation and forming a reply by the LLM.\n\nCannot be overwritten\n\nExamples: Albert Einstein, Eminem, Snoop Dogg, poetic rap, street slang"
                              },
                              "responseModality": {
                                "type": "string",
                                "enum": ["both", "voice", "text"]
                              },
                              "autoReplyPolicy": {
                                "$ref": "#/components/schemas/MessagePolicy",
                                "description": "defaults to \"auto\"\n\n\"disabled\" will disable the reply completely\n\n\"draft\" will add \"draftedResponse\" to \"Relation\", but not send it"
                              },
                              "inherited_personaSlug": {
                                "type": "string",
                                "description": "If this is given, will inherit all existing values from that persona, and overwrite them with the ones this persona has."
                              },
                              "disableVideos": {
                                "type": "boolean"
                              },
                              "payForWhat": {
                                "type": "string",
                                "description": "string to describe what you pay for for 2 euros"
                              },
                              "costPerMessageCredit": {
                                "type": "number",
                                "description": "Defaults to 0.05"
                              },
                              "freeMessagesPerNewUser": {
                                "type": "number"
                              },
                              "customCreditQuantity": {
                                "type": "number",
                                "description": "defaults to 10"
                              },
                              "freeMessagesPerDay": {
                                "type": "number"
                              },
                              "freeMessagesPerNewUserAfterDauLimit": {
                                "type": "number",
                                "description": "free messages per new user after dau limit"
                              },
                              "maximumNewUsersPerDay": {
                                "type": "number",
                                "description": "amount of new users allowed (per day)"
                              },
                              "giftsPerDay": {
                                "type": "number",
                                "description": "amount of gifts to inactive users (per day)"
                              },
                              "giftFreeMessages": {
                                "type": "number",
                                "description": "free messages in a gift"
                              },
                              "dauLimit": {
                                "type": "number",
                                "description": "dau limit (defaults to 100)"
                              },
                              "dauLimitPaid": {
                                "type": "number",
                                "description": "paid dau limit ($5+)"
                              },
                              "dauLimitVip": {
                                "type": "number",
                                "description": "vip dau limit ($50+)"
                              },
                              "minimumCreditPaid": {
                                "type": "number",
                                "description": "minimum credit required to be \"paid\", defaults to 0"
                              },
                              "minimumCreditVip": {
                                "type": "number",
                                "description": "minimum credit required to be \"deluxe\", omitted if not set"
                              },
                              "freeMessagesForReferral": {
                                "type": "number",
                                "description": "reward free messages for referal use"
                              },
                              "freeMessagesForReferralPay": {
                                "type": "number",
                                "description": "reward for referal pay"
                              },
                              "fillerSentences": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "customWelcomeMessage": {
                                "type": "string",
                                "description": "Custom message, instead of \"Nice to meet you $name. Let's get started. To answer your first message\""
                              },
                              "customWelcomeBackMessage": {
                                "type": "string",
                                "description": "Replaces the message that shows you how many credit you have"
                              },
                              "customPaywallMessage": {
                                "type": "string"
                              },
                              "defaultFollow_personSlugs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "mediaCredentialIds": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Id"
                                }
                              },
                              "mediaCredentials": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/MediaCredential"
                                }
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persona/create": {
      "post": {
        "tags": ["persona"],
        "summary": "Create persona",
        "operationId": "createPersona",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "githubEmail": {
                          "type": "string",
                          "description": "Github stuff"
                        },
                        "githubAccessToken": {
                          "type": "string",
                          "description": "Personal access token"
                        },
                        "githubOrganisation": {
                          "type": "string"
                        },
                        "useGithubOrganisation": {
                          "type": "boolean"
                        },
                        "apiKey2Captcha": {
                          "type": "string"
                        },
                        "linkedinEmail": {
                          "type": "string"
                        },
                        "linkedinPassword": {
                          "type": "string"
                        },
                        "twitterLoginHandle": {
                          "type": "string",
                          "description": "phone, email or username"
                        },
                        "twitterPassword": {
                          "type": "string"
                        },
                        "twitterApiKey": {
                          "type": "string"
                        },
                        "twitterApiKeySecret": {
                          "type": "string"
                        },
                        "twitterBearerToken": {
                          "type": "string"
                        },
                        "twitterAccessToken": {
                          "type": "string"
                        },
                        "twitterAccessTokenSecret": {
                          "type": "string"
                        },
                        "twitterOAuth2ClientIdentifier": {
                          "type": "string"
                        },
                        "twitterOAuth2ClientSecret": {
                          "type": "string"
                        },
                        "facebookLoginHandle": {
                          "type": "string"
                        },
                        "facebookPassword": {
                          "type": "string"
                        },
                        "mediumLoginHandle": {
                          "type": "string"
                        },
                        "mediumPassword": {
                          "type": "string"
                        },
                        "redditLoginHandle": {
                          "type": "string"
                        },
                        "redditPassword": {
                          "type": "string"
                        },
                        "devtoLoginHandle": {
                          "type": "string"
                        },
                        "devtoPassword": {
                          "type": "string"
                        },
                        "slackLoginHandle": {
                          "type": "string"
                        },
                        "slackPassword": {
                          "type": "string"
                        },
                        "vercelProjectId": {
                          "type": "string"
                        },
                        "vercelTeamId": {
                          "type": "string"
                        },
                        "vercelApiToken": {
                          "type": "string"
                        },
                        "vercelDeployHookUrl": {
                          "type": "string"
                        },
                        "githubWebhookSecret": {
                          "type": "string"
                        },
                        "cloudflareEmail": {
                          "type": "string"
                        },
                        "cloudflareApiKey": {
                          "type": "string"
                        },
                        "cloudflareAccountId": {
                          "type": "string"
                        },
                        "namecheapApiKey": {
                          "type": "string"
                        },
                        "namecheapUsername": {
                          "type": "string"
                        },
                        "namecheapClientIp": {
                          "type": "string"
                        },
                        "stripeWebhookSigningSecret": {
                          "type": "string",
                          "description": "secret for signing the webhook"
                        },
                        "stripePublishableKey": {
                          "type": "string"
                        },
                        "stripeSecret": {
                          "type": "string",
                          "description": "NB: should have a custom input in the `SimplifiedSchemaForm`"
                        },
                        "twilioAccountSid": {
                          "type": "string"
                        },
                        "twilioAuthToken": {
                          "type": "string"
                        },
                        "sendgridApiKey": {
                          "type": "string"
                        },
                        "scrapingbeeToken": {
                          "type": "string",
                          "description": "scrapingbee"
                        },
                        "scrapedoApiToken": {
                          "type": "string"
                        },
                        "serperApiKey": {
                          "type": "string"
                        },
                        "deepgramApiKey": {
                          "type": "string"
                        },
                        "replicateApiToken": {
                          "type": "string"
                        },
                        "playhtUser": {
                          "type": "string",
                          "description": "user id of playht"
                        },
                        "playhtSecret": {
                          "type": "string"
                        },
                        "openAiPassword": {
                          "type": "string"
                        },
                        "openAiEmail": {
                          "type": "string"
                        },
                        "openAiToken": {
                          "type": "string"
                        },
                        "huggingfaceAuthToken": {
                          "type": "string"
                        },
                        "uberduckApiKey": {
                          "type": "string"
                        },
                        "uberduckSecret": {
                          "type": "string"
                        },
                        "bananadevApiKey": {
                          "type": "string"
                        },
                        "bananadevModelKeys": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          }
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "slug": {
                          "type": "string",
                          "description": "Slug can also be a domain. If this is the case, this persona belongs to an `AiPlugin`."
                        },
                        "name": {
                          "type": "string"
                        },
                        "useOwnCredentials": {
                          "type": "boolean",
                          "description": "If true, this personas person is paying for their own api keys, meaning they don't need to be charged for this"
                        },
                        "email": {
                          "type": "string"
                        },
                        "sendgridFromEmail": {
                          "type": "string"
                        },
                        "twilioWhatsappFromPhoneNumber": {
                          "type": "string",
                          "description": "TODO: rename to twilioPhoneNumber\n\nMust be a phone number that is also a whatsapp sender if you want to use it for this as well"
                        },
                        "twilioMessengerIdentifier": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["disabled", "alpha", "beta", "production"],
                          "description": "disabled: doesn't show in the list alpha: only shows on the frontpage for team members beta: shows in the frontpage but has a 'beta' flag production: shows"
                        },
                        "purposes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "purposeDescription": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              }
                            },
                            "required": ["purposeDescription", "slug"],
                            "additionalProperties": false
                          },
                          "description": "What does this persona do? Used for sales funnels"
                        },
                        "transformations": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Persona is someone that uses chat ai pro (web interface)\n\nThey can set up which transformations the message need to undergo when receiving a message"
                        },
                        "reviewAssets": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/BackendAsset"
                          },
                          "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
                        },
                        "exampleAssets": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/BackendAsset"
                          },
                          "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
                        },
                        "description": {
                          "type": "string",
                          "description": "Profile bio (can be multiline)"
                        },
                        "tagline": {
                          "type": "string",
                          "description": "one line description about the bot"
                        },
                        "preferredTextToText": {
                          "type": "string"
                        },
                        "isSubscriptionPlanDisabled": {
                          "type": "boolean",
                          "description": "TODO:\n\nif true, will not generate payment links and will not allow user to subscribe to this one"
                        },
                        "workflowSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Workflows that this persona should showcase"
                        },
                        "workflows": {
                          "type": "array",
                          "items": {}
                        },
                        "default_aiPluginSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "new users that interact with this assistant as a new relation will get these plugins assigned"
                        },
                        "isAiPlugin": {
                          "type": "boolean"
                        },
                        "default_aiPlugins": {
                          "type": "array",
                          "items": {}
                        },
                        "domain": {
                          "type": "string",
                          "description": "Required for root.\n\nShould be the primary domain. Used for email and maybe links from emails, sms, etc."
                        },
                        "contextualPromptSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Contextual prompts that need to be showcased on the personas profile for direct usage"
                        },
                        "contextualPrompts": {
                          "type": "array",
                          "items": {}
                        },
                        "genericVoices": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "object",
                            "properties": {
                              "model": {
                                "type": "string",
                                "enum": ["playht", "local", "uberduck"]
                              },
                              "voiceKey": {
                                "type": "string"
                              }
                            },
                            "required": ["model", "voiceKey"],
                            "additionalProperties": false
                          },
                          "description": "Defaults back to a global generic voices object. Can be set automatically by the AI based on what we know about the person."
                        },
                        "isVoiceRequired": {
                          "type": "boolean",
                          "description": "If true, voice is required and language will thus be enforced to the available ones if this speaker style is selected.\n\nE.g. if the users preferredLanguage is Dutch but he sets the speaker style to eminem, and eminem is only available through voices in english, then the language will be set to english instead."
                        },
                        "style": {
                          "type": "string",
                          "description": "Hardcoded style, used for translation and forming a reply by the LLM.\n\nCannot be overwritten\n\nExamples: Albert Einstein, Eminem, Snoop Dogg, poetic rap, street slang"
                        },
                        "responseModality": {
                          "type": "string",
                          "enum": ["both", "voice", "text"]
                        },
                        "autoReplyPolicy": {
                          "$ref": "#/components/schemas/MessagePolicy",
                          "description": "defaults to \"auto\"\n\n\"disabled\" will disable the reply completely\n\n\"draft\" will add \"draftedResponse\" to \"Relation\", but not send it"
                        },
                        "inherited_personaSlug": {
                          "type": "string",
                          "description": "If this is given, will inherit all existing values from that persona, and overwrite them with the ones this persona has."
                        },
                        "disableVideos": {
                          "type": "boolean"
                        },
                        "payForWhat": {
                          "type": "string",
                          "description": "string to describe what you pay for for 2 euros"
                        },
                        "costPerMessageCredit": {
                          "type": "number",
                          "description": "Defaults to 0.05"
                        },
                        "freeMessagesPerNewUser": {
                          "type": "number"
                        },
                        "customCreditQuantity": {
                          "type": "number",
                          "description": "defaults to 10"
                        },
                        "freeMessagesPerDay": {
                          "type": "number"
                        },
                        "freeMessagesPerNewUserAfterDauLimit": {
                          "type": "number",
                          "description": "free messages per new user after dau limit"
                        },
                        "maximumNewUsersPerDay": {
                          "type": "number",
                          "description": "amount of new users allowed (per day)"
                        },
                        "giftsPerDay": {
                          "type": "number",
                          "description": "amount of gifts to inactive users (per day)"
                        },
                        "giftFreeMessages": {
                          "type": "number",
                          "description": "free messages in a gift"
                        },
                        "dauLimit": {
                          "type": "number",
                          "description": "dau limit (defaults to 100)"
                        },
                        "dauLimitPaid": {
                          "type": "number",
                          "description": "paid dau limit ($5+)"
                        },
                        "dauLimitVip": {
                          "type": "number",
                          "description": "vip dau limit ($50+)"
                        },
                        "minimumCreditPaid": {
                          "type": "number",
                          "description": "minimum credit required to be \"paid\", defaults to 0"
                        },
                        "minimumCreditVip": {
                          "type": "number",
                          "description": "minimum credit required to be \"deluxe\", omitted if not set"
                        },
                        "freeMessagesForReferral": {
                          "type": "number",
                          "description": "reward free messages for referal use"
                        },
                        "freeMessagesForReferralPay": {
                          "type": "number",
                          "description": "reward for referal pay"
                        },
                        "fillerSentences": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "customWelcomeMessage": {
                          "type": "string",
                          "description": "Custom message, instead of \"Nice to meet you $name. Let's get started. To answer your first message\""
                        },
                        "customWelcomeBackMessage": {
                          "type": "string",
                          "description": "Replaces the message that shows you how many credit you have"
                        },
                        "customPaywallMessage": {
                          "type": "string"
                        },
                        "defaultFollow_personSlugs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "mediaCredentialIds": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Id"
                          }
                        },
                        "mediaCredentials": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/MediaCredential"
                          }
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persona/update": {
      "post": {
        "tags": ["persona"],
        "summary": "Update persona",
        "operationId": "updatePersona",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "githubEmail": {
                        "type": "string",
                        "description": "Github stuff"
                      },
                      "githubAccessToken": {
                        "type": "string",
                        "description": "Personal access token"
                      },
                      "githubOrganisation": {
                        "type": "string"
                      },
                      "useGithubOrganisation": {
                        "type": "boolean"
                      },
                      "apiKey2Captcha": {
                        "type": "string"
                      },
                      "linkedinEmail": {
                        "type": "string"
                      },
                      "linkedinPassword": {
                        "type": "string"
                      },
                      "twitterLoginHandle": {
                        "type": "string",
                        "description": "phone, email or username"
                      },
                      "twitterPassword": {
                        "type": "string"
                      },
                      "twitterApiKey": {
                        "type": "string"
                      },
                      "twitterApiKeySecret": {
                        "type": "string"
                      },
                      "twitterBearerToken": {
                        "type": "string"
                      },
                      "twitterAccessToken": {
                        "type": "string"
                      },
                      "twitterAccessTokenSecret": {
                        "type": "string"
                      },
                      "twitterOAuth2ClientIdentifier": {
                        "type": "string"
                      },
                      "twitterOAuth2ClientSecret": {
                        "type": "string"
                      },
                      "facebookLoginHandle": {
                        "type": "string"
                      },
                      "facebookPassword": {
                        "type": "string"
                      },
                      "mediumLoginHandle": {
                        "type": "string"
                      },
                      "mediumPassword": {
                        "type": "string"
                      },
                      "redditLoginHandle": {
                        "type": "string"
                      },
                      "redditPassword": {
                        "type": "string"
                      },
                      "devtoLoginHandle": {
                        "type": "string"
                      },
                      "devtoPassword": {
                        "type": "string"
                      },
                      "slackLoginHandle": {
                        "type": "string"
                      },
                      "slackPassword": {
                        "type": "string"
                      },
                      "vercelProjectId": {
                        "type": "string"
                      },
                      "vercelTeamId": {
                        "type": "string"
                      },
                      "vercelApiToken": {
                        "type": "string"
                      },
                      "vercelDeployHookUrl": {
                        "type": "string"
                      },
                      "githubWebhookSecret": {
                        "type": "string"
                      },
                      "cloudflareEmail": {
                        "type": "string"
                      },
                      "cloudflareApiKey": {
                        "type": "string"
                      },
                      "cloudflareAccountId": {
                        "type": "string"
                      },
                      "namecheapApiKey": {
                        "type": "string"
                      },
                      "namecheapUsername": {
                        "type": "string"
                      },
                      "namecheapClientIp": {
                        "type": "string"
                      },
                      "stripeWebhookSigningSecret": {
                        "type": "string",
                        "description": "secret for signing the webhook"
                      },
                      "stripePublishableKey": {
                        "type": "string"
                      },
                      "stripeSecret": {
                        "type": "string",
                        "description": "NB: should have a custom input in the `SimplifiedSchemaForm`"
                      },
                      "twilioAccountSid": {
                        "type": "string"
                      },
                      "twilioAuthToken": {
                        "type": "string"
                      },
                      "sendgridApiKey": {
                        "type": "string"
                      },
                      "scrapingbeeToken": {
                        "type": "string",
                        "description": "scrapingbee"
                      },
                      "scrapedoApiToken": {
                        "type": "string"
                      },
                      "serperApiKey": {
                        "type": "string"
                      },
                      "deepgramApiKey": {
                        "type": "string"
                      },
                      "replicateApiToken": {
                        "type": "string"
                      },
                      "playhtUser": {
                        "type": "string",
                        "description": "user id of playht"
                      },
                      "playhtSecret": {
                        "type": "string"
                      },
                      "openAiPassword": {
                        "type": "string"
                      },
                      "openAiEmail": {
                        "type": "string"
                      },
                      "openAiToken": {
                        "type": "string"
                      },
                      "huggingfaceAuthToken": {
                        "type": "string"
                      },
                      "uberduckApiKey": {
                        "type": "string"
                      },
                      "uberduckSecret": {
                        "type": "string"
                      },
                      "bananadevApiKey": {
                        "type": "string"
                      },
                      "bananadevModelKeys": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string"
                        }
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "slug": {
                        "type": "string",
                        "description": "Slug can also be a domain. If this is the case, this persona belongs to an `AiPlugin`."
                      },
                      "name": {
                        "type": "string"
                      },
                      "useOwnCredentials": {
                        "type": "boolean",
                        "description": "If true, this personas person is paying for their own api keys, meaning they don't need to be charged for this"
                      },
                      "email": {
                        "type": "string"
                      },
                      "sendgridFromEmail": {
                        "type": "string"
                      },
                      "twilioWhatsappFromPhoneNumber": {
                        "type": "string",
                        "description": "TODO: rename to twilioPhoneNumber\n\nMust be a phone number that is also a whatsapp sender if you want to use it for this as well"
                      },
                      "twilioMessengerIdentifier": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string",
                        "enum": ["disabled", "alpha", "beta", "production"],
                        "description": "disabled: doesn't show in the list alpha: only shows on the frontpage for team members beta: shows in the frontpage but has a 'beta' flag production: shows"
                      },
                      "purposes": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "purposeDescription": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            }
                          },
                          "required": ["purposeDescription", "slug"],
                          "additionalProperties": false
                        },
                        "description": "What does this persona do? Used for sales funnels"
                      },
                      "transformations": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Persona is someone that uses chat ai pro (web interface)\n\nThey can set up which transformations the message need to undergo when receiving a message"
                      },
                      "reviewAssets": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/BackendAsset"
                        },
                        "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
                      },
                      "exampleAssets": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/BackendAsset"
                        },
                        "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
                      },
                      "description": {
                        "type": "string",
                        "description": "Profile bio (can be multiline)"
                      },
                      "tagline": {
                        "type": "string",
                        "description": "one line description about the bot"
                      },
                      "preferredTextToText": {
                        "type": "string"
                      },
                      "isSubscriptionPlanDisabled": {
                        "type": "boolean",
                        "description": "TODO:\n\nif true, will not generate payment links and will not allow user to subscribe to this one"
                      },
                      "workflowSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Workflows that this persona should showcase"
                      },
                      "workflows": {
                        "type": "array",
                        "items": {}
                      },
                      "default_aiPluginSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "new users that interact with this assistant as a new relation will get these plugins assigned"
                      },
                      "isAiPlugin": {
                        "type": "boolean"
                      },
                      "default_aiPlugins": {
                        "type": "array",
                        "items": {}
                      },
                      "domain": {
                        "type": "string",
                        "description": "Required for root.\n\nShould be the primary domain. Used for email and maybe links from emails, sms, etc."
                      },
                      "contextualPromptSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Contextual prompts that need to be showcased on the personas profile for direct usage"
                      },
                      "contextualPrompts": {
                        "type": "array",
                        "items": {}
                      },
                      "genericVoices": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "object",
                          "properties": {
                            "model": {
                              "type": "string",
                              "enum": ["playht", "local", "uberduck"]
                            },
                            "voiceKey": {
                              "type": "string"
                            }
                          },
                          "required": ["model", "voiceKey"],
                          "additionalProperties": false
                        },
                        "description": "Defaults back to a global generic voices object. Can be set automatically by the AI based on what we know about the person."
                      },
                      "isVoiceRequired": {
                        "type": "boolean",
                        "description": "If true, voice is required and language will thus be enforced to the available ones if this speaker style is selected.\n\nE.g. if the users preferredLanguage is Dutch but he sets the speaker style to eminem, and eminem is only available through voices in english, then the language will be set to english instead."
                      },
                      "style": {
                        "type": "string",
                        "description": "Hardcoded style, used for translation and forming a reply by the LLM.\n\nCannot be overwritten\n\nExamples: Albert Einstein, Eminem, Snoop Dogg, poetic rap, street slang"
                      },
                      "responseModality": {
                        "type": "string",
                        "enum": ["both", "voice", "text"]
                      },
                      "autoReplyPolicy": {
                        "$ref": "#/components/schemas/MessagePolicy",
                        "description": "defaults to \"auto\"\n\n\"disabled\" will disable the reply completely\n\n\"draft\" will add \"draftedResponse\" to \"Relation\", but not send it"
                      },
                      "inherited_personaSlug": {
                        "type": "string",
                        "description": "If this is given, will inherit all existing values from that persona, and overwrite them with the ones this persona has."
                      },
                      "disableVideos": {
                        "type": "boolean"
                      },
                      "payForWhat": {
                        "type": "string",
                        "description": "string to describe what you pay for for 2 euros"
                      },
                      "costPerMessageCredit": {
                        "type": "number",
                        "description": "Defaults to 0.05"
                      },
                      "freeMessagesPerNewUser": {
                        "type": "number"
                      },
                      "customCreditQuantity": {
                        "type": "number",
                        "description": "defaults to 10"
                      },
                      "freeMessagesPerDay": {
                        "type": "number"
                      },
                      "freeMessagesPerNewUserAfterDauLimit": {
                        "type": "number",
                        "description": "free messages per new user after dau limit"
                      },
                      "maximumNewUsersPerDay": {
                        "type": "number",
                        "description": "amount of new users allowed (per day)"
                      },
                      "giftsPerDay": {
                        "type": "number",
                        "description": "amount of gifts to inactive users (per day)"
                      },
                      "giftFreeMessages": {
                        "type": "number",
                        "description": "free messages in a gift"
                      },
                      "dauLimit": {
                        "type": "number",
                        "description": "dau limit (defaults to 100)"
                      },
                      "dauLimitPaid": {
                        "type": "number",
                        "description": "paid dau limit ($5+)"
                      },
                      "dauLimitVip": {
                        "type": "number",
                        "description": "vip dau limit ($50+)"
                      },
                      "minimumCreditPaid": {
                        "type": "number",
                        "description": "minimum credit required to be \"paid\", defaults to 0"
                      },
                      "minimumCreditVip": {
                        "type": "number",
                        "description": "minimum credit required to be \"deluxe\", omitted if not set"
                      },
                      "freeMessagesForReferral": {
                        "type": "number",
                        "description": "reward free messages for referal use"
                      },
                      "freeMessagesForReferralPay": {
                        "type": "number",
                        "description": "reward for referal pay"
                      },
                      "fillerSentences": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "customWelcomeMessage": {
                        "type": "string",
                        "description": "Custom message, instead of \"Nice to meet you $name. Let's get started. To answer your first message\""
                      },
                      "customWelcomeBackMessage": {
                        "type": "string",
                        "description": "Replaces the message that shows you how many credit you have"
                      },
                      "customPaywallMessage": {
                        "type": "string"
                      },
                      "defaultFollow_personSlugs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "mediaCredentialIds": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Id"
                        }
                      },
                      "mediaCredentials": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/MediaCredential"
                        }
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/persona/execute": {
      "put": {
        "tags": ["persona"],
        "summary": "Execute persona",
        "operationId": "generatePersona",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "githubEmail",
                      "githubAccessToken",
                      "githubOrganisation",
                      "useGithubOrganisation",
                      "apiKey2Captcha",
                      "linkedinEmail",
                      "linkedinPassword",
                      "twitterLoginHandle",
                      "twitterPassword",
                      "twitterApiKey",
                      "twitterApiKeySecret",
                      "twitterBearerToken",
                      "twitterAccessToken",
                      "twitterAccessTokenSecret",
                      "twitterOAuth2ClientIdentifier",
                      "twitterOAuth2ClientSecret",
                      "facebookLoginHandle",
                      "facebookPassword",
                      "mediumLoginHandle",
                      "mediumPassword",
                      "redditLoginHandle",
                      "redditPassword",
                      "devtoLoginHandle",
                      "devtoPassword",
                      "slackLoginHandle",
                      "slackPassword",
                      "vercelProjectId",
                      "vercelTeamId",
                      "vercelApiToken",
                      "vercelDeployHookUrl",
                      "githubWebhookSecret",
                      "cloudflareEmail",
                      "cloudflareApiKey",
                      "cloudflareAccountId",
                      "namecheapApiKey",
                      "namecheapUsername",
                      "namecheapClientIp",
                      "stripeWebhookSigningSecret",
                      "stripePublishableKey",
                      "stripeSecret",
                      "twilioAccountSid",
                      "twilioAuthToken",
                      "sendgridApiKey",
                      "scrapingbeeToken",
                      "scrapedoApiToken",
                      "serperApiKey",
                      "deepgramApiKey",
                      "replicateApiToken",
                      "playhtUser",
                      "playhtSecret",
                      "openAiPassword",
                      "openAiEmail",
                      "openAiToken",
                      "huggingfaceAuthToken",
                      "uberduckApiKey",
                      "uberduckSecret",
                      "bananadevApiKey",
                      "bananadevModelKeys",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "slug",
                      "name",
                      "useOwnCredentials",
                      "email",
                      "sendgridFromEmail",
                      "twilioWhatsappFromPhoneNumber",
                      "twilioMessengerIdentifier",
                      "status",
                      "purposes",
                      "transformations",
                      "reviewAssets",
                      "exampleAssets",
                      "description",
                      "tagline",
                      "preferredTextToText",
                      "isSubscriptionPlanDisabled",
                      "workflowSlugs",
                      "workflows",
                      "default_aiPluginSlugs",
                      "isAiPlugin",
                      "default_aiPlugins",
                      "domain",
                      "contextualPromptSlugs",
                      "contextualPrompts",
                      "genericVoices",
                      "isVoiceRequired",
                      "style",
                      "responseModality",
                      "autoReplyPolicy",
                      "inherited_personaSlug",
                      "disableVideos",
                      "payForWhat",
                      "costPerMessageCredit",
                      "freeMessagesPerNewUser",
                      "customCreditQuantity",
                      "freeMessagesPerDay",
                      "freeMessagesPerNewUserAfterDauLimit",
                      "maximumNewUsersPerDay",
                      "giftsPerDay",
                      "giftFreeMessages",
                      "dauLimit",
                      "dauLimitPaid",
                      "dauLimitVip",
                      "minimumCreditPaid",
                      "minimumCreditVip",
                      "freeMessagesForReferral",
                      "freeMessagesForReferralPay",
                      "fillerSentences",
                      "customWelcomeMessage",
                      "customWelcomeBackMessage",
                      "customPaywallMessage",
                      "defaultFollow_personSlugs",
                      "mediaCredentialIds",
                      "mediaCredentials",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persona": {
      "delete": {
        "tags": ["persona"],
        "summary": "Delete persona",
        "operationId": "deletePersona",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-recording-inbox/read": {
      "post": {
        "tags": ["phone-recording-inbox"],
        "summary": "Read phone-recording-inbox",
        "operationId": "readPhoneRecordingInbox",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "createdAt",
                            "keywords",
                            "to",
                            "item",
                            "type",
                            "isAudio",
                            "transcript",
                            "transcriptText",
                            "analysis",
                            "makesSense",
                            "tokenCount",
                            "statements",
                            "sendEmail",
                            "email",
                            "from",
                            "otpCode",
                            "callDurationMinutes",
                            "paymentLink",
                            "isPersonalMessage",
                            "personalMessageCleaned",
                            "personalMessageSubject",
                            "sendPersonalMessage",
                            "isOperatorMentioned",
                            "isVisualRequested",
                            "imagePrompts",
                            "averageWordConfidence",
                            "isHighQuality",
                            "tweetableStatements",
                            "speakerAmount",
                            "hasOtherSpeakers",
                            "hasNoSubscription",
                            "isEmailNotVerified",
                            "wasCallInterrupted",
                            "emailUnverifiedSms"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "createdAt",
                            "keywords",
                            "to",
                            "item",
                            "type",
                            "isAudio",
                            "transcript",
                            "transcriptText",
                            "analysis",
                            "makesSense",
                            "tokenCount",
                            "statements",
                            "sendEmail",
                            "email",
                            "from",
                            "otpCode",
                            "callDurationMinutes",
                            "paymentLink",
                            "isPersonalMessage",
                            "personalMessageCleaned",
                            "personalMessageSubject",
                            "sendPersonalMessage",
                            "isOperatorMentioned",
                            "isVisualRequested",
                            "imagePrompts",
                            "averageWordConfidence",
                            "isHighQuality",
                            "tweetableStatements",
                            "speakerAmount",
                            "hasOtherSpeakers",
                            "hasNoSubscription",
                            "isEmailNotVerified",
                            "wasCallInterrupted",
                            "emailUnverifiedSms"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "createdAt",
                        "keywords",
                        "to",
                        "item",
                        "type",
                        "isAudio",
                        "transcript",
                        "transcriptText",
                        "analysis",
                        "makesSense",
                        "tokenCount",
                        "statements",
                        "sendEmail",
                        "email",
                        "from",
                        "otpCode",
                        "callDurationMinutes",
                        "paymentLink",
                        "isPersonalMessage",
                        "personalMessageCleaned",
                        "personalMessageSubject",
                        "sendPersonalMessage",
                        "isOperatorMentioned",
                        "isVisualRequested",
                        "imagePrompts",
                        "averageWordConfidence",
                        "isHighQuality",
                        "tweetableStatements",
                        "speakerAmount",
                        "hasOtherSpeakers",
                        "hasNoSubscription",
                        "isEmailNotVerified",
                        "wasCallInterrupted",
                        "emailUnverifiedSms"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "createdAt",
                        "keywords",
                        "to",
                        "item",
                        "type",
                        "isAudio",
                        "transcript",
                        "transcriptText",
                        "analysis",
                        "makesSense",
                        "tokenCount",
                        "statements",
                        "sendEmail",
                        "email",
                        "from",
                        "otpCode",
                        "callDurationMinutes",
                        "paymentLink",
                        "isPersonalMessage",
                        "personalMessageCleaned",
                        "personalMessageSubject",
                        "sendPersonalMessage",
                        "isOperatorMentioned",
                        "isVisualRequested",
                        "imagePrompts",
                        "averageWordConfidence",
                        "isHighQuality",
                        "tweetableStatements",
                        "speakerAmount",
                        "hasOtherSpeakers",
                        "hasNoSubscription",
                        "isEmailNotVerified",
                        "wasCallInterrupted",
                        "emailUnverifiedSms"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string",
                                "description": "Id",
                                "creationPlugins": []
                              },
                              "createdAt": {
                                "type": "string"
                              },
                              "keywords": {
                                "type": "string",
                                "description": "keywords that need to be detected if present",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "llm.calculateTokenCountPlugin",
                                      "method": "POST",
                                      "path": "/function/llm.calculateTokenCountPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {},
                                    "outputLocation": "result",
                                    "propertyDependencies": []
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "to": {
                                "type": "string",
                                "description": "to",
                                "visibility": "auto"
                              },
                              "item": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "description": "type",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "getTypeFromUrlOrPathPlugin",
                                      "method": "POST",
                                      "path": "/function/getTypeFromUrlOrPathPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "urlOrPath": "${item}"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["item"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "isAudio": {
                                "type": "string",
                                "description": "check if the value is of type audio",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "simpleCondition",
                                      "method": "POST",
                                      "path": "/function/simpleCondition",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "value": "${item}",
                                      "operator": "Starts with",
                                      "compare": "https://api.twilio.com"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["item"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "transcript": {
                                "type": "string",
                                "description": "transcript",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "getDeepgramTranscript",
                                      "method": "POST",
                                      "path": "/function/getDeepgramTranscript",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "audioUrl": "${item}",
                                      "keywords": "${keywords}"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["keywords", "item"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "transcriptText": {
                                "type": "string",
                                "description": "transcriptText",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "getKeyFromObjectPlugin",
                                      "method": "POST",
                                      "path": "/function/getKeyFromObjectPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "objectString": "${transcript}",
                                      "location": "paragraphs.transcript"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["transcript"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "analysis": {
                                "type": "string",
                                "description": "analysis",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this transcript:\n------\n\n${transcriptText}\n\n-----\n\nPlease respond with a summary and a suitable title, subtitle, keywords and names of people and companies.\n\n",
                                      "jsonFormat": "{ \"summary\": string, \"title\": string, \"subtitle\": string, \"keywords\": string, \"namedPeopleAndCompanies\": string[] }",
                                      "model": "chatgpt-16k"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "makesSense": {
                                "type": "string",
                                "description": "makesSense",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this transcript:\n\n-----\n\n${transcriptText}\n\n----\n\n\nIn some cases the language is interpreted wrongly, resulting in a complete nonsensical transcript (e.g. it writes English if the speaker spoke Dutch) \n\nDoes this transcript make sense, as in, do the words form coherent sentences?\n\nExample of a transcript that makes sense:  \"ga nu verder met mijn verhaal wat ik natuurlijk moet verkopen wat ik natuurlijk aan de man wil brengen is niet alleen het pijn telefoonnummer het is de experience het is het gevoel gevoel van vrijheid gevoel om des nachts je bent uit te gaan en de nachtwoning maakt omdat je gewoon niet omdat je niet kan slapen\"",
                                      "jsonFormat": "{ \"makesSense\": boolean }",
                                      "model": "chatgpt-16k"
                                    },
                                    "outputLocation": "result.makesSense",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "tokenCount": {
                                "type": "string",
                                "description": "tokenCount",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "calculateTokenCountPlugin",
                                      "method": "POST",
                                      "path": "/function/calculateTokenCountPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "text": "${transcriptText}"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "statements": {
                                "type": "string",
                                "description": "statements",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this transcript:\n----------\n\n${transcriptText}\n\n-----------\n\nPlease summarise the transcript. Then, please extract core beliefs and opinions that were made (if any). Ensure to provide a broad context for each item in your bullet list.",
                                      "jsonFormat": "{ \"shortSummary\": string, \"coreBeliefsAndOpinions\": string }",
                                      "model": "chatgpt-16k"
                                    },
                                    "outputLocation": "result.coreBeliefsAndOpinions",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "sendEmail": {
                                "type": "string",
                                "description": "sendEmail",
                                "visibility": "auto"
                              },
                              "email": {
                                "type": "string",
                                "description": "email",
                                "visibility": "auto"
                              },
                              "from": {
                                "type": "string",
                                "description": "from",
                                "visibility": "auto"
                              },
                              "otpCode": {
                                "type": "string",
                                "description": "otpClode",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "util",
                                      "method": "POST",
                                      "path": "/function/util",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {},
                                    "outputLocation": "result",
                                    "propertyDependencies": []
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "callDurationMinutes": {
                                "type": "string",
                                "description": "callDurationMinutes",
                                "visibility": "auto"
                              },
                              "paymentLink": {
                                "type": "string",
                                "description": "paymentLink",
                                "visibility": "auto"
                              },
                              "isPersonalMessage": {
                                "type": "string",
                                "description": "True if this is a personal message",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "${isAudio}",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this transcript: \n----\n\n${transcriptText}\n\n----\n\nIs this transcript likely to be directed to another person or company? It's likely the case if it includes words like 'You', 'we' or names of people.",
                                      "jsonFormat": "{ \"isPersonalMessage\": boolean }",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result.isPersonalMessage",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "personalMessageCleaned": {
                                "type": "string",
                                "description": "personalMessageCleaned",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "chatGptPlugin",
                                      "method": "POST",
                                      "path": "/function/chatGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "${isPersonalMessage}Consider this transcript which is deemed to be a personal message to someone:\n\n----\n\n${transcriptText}\n\n----\n\nPlease turn it into a personal authentic message. \n\n- Do not change any wording, except if it's unusual for written text.\n- Ensure to fix spelling mistakes or word-errors (e.g. names and companies are often misheard)\n- Ensure to omit misspeaking that were self-corrected, and make them more concise\n- Ensure the email is in the same language as the transcript!",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": [
                                      "transcriptText",
                                      "isPersonalMessage"
                                    ]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "personalMessageSubject": {
                                "type": "string",
                                "description": "personalMessageSubject",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this mail draft:\n\n---\n\n${personalMessageCleaned}\n\n---\n\nWhat's the subject?",
                                      "jsonFormat": "{\"subject\":string}",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result.subject",
                                    "propertyDependencies": [
                                      "personalMessageCleaned"
                                    ]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "sendPersonalMessage": {
                                "type": "string",
                                "description": "sendPersonalMessage",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "sendMailPlugin",
                                      "method": "POST",
                                      "path": "/function/sendMailPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "${isPersonalMessage}",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "to": "${email}",
                                      "subject": "${personalMessageSubject}",
                                      "textDescription": "${personalMessageCleaned}\n\nDisclaimer: This message was recorded with https://screenless.org and may contain some transcription errors."
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": [
                                      "email",
                                      "personalMessageCleaned",
                                      "personalMessageSubject"
                                    ]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "isOperatorMentioned": {
                                "type": "string",
                                "description": "isOperatorMentioned",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this transcript:\n\n------\n\n${transcriptText}\n\n------\n\nHas the transcript mentioned the term \"Operator\" or \"Screenless\"?",
                                      "jsonFormat": "{ \"isOperatorMentioned\": boolean }",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result.isOperatorMentioned",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "isVisualRequested": {
                                "type": "string",
                                "description": "isVisualRequested",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nDid the speaker(s) request any visualisations?",
                                      "jsonFormat": "{ \"isVisualRequested\": boolean }",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result.isVisualRequested",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "imagePrompts": {
                                "type": "string",
                                "description": "imagePrompts",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "${isVisualRequested}",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "${isVisualRequested}\n\nConsider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nPlease list the requested visuals requested by the user. Ensure each item in the list is self-descriptive and standalone. Ensure each item in the list clearly defines what needs to be visualised in a unambiguous detailed way.",
                                      "jsonFormat": "{ \"imagePrompts\": string[] }",
                                      "model": "gpt-4-1106-preview"
                                    },
                                    "outputLocation": "result.imagePrompts",
                                    "propertyDependencies": [
                                      "transcriptText",
                                      "isVisualRequested"
                                    ]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "averageWordConfidence": {
                                "type": "string",
                                "description": "averageWordConfidence",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "getKeyFromObjectPlugin",
                                      "method": "POST",
                                      "path": "/function/getKeyFromObjectPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "objectString": "${transcript}",
                                      "location": "averageWordConfidence"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["transcript"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "isHighQuality": {
                                "type": "string",
                                "description": "isHighQuality",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "simpleCondition",
                                      "method": "POST",
                                      "path": "/function/simpleCondition",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "value": "${averageWordConfidence}",
                                      "operator": "More than",
                                      "compare": "0.7"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": [
                                      "averageWordConfidence"
                                    ]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "tweetableStatements": {
                                "type": "string",
                                "description": "tweetableStatements",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "jsonGptPlugin",
                                      "method": "POST",
                                      "path": "/function/jsonGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "description": "Consider this transcript:\n-------\n${transcriptText}\n-------\n\nAre there any statements in there that are tweetable?\n\nStatements are tweetable if:\n- The statement is understandable by a broad audience independent of the rest of the transcript\n- The statement conveys something interesting like news, opinion, fact, or question\n\n",
                                      "jsonFormat": "{ \"tweetableStatements\": string[] }",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result.tweetableStatements",
                                    "propertyDependencies": ["transcriptText"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "speakerAmount": {
                                "type": "string",
                                "description": "speakerAmount",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "getKeyFromObjectPlugin",
                                      "method": "POST",
                                      "path": "/function/getKeyFromObjectPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "objectString": "${transcript}",
                                      "location": "speakerAmount"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["transcript"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "hasOtherSpeakers": {
                                "type": "string",
                                "description": "hasOtherSpeakers",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "simpleCondition",
                                      "method": "POST",
                                      "path": "/function/simpleCondition",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {
                                      "value": "${speakerAmount}",
                                      "operator": "More than",
                                      "compare": "1"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["speakerAmount"]
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "hasNoSubscription": {
                                "type": "string",
                                "description": "hasNoSubscription",
                                "visibility": "auto"
                              },
                              "isEmailNotVerified": {
                                "type": "string",
                                "description": "isEmailNotVerified",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "util.simpleCondition",
                                      "method": "POST",
                                      "path": "/function/util.simpleCondition",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {},
                                    "outputLocation": "result",
                                    "propertyDependencies": []
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "wasCallInterrupted": {
                                "type": "string",
                                "description": "wasCallInterrupted",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "llm: simpleCondition",
                                      "method": "POST",
                                      "path": "/function/llm: simpleCondition",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "isVerticalExpandEnabled": false,
                                    "type": "creation",
                                    "context": {},
                                    "outputLocation": "result",
                                    "propertyDependencies": []
                                  }
                                ],
                                "visibility": "auto"
                              },
                              "emailUnverifiedSms": {
                                "type": "string",
                                "description": "emailUnverifiedSms",
                                "visibility": "auto"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-recording-inbox/create": {
      "post": {
        "tags": ["phone-recording-inbox"],
        "summary": "Create phone-recording-inbox",
        "operationId": "createPhoneRecordingInbox",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string",
                          "description": "Id",
                          "creationPlugins": []
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "keywords": {
                          "type": "string",
                          "description": "keywords that need to be detected if present",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "llm.calculateTokenCountPlugin",
                                "method": "POST",
                                "path": "/function/llm.calculateTokenCountPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {},
                              "outputLocation": "result",
                              "propertyDependencies": []
                            }
                          ],
                          "visibility": "auto"
                        },
                        "to": {
                          "type": "string",
                          "description": "to",
                          "visibility": "auto"
                        },
                        "item": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "description": "type",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "getTypeFromUrlOrPathPlugin",
                                "method": "POST",
                                "path": "/function/getTypeFromUrlOrPathPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "urlOrPath": "${item}"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["item"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "isAudio": {
                          "type": "string",
                          "description": "check if the value is of type audio",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "simpleCondition",
                                "method": "POST",
                                "path": "/function/simpleCondition",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "value": "${item}",
                                "operator": "Starts with",
                                "compare": "https://api.twilio.com"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["item"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "transcript": {
                          "type": "string",
                          "description": "transcript",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "getDeepgramTranscript",
                                "method": "POST",
                                "path": "/function/getDeepgramTranscript",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "audioUrl": "${item}",
                                "keywords": "${keywords}"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["keywords", "item"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "transcriptText": {
                          "type": "string",
                          "description": "transcriptText",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "getKeyFromObjectPlugin",
                                "method": "POST",
                                "path": "/function/getKeyFromObjectPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "objectString": "${transcript}",
                                "location": "paragraphs.transcript"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["transcript"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "analysis": {
                          "type": "string",
                          "description": "analysis",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "Consider this transcript:\n------\n\n${transcriptText}\n\n-----\n\nPlease respond with a summary and a suitable title, subtitle, keywords and names of people and companies.\n\n",
                                "jsonFormat": "{ \"summary\": string, \"title\": string, \"subtitle\": string, \"keywords\": string, \"namedPeopleAndCompanies\": string[] }",
                                "model": "chatgpt-16k"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "makesSense": {
                          "type": "string",
                          "description": "makesSense",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "Consider this transcript:\n\n-----\n\n${transcriptText}\n\n----\n\n\nIn some cases the language is interpreted wrongly, resulting in a complete nonsensical transcript (e.g. it writes English if the speaker spoke Dutch) \n\nDoes this transcript make sense, as in, do the words form coherent sentences?\n\nExample of a transcript that makes sense:  \"ga nu verder met mijn verhaal wat ik natuurlijk moet verkopen wat ik natuurlijk aan de man wil brengen is niet alleen het pijn telefoonnummer het is de experience het is het gevoel gevoel van vrijheid gevoel om des nachts je bent uit te gaan en de nachtwoning maakt omdat je gewoon niet omdat je niet kan slapen\"",
                                "jsonFormat": "{ \"makesSense\": boolean }",
                                "model": "chatgpt-16k"
                              },
                              "outputLocation": "result.makesSense",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "tokenCount": {
                          "type": "string",
                          "description": "tokenCount",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "calculateTokenCountPlugin",
                                "method": "POST",
                                "path": "/function/calculateTokenCountPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "text": "${transcriptText}"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "statements": {
                          "type": "string",
                          "description": "statements",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "type": "creation",
                              "context": {
                                "description": "Consider this transcript:\n----------\n\n${transcriptText}\n\n-----------\n\nPlease summarise the transcript. Then, please extract core beliefs and opinions that were made (if any). Ensure to provide a broad context for each item in your bullet list.",
                                "jsonFormat": "{ \"shortSummary\": string, \"coreBeliefsAndOpinions\": string }",
                                "model": "chatgpt-16k"
                              },
                              "outputLocation": "result.coreBeliefsAndOpinions",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "sendEmail": {
                          "type": "string",
                          "description": "sendEmail",
                          "visibility": "auto"
                        },
                        "email": {
                          "type": "string",
                          "description": "email",
                          "visibility": "auto"
                        },
                        "from": {
                          "type": "string",
                          "description": "from",
                          "visibility": "auto"
                        },
                        "otpCode": {
                          "type": "string",
                          "description": "otpClode",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "util",
                                "method": "POST",
                                "path": "/function/util",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {},
                              "outputLocation": "result",
                              "propertyDependencies": []
                            }
                          ],
                          "visibility": "auto"
                        },
                        "callDurationMinutes": {
                          "type": "string",
                          "description": "callDurationMinutes",
                          "visibility": "auto"
                        },
                        "paymentLink": {
                          "type": "string",
                          "description": "paymentLink",
                          "visibility": "auto"
                        },
                        "isPersonalMessage": {
                          "type": "string",
                          "description": "True if this is a personal message",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "${isAudio}",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "Consider this transcript: \n----\n\n${transcriptText}\n\n----\n\nIs this transcript likely to be directed to another person or company? It's likely the case if it includes words like 'You', 'we' or names of people.",
                                "jsonFormat": "{ \"isPersonalMessage\": boolean }",
                                "model": "auto"
                              },
                              "outputLocation": "result.isPersonalMessage",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "personalMessageCleaned": {
                          "type": "string",
                          "description": "personalMessageCleaned",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "chatGptPlugin",
                                "method": "POST",
                                "path": "/function/chatGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "${isPersonalMessage}Consider this transcript which is deemed to be a personal message to someone:\n\n----\n\n${transcriptText}\n\n----\n\nPlease turn it into a personal authentic message. \n\n- Do not change any wording, except if it's unusual for written text.\n- Ensure to fix spelling mistakes or word-errors (e.g. names and companies are often misheard)\n- Ensure to omit misspeaking that were self-corrected, and make them more concise\n- Ensure the email is in the same language as the transcript!",
                                "model": "auto"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": [
                                "transcriptText",
                                "isPersonalMessage"
                              ]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "personalMessageSubject": {
                          "type": "string",
                          "description": "personalMessageSubject",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "Consider this mail draft:\n\n---\n\n${personalMessageCleaned}\n\n---\n\nWhat's the subject?",
                                "jsonFormat": "{\"subject\":string}",
                                "model": "auto"
                              },
                              "outputLocation": "result.subject",
                              "propertyDependencies": ["personalMessageCleaned"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "sendPersonalMessage": {
                          "type": "string",
                          "description": "sendPersonalMessage",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "sendMailPlugin",
                                "method": "POST",
                                "path": "/function/sendMailPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "${isPersonalMessage}",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "to": "${email}",
                                "subject": "${personalMessageSubject}",
                                "textDescription": "${personalMessageCleaned}\n\nDisclaimer: This message was recorded with https://screenless.org and may contain some transcription errors."
                              },
                              "outputLocation": "result",
                              "propertyDependencies": [
                                "email",
                                "personalMessageCleaned",
                                "personalMessageSubject"
                              ]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "isOperatorMentioned": {
                          "type": "string",
                          "description": "isOperatorMentioned",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "Consider this transcript:\n\n------\n\n${transcriptText}\n\n------\n\nHas the transcript mentioned the term \"Operator\" or \"Screenless\"?",
                                "jsonFormat": "{ \"isOperatorMentioned\": boolean }",
                                "model": "auto"
                              },
                              "outputLocation": "result.isOperatorMentioned",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "isVisualRequested": {
                          "type": "string",
                          "description": "isVisualRequested",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "Consider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nDid the speaker(s) request any visualisations?",
                                "jsonFormat": "{ \"isVisualRequested\": boolean }",
                                "model": "auto"
                              },
                              "outputLocation": "result.isVisualRequested",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "imagePrompts": {
                          "type": "string",
                          "description": "imagePrompts",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "${isVisualRequested}",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "${isVisualRequested}\n\nConsider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nPlease list the requested visuals requested by the user. Ensure each item in the list is self-descriptive and standalone. Ensure each item in the list clearly defines what needs to be visualised in a unambiguous detailed way.",
                                "jsonFormat": "{ \"imagePrompts\": string[] }",
                                "model": "gpt-4-1106-preview"
                              },
                              "outputLocation": "result.imagePrompts",
                              "propertyDependencies": [
                                "transcriptText",
                                "isVisualRequested"
                              ]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "averageWordConfidence": {
                          "type": "string",
                          "description": "averageWordConfidence",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "getKeyFromObjectPlugin",
                                "method": "POST",
                                "path": "/function/getKeyFromObjectPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "objectString": "${transcript}",
                                "location": "averageWordConfidence"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["transcript"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "isHighQuality": {
                          "type": "string",
                          "description": "isHighQuality",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "simpleCondition",
                                "method": "POST",
                                "path": "/function/simpleCondition",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "value": "${averageWordConfidence}",
                                "operator": "More than",
                                "compare": "0.7"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["averageWordConfidence"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "tweetableStatements": {
                          "type": "string",
                          "description": "tweetableStatements",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "jsonGptPlugin",
                                "method": "POST",
                                "path": "/function/jsonGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "description": "Consider this transcript:\n-------\n${transcriptText}\n-------\n\nAre there any statements in there that are tweetable?\n\nStatements are tweetable if:\n- The statement is understandable by a broad audience independent of the rest of the transcript\n- The statement conveys something interesting like news, opinion, fact, or question\n\n",
                                "jsonFormat": "{ \"tweetableStatements\": string[] }",
                                "model": "auto"
                              },
                              "outputLocation": "result.tweetableStatements",
                              "propertyDependencies": ["transcriptText"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "speakerAmount": {
                          "type": "string",
                          "description": "speakerAmount",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "getKeyFromObjectPlugin",
                                "method": "POST",
                                "path": "/function/getKeyFromObjectPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "objectString": "${transcript}",
                                "location": "speakerAmount"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["transcript"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "hasOtherSpeakers": {
                          "type": "string",
                          "description": "hasOtherSpeakers",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "simpleCondition",
                                "method": "POST",
                                "path": "/function/simpleCondition",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {
                                "value": "${speakerAmount}",
                                "operator": "More than",
                                "compare": "1"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["speakerAmount"]
                            }
                          ],
                          "visibility": "auto"
                        },
                        "hasNoSubscription": {
                          "type": "string",
                          "description": "hasNoSubscription",
                          "visibility": "auto"
                        },
                        "isEmailNotVerified": {
                          "type": "string",
                          "description": "isEmailNotVerified",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "util.simpleCondition",
                                "method": "POST",
                                "path": "/function/util.simpleCondition",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {},
                              "outputLocation": "result",
                              "propertyDependencies": []
                            }
                          ],
                          "visibility": "auto"
                        },
                        "wasCallInterrupted": {
                          "type": "string",
                          "description": "wasCallInterrupted",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "llm: simpleCondition",
                                "method": "POST",
                                "path": "/function/llm: simpleCondition",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "isVerticalExpandEnabled": false,
                              "type": "creation",
                              "context": {},
                              "outputLocation": "result",
                              "propertyDependencies": []
                            }
                          ],
                          "visibility": "auto"
                        },
                        "emailUnverifiedSms": {
                          "type": "string",
                          "description": "emailUnverifiedSms",
                          "visibility": "auto"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-recording-inbox/update": {
      "post": {
        "tags": ["phone-recording-inbox"],
        "summary": "Update phone-recording-inbox",
        "operationId": "updatePhoneRecordingInbox",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string",
                        "description": "Id",
                        "creationPlugins": []
                      },
                      "createdAt": {
                        "type": "string"
                      },
                      "keywords": {
                        "type": "string",
                        "description": "keywords that need to be detected if present",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "llm.calculateTokenCountPlugin",
                              "method": "POST",
                              "path": "/function/llm.calculateTokenCountPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {},
                            "outputLocation": "result",
                            "propertyDependencies": []
                          }
                        ],
                        "visibility": "auto"
                      },
                      "to": {
                        "type": "string",
                        "description": "to",
                        "visibility": "auto"
                      },
                      "item": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string",
                        "description": "type",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "getTypeFromUrlOrPathPlugin",
                              "method": "POST",
                              "path": "/function/getTypeFromUrlOrPathPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "urlOrPath": "${item}"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["item"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "isAudio": {
                        "type": "string",
                        "description": "check if the value is of type audio",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "simpleCondition",
                              "method": "POST",
                              "path": "/function/simpleCondition",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "value": "${item}",
                              "operator": "Starts with",
                              "compare": "https://api.twilio.com"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["item"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "transcript": {
                        "type": "string",
                        "description": "transcript",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "getDeepgramTranscript",
                              "method": "POST",
                              "path": "/function/getDeepgramTranscript",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "audioUrl": "${item}",
                              "keywords": "${keywords}"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["keywords", "item"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "transcriptText": {
                        "type": "string",
                        "description": "transcriptText",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "getKeyFromObjectPlugin",
                              "method": "POST",
                              "path": "/function/getKeyFromObjectPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "objectString": "${transcript}",
                              "location": "paragraphs.transcript"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["transcript"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "analysis": {
                        "type": "string",
                        "description": "analysis",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "Consider this transcript:\n------\n\n${transcriptText}\n\n-----\n\nPlease respond with a summary and a suitable title, subtitle, keywords and names of people and companies.\n\n",
                              "jsonFormat": "{ \"summary\": string, \"title\": string, \"subtitle\": string, \"keywords\": string, \"namedPeopleAndCompanies\": string[] }",
                              "model": "chatgpt-16k"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "makesSense": {
                        "type": "string",
                        "description": "makesSense",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "Consider this transcript:\n\n-----\n\n${transcriptText}\n\n----\n\n\nIn some cases the language is interpreted wrongly, resulting in a complete nonsensical transcript (e.g. it writes English if the speaker spoke Dutch) \n\nDoes this transcript make sense, as in, do the words form coherent sentences?\n\nExample of a transcript that makes sense:  \"ga nu verder met mijn verhaal wat ik natuurlijk moet verkopen wat ik natuurlijk aan de man wil brengen is niet alleen het pijn telefoonnummer het is de experience het is het gevoel gevoel van vrijheid gevoel om des nachts je bent uit te gaan en de nachtwoning maakt omdat je gewoon niet omdat je niet kan slapen\"",
                              "jsonFormat": "{ \"makesSense\": boolean }",
                              "model": "chatgpt-16k"
                            },
                            "outputLocation": "result.makesSense",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "tokenCount": {
                        "type": "string",
                        "description": "tokenCount",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "calculateTokenCountPlugin",
                              "method": "POST",
                              "path": "/function/calculateTokenCountPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "text": "${transcriptText}"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "statements": {
                        "type": "string",
                        "description": "statements",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "type": "creation",
                            "context": {
                              "description": "Consider this transcript:\n----------\n\n${transcriptText}\n\n-----------\n\nPlease summarise the transcript. Then, please extract core beliefs and opinions that were made (if any). Ensure to provide a broad context for each item in your bullet list.",
                              "jsonFormat": "{ \"shortSummary\": string, \"coreBeliefsAndOpinions\": string }",
                              "model": "chatgpt-16k"
                            },
                            "outputLocation": "result.coreBeliefsAndOpinions",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "sendEmail": {
                        "type": "string",
                        "description": "sendEmail",
                        "visibility": "auto"
                      },
                      "email": {
                        "type": "string",
                        "description": "email",
                        "visibility": "auto"
                      },
                      "from": {
                        "type": "string",
                        "description": "from",
                        "visibility": "auto"
                      },
                      "otpCode": {
                        "type": "string",
                        "description": "otpClode",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "util",
                              "method": "POST",
                              "path": "/function/util",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {},
                            "outputLocation": "result",
                            "propertyDependencies": []
                          }
                        ],
                        "visibility": "auto"
                      },
                      "callDurationMinutes": {
                        "type": "string",
                        "description": "callDurationMinutes",
                        "visibility": "auto"
                      },
                      "paymentLink": {
                        "type": "string",
                        "description": "paymentLink",
                        "visibility": "auto"
                      },
                      "isPersonalMessage": {
                        "type": "string",
                        "description": "True if this is a personal message",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "${isAudio}",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "Consider this transcript: \n----\n\n${transcriptText}\n\n----\n\nIs this transcript likely to be directed to another person or company? It's likely the case if it includes words like 'You', 'we' or names of people.",
                              "jsonFormat": "{ \"isPersonalMessage\": boolean }",
                              "model": "auto"
                            },
                            "outputLocation": "result.isPersonalMessage",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "personalMessageCleaned": {
                        "type": "string",
                        "description": "personalMessageCleaned",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "chatGptPlugin",
                              "method": "POST",
                              "path": "/function/chatGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "${isPersonalMessage}Consider this transcript which is deemed to be a personal message to someone:\n\n----\n\n${transcriptText}\n\n----\n\nPlease turn it into a personal authentic message. \n\n- Do not change any wording, except if it's unusual for written text.\n- Ensure to fix spelling mistakes or word-errors (e.g. names and companies are often misheard)\n- Ensure to omit misspeaking that were self-corrected, and make them more concise\n- Ensure the email is in the same language as the transcript!",
                              "model": "auto"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": [
                              "transcriptText",
                              "isPersonalMessage"
                            ]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "personalMessageSubject": {
                        "type": "string",
                        "description": "personalMessageSubject",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "Consider this mail draft:\n\n---\n\n${personalMessageCleaned}\n\n---\n\nWhat's the subject?",
                              "jsonFormat": "{\"subject\":string}",
                              "model": "auto"
                            },
                            "outputLocation": "result.subject",
                            "propertyDependencies": ["personalMessageCleaned"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "sendPersonalMessage": {
                        "type": "string",
                        "description": "sendPersonalMessage",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "sendMailPlugin",
                              "method": "POST",
                              "path": "/function/sendMailPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "${isPersonalMessage}",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "to": "${email}",
                              "subject": "${personalMessageSubject}",
                              "textDescription": "${personalMessageCleaned}\n\nDisclaimer: This message was recorded with https://screenless.org and may contain some transcription errors."
                            },
                            "outputLocation": "result",
                            "propertyDependencies": [
                              "email",
                              "personalMessageCleaned",
                              "personalMessageSubject"
                            ]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "isOperatorMentioned": {
                        "type": "string",
                        "description": "isOperatorMentioned",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "Consider this transcript:\n\n------\n\n${transcriptText}\n\n------\n\nHas the transcript mentioned the term \"Operator\" or \"Screenless\"?",
                              "jsonFormat": "{ \"isOperatorMentioned\": boolean }",
                              "model": "auto"
                            },
                            "outputLocation": "result.isOperatorMentioned",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "isVisualRequested": {
                        "type": "string",
                        "description": "isVisualRequested",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "Consider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nDid the speaker(s) request any visualisations?",
                              "jsonFormat": "{ \"isVisualRequested\": boolean }",
                              "model": "auto"
                            },
                            "outputLocation": "result.isVisualRequested",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "imagePrompts": {
                        "type": "string",
                        "description": "imagePrompts",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "${isVisualRequested}",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "${isVisualRequested}\n\nConsider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nPlease list the requested visuals requested by the user. Ensure each item in the list is self-descriptive and standalone. Ensure each item in the list clearly defines what needs to be visualised in a unambiguous detailed way.",
                              "jsonFormat": "{ \"imagePrompts\": string[] }",
                              "model": "gpt-4-1106-preview"
                            },
                            "outputLocation": "result.imagePrompts",
                            "propertyDependencies": [
                              "transcriptText",
                              "isVisualRequested"
                            ]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "averageWordConfidence": {
                        "type": "string",
                        "description": "averageWordConfidence",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "getKeyFromObjectPlugin",
                              "method": "POST",
                              "path": "/function/getKeyFromObjectPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "objectString": "${transcript}",
                              "location": "averageWordConfidence"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["transcript"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "isHighQuality": {
                        "type": "string",
                        "description": "isHighQuality",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "simpleCondition",
                              "method": "POST",
                              "path": "/function/simpleCondition",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "value": "${averageWordConfidence}",
                              "operator": "More than",
                              "compare": "0.7"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["averageWordConfidence"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "tweetableStatements": {
                        "type": "string",
                        "description": "tweetableStatements",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "jsonGptPlugin",
                              "method": "POST",
                              "path": "/function/jsonGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "description": "Consider this transcript:\n-------\n${transcriptText}\n-------\n\nAre there any statements in there that are tweetable?\n\nStatements are tweetable if:\n- The statement is understandable by a broad audience independent of the rest of the transcript\n- The statement conveys something interesting like news, opinion, fact, or question\n\n",
                              "jsonFormat": "{ \"tweetableStatements\": string[] }",
                              "model": "auto"
                            },
                            "outputLocation": "result.tweetableStatements",
                            "propertyDependencies": ["transcriptText"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "speakerAmount": {
                        "type": "string",
                        "description": "speakerAmount",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "getKeyFromObjectPlugin",
                              "method": "POST",
                              "path": "/function/getKeyFromObjectPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "objectString": "${transcript}",
                              "location": "speakerAmount"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["transcript"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "hasOtherSpeakers": {
                        "type": "string",
                        "description": "hasOtherSpeakers",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "simpleCondition",
                              "method": "POST",
                              "path": "/function/simpleCondition",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {
                              "value": "${speakerAmount}",
                              "operator": "More than",
                              "compare": "1"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["speakerAmount"]
                          }
                        ],
                        "visibility": "auto"
                      },
                      "hasNoSubscription": {
                        "type": "string",
                        "description": "hasNoSubscription",
                        "visibility": "auto"
                      },
                      "isEmailNotVerified": {
                        "type": "string",
                        "description": "isEmailNotVerified",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "util.simpleCondition",
                              "method": "POST",
                              "path": "/function/util.simpleCondition",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {},
                            "outputLocation": "result",
                            "propertyDependencies": []
                          }
                        ],
                        "visibility": "auto"
                      },
                      "wasCallInterrupted": {
                        "type": "string",
                        "description": "wasCallInterrupted",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "llm: simpleCondition",
                              "method": "POST",
                              "path": "/function/llm: simpleCondition",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "isVerticalExpandEnabled": false,
                            "type": "creation",
                            "context": {},
                            "outputLocation": "result",
                            "propertyDependencies": []
                          }
                        ],
                        "visibility": "auto"
                      },
                      "emailUnverifiedSms": {
                        "type": "string",
                        "description": "emailUnverifiedSms",
                        "visibility": "auto"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-recording-inbox/execute": {
      "put": {
        "tags": ["phone-recording-inbox"],
        "summary": "Execute phone-recording-inbox",
        "operationId": "generatePhoneRecordingInbox",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "__id",
                      "createdAt",
                      "keywords",
                      "to",
                      "item",
                      "type",
                      "isAudio",
                      "transcript",
                      "transcriptText",
                      "analysis",
                      "makesSense",
                      "tokenCount",
                      "statements",
                      "sendEmail",
                      "email",
                      "from",
                      "otpCode",
                      "callDurationMinutes",
                      "paymentLink",
                      "isPersonalMessage",
                      "personalMessageCleaned",
                      "personalMessageSubject",
                      "sendPersonalMessage",
                      "isOperatorMentioned",
                      "isVisualRequested",
                      "imagePrompts",
                      "averageWordConfidence",
                      "isHighQuality",
                      "tweetableStatements",
                      "speakerAmount",
                      "hasOtherSpeakers",
                      "hasNoSubscription",
                      "isEmailNotVerified",
                      "wasCallInterrupted",
                      "emailUnverifiedSms"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-recording-inbox": {
      "delete": {
        "tags": ["phone-recording-inbox"],
        "summary": "Delete phone-recording-inbox",
        "operationId": "deletePhoneRecordingInbox",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/queue/read": {
      "post": {
        "tags": ["queue"],
        "summary": "Read queue",
        "operationId": "readQueue",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "createdAt",
                            "owner_personSlug",
                            "functionName",
                            "parameters",
                            "result",
                            "status",
                            "statusMessage",
                            "durationEstimationSeconds",
                            "isUsingFullOpenAiBandwidth",
                            "openAiEmail",
                            "aliveAt",
                            "partitionIndex",
                            "maximumCreditCost",
                            "maximumPartitionAmount",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "id",
                            "createdAt",
                            "owner_personSlug",
                            "functionName",
                            "parameters",
                            "result",
                            "status",
                            "statusMessage",
                            "durationEstimationSeconds",
                            "isUsingFullOpenAiBandwidth",
                            "openAiEmail",
                            "aliveAt",
                            "partitionIndex",
                            "maximumCreditCost",
                            "maximumPartitionAmount",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "createdAt",
                        "owner_personSlug",
                        "functionName",
                        "parameters",
                        "result",
                        "status",
                        "statusMessage",
                        "durationEstimationSeconds",
                        "isUsingFullOpenAiBandwidth",
                        "openAiEmail",
                        "aliveAt",
                        "partitionIndex",
                        "maximumCreditCost",
                        "maximumPartitionAmount",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "id",
                        "createdAt",
                        "owner_personSlug",
                        "functionName",
                        "parameters",
                        "result",
                        "status",
                        "statusMessage",
                        "durationEstimationSeconds",
                        "isUsingFullOpenAiBandwidth",
                        "openAiEmail",
                        "aliveAt",
                        "partitionIndex",
                        "maximumCreditCost",
                        "maximumPartitionAmount",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "id": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "number"
                              },
                              "owner_personSlug": {
                                "type": "string",
                                "description": "Useful to make an overview for active queue items for a logged in person"
                              },
                              "functionName": {
                                "type": "string"
                              },
                              "parameters": {
                                "type": "array",
                                "items": {}
                              },
                              "result": {
                                "description": "JSON result of the function"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "queued",
                                  "paused",
                                  "working",
                                  "canceled",
                                  "finished"
                                ]
                              },
                              "statusMessage": {
                                "type": "string",
                                "description": "Can be set to show the status of the function to the user, for example, with a conversion, a percentage indicator for completeness"
                              },
                              "durationEstimationSeconds": {
                                "type": "number"
                              },
                              "isUsingFullOpenAiBandwidth": {
                                "type": "boolean"
                              },
                              "openAiEmail": {
                                "type": "string"
                              },
                              "aliveAt": {
                                "type": "number",
                                "description": "Timestamp indicating the last time the function said it was still being executed. If this is recent enough, it must be assumed the function is being executed. Can be reset at server startup"
                              },
                              "partitionIndex": {
                                "type": "number",
                                "description": "Which partition are we?\n\nIf this is given, the function should take this and calculate the partitions array based on the input parameters.\n\nIf you want to keep track of this, the queue function should keep track of it by updating it every partition done.\n\nNB: partition functions can also be called \"Checkpoints\""
                              },
                              "maximumCreditCost": {
                                "type": "number",
                                "description": "Will stop once this amount is reached. Useful for keeping a budget. Will count based on"
                              },
                              "maximumPartitionAmount": {
                                "type": "number",
                                "description": "Will stop once this amount of partitions are done. Useful if you know how many parts you want to process at once"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/queue/create": {
      "post": {
        "tags": ["queue"],
        "summary": "Create queue",
        "operationId": "createQueue",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "id": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "number"
                        },
                        "owner_personSlug": {
                          "type": "string",
                          "description": "Useful to make an overview for active queue items for a logged in person"
                        },
                        "functionName": {
                          "type": "string"
                        },
                        "parameters": {
                          "type": "array",
                          "items": {}
                        },
                        "result": {
                          "description": "JSON result of the function"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "queued",
                            "paused",
                            "working",
                            "canceled",
                            "finished"
                          ]
                        },
                        "statusMessage": {
                          "type": "string",
                          "description": "Can be set to show the status of the function to the user, for example, with a conversion, a percentage indicator for completeness"
                        },
                        "durationEstimationSeconds": {
                          "type": "number"
                        },
                        "isUsingFullOpenAiBandwidth": {
                          "type": "boolean"
                        },
                        "openAiEmail": {
                          "type": "string"
                        },
                        "aliveAt": {
                          "type": "number",
                          "description": "Timestamp indicating the last time the function said it was still being executed. If this is recent enough, it must be assumed the function is being executed. Can be reset at server startup"
                        },
                        "partitionIndex": {
                          "type": "number",
                          "description": "Which partition are we?\n\nIf this is given, the function should take this and calculate the partitions array based on the input parameters.\n\nIf you want to keep track of this, the queue function should keep track of it by updating it every partition done.\n\nNB: partition functions can also be called \"Checkpoints\""
                        },
                        "maximumCreditCost": {
                          "type": "number",
                          "description": "Will stop once this amount is reached. Useful for keeping a budget. Will count based on"
                        },
                        "maximumPartitionAmount": {
                          "type": "number",
                          "description": "Will stop once this amount of partitions are done. Useful if you know how many parts you want to process at once"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/queue/update": {
      "post": {
        "tags": ["queue"],
        "summary": "Update queue",
        "operationId": "updateQueue",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "id": {
                        "type": "string"
                      },
                      "createdAt": {
                        "type": "number"
                      },
                      "owner_personSlug": {
                        "type": "string",
                        "description": "Useful to make an overview for active queue items for a logged in person"
                      },
                      "functionName": {
                        "type": "string"
                      },
                      "parameters": {
                        "type": "array",
                        "items": {}
                      },
                      "result": {
                        "description": "JSON result of the function"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "queued",
                          "paused",
                          "working",
                          "canceled",
                          "finished"
                        ]
                      },
                      "statusMessage": {
                        "type": "string",
                        "description": "Can be set to show the status of the function to the user, for example, with a conversion, a percentage indicator for completeness"
                      },
                      "durationEstimationSeconds": {
                        "type": "number"
                      },
                      "isUsingFullOpenAiBandwidth": {
                        "type": "boolean"
                      },
                      "openAiEmail": {
                        "type": "string"
                      },
                      "aliveAt": {
                        "type": "number",
                        "description": "Timestamp indicating the last time the function said it was still being executed. If this is recent enough, it must be assumed the function is being executed. Can be reset at server startup"
                      },
                      "partitionIndex": {
                        "type": "number",
                        "description": "Which partition are we?\n\nIf this is given, the function should take this and calculate the partitions array based on the input parameters.\n\nIf you want to keep track of this, the queue function should keep track of it by updating it every partition done.\n\nNB: partition functions can also be called \"Checkpoints\""
                      },
                      "maximumCreditCost": {
                        "type": "number",
                        "description": "Will stop once this amount is reached. Useful for keeping a budget. Will count based on"
                      },
                      "maximumPartitionAmount": {
                        "type": "number",
                        "description": "Will stop once this amount of partitions are done. Useful if you know how many parts you want to process at once"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/queue/execute": {
      "put": {
        "tags": ["queue"],
        "summary": "Execute queue",
        "operationId": "generateQueue",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "id",
                      "createdAt",
                      "owner_personSlug",
                      "functionName",
                      "parameters",
                      "result",
                      "status",
                      "statusMessage",
                      "durationEstimationSeconds",
                      "isUsingFullOpenAiBandwidth",
                      "openAiEmail",
                      "aliveAt",
                      "partitionIndex",
                      "maximumCreditCost",
                      "maximumPartitionAmount",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/queue": {
      "delete": {
        "tags": ["queue"],
        "summary": "Delete queue",
        "operationId": "deleteQueue",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/referral/read": {
      "post": {
        "tags": ["referral"],
        "summary": "Read referral",
        "operationId": "readReferral",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "name",
                            "slug",
                            "primary_personSlug",
                            "phoneNumber",
                            "description",
                            "whatsappUrlsCalculated",
                            "initialMessages",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "name",
                            "slug",
                            "primary_personSlug",
                            "phoneNumber",
                            "description",
                            "whatsappUrlsCalculated",
                            "initialMessages",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "name",
                        "slug",
                        "primary_personSlug",
                        "phoneNumber",
                        "description",
                        "whatsappUrlsCalculated",
                        "initialMessages",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "name",
                        "slug",
                        "primary_personSlug",
                        "phoneNumber",
                        "description",
                        "whatsappUrlsCalculated",
                        "initialMessages",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "name": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "primary_personSlug": {
                                "type": "string",
                                "description": "which persona is this a referral link for?"
                              },
                              "phoneNumber": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "whatsappUrlsCalculated": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "initialMessages": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/referral/create": {
      "post": {
        "tags": ["referral"],
        "summary": "Create referral",
        "operationId": "createReferral",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "name": {
                          "type": "string"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "primary_personSlug": {
                          "type": "string",
                          "description": "which persona is this a referral link for?"
                        },
                        "phoneNumber": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "whatsappUrlsCalculated": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "initialMessages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/referral/update": {
      "post": {
        "tags": ["referral"],
        "summary": "Update referral",
        "operationId": "updateReferral",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "name": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "primary_personSlug": {
                        "type": "string",
                        "description": "which persona is this a referral link for?"
                      },
                      "phoneNumber": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "whatsappUrlsCalculated": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "initialMessages": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/referral/execute": {
      "put": {
        "tags": ["referral"],
        "summary": "Execute referral",
        "operationId": "generateReferral",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "name",
                      "slug",
                      "primary_personSlug",
                      "phoneNumber",
                      "description",
                      "whatsappUrlsCalculated",
                      "initialMessages",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/referral": {
      "delete": {
        "tags": ["referral"],
        "summary": "Delete referral",
        "operationId": "deleteReferral",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/relation/read": {
      "post": {
        "tags": ["relation"],
        "summary": "Read relation",
        "operationId": "readRelation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "name",
                            "note",
                            "phoneNumber",
                            "email",
                            "whatsappPhoneNumber",
                            "personGoal",
                            "type",
                            "createdAt",
                            "unreadMessagesAmount",
                            "lastReadAt",
                            "lastMessage",
                            "messageAfterTemplateResponse",
                            "lastMessageAt",
                            "lastRelationMessageAt",
                            "relationAdditionalTransformation",
                            "guidedConversationPolicy",
                            "guidedConversationStatus",
                            "draftedResponse",
                            "draftedSubject",
                            "memory",
                            "mainMessagingChannel"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "name",
                            "note",
                            "phoneNumber",
                            "email",
                            "whatsappPhoneNumber",
                            "personGoal",
                            "type",
                            "createdAt",
                            "unreadMessagesAmount",
                            "lastReadAt",
                            "lastMessage",
                            "messageAfterTemplateResponse",
                            "lastMessageAt",
                            "lastRelationMessageAt",
                            "relationAdditionalTransformation",
                            "guidedConversationPolicy",
                            "guidedConversationStatus",
                            "draftedResponse",
                            "draftedSubject",
                            "memory",
                            "mainMessagingChannel"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "name",
                        "note",
                        "phoneNumber",
                        "email",
                        "whatsappPhoneNumber",
                        "personGoal",
                        "type",
                        "createdAt",
                        "unreadMessagesAmount",
                        "lastReadAt",
                        "lastMessage",
                        "messageAfterTemplateResponse",
                        "lastMessageAt",
                        "lastRelationMessageAt",
                        "relationAdditionalTransformation",
                        "guidedConversationPolicy",
                        "guidedConversationStatus",
                        "draftedResponse",
                        "draftedSubject",
                        "memory",
                        "mainMessagingChannel"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "name",
                        "note",
                        "phoneNumber",
                        "email",
                        "whatsappPhoneNumber",
                        "personGoal",
                        "type",
                        "createdAt",
                        "unreadMessagesAmount",
                        "lastReadAt",
                        "lastMessage",
                        "messageAfterTemplateResponse",
                        "lastMessageAt",
                        "lastRelationMessageAt",
                        "relationAdditionalTransformation",
                        "guidedConversationPolicy",
                        "guidedConversationStatus",
                        "draftedResponse",
                        "draftedSubject",
                        "memory",
                        "mainMessagingChannel"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string",
                                "description": "No specific custom identifyer for now"
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of your relation"
                              },
                              "note": {
                                "type": "string",
                                "description": "What you know about your relation (can be filled by an LLM)\n\nUsed as a conversation Summary"
                              },
                              "phoneNumber": {
                                "type": "string",
                                "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
                              },
                              "email": {
                                "type": "string",
                                "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
                              },
                              "whatsappPhoneNumber": {
                                "type": "string",
                                "description": "Phone number for whatsapp. If given, overwrites phoneNumber for whatsapp sending"
                              },
                              "personGoal": {
                                "type": "string",
                                "description": "More specific goals with regard to the person or assistant's functionality and purpose\n\nCan be used as a todolist for a guided conversation"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "Self",
                                  "Person",
                                  "Group",
                                  "File",
                                  "Page",
                                  "Domain",
                                  "CalendarEvent"
                                ],
                                "description": "Defaults to person (which can also be an AI agent, AI plugin, Company, etc.)\n\nThis determines where to get the chat messages from (if at all) and it also determines the UI the user gets when interacting with this relation.\n\nEverything is representable as a ChatMessage[] and will be stored as such.\n\nFile, page, and website, and date, however, do not show this UI as the main UI, maybe as a secondary one."
                              },
                              "createdAt": {
                                "type": "number"
                              },
                              "unreadMessagesAmount": {
                                "type": ["number", "null"],
                                "description": "null means not unread 0 means you've set it back to 'unread' any other number shows how many unread messages there are"
                              },
                              "lastReadAt": {
                                "type": "number",
                                "description": "Last time me_person read the messages in this relation.\n\nThis number is used to determine where to open the messages."
                              },
                              "lastMessage": {
                                "type": "string"
                              },
                              "messageAfterTemplateResponse": {
                                "type": "string",
                                "description": "message to be stored here in case you had to sent template first"
                              },
                              "lastMessageAt": {
                                "type": "number"
                              },
                              "lastRelationMessageAt": {
                                "type": "number",
                                "description": "needed to see if we can send in whatsapp or not"
                              },
                              "relationAdditionalTransformation": {
                                "type": "string",
                                "description": "a secondary language alongside the preferred language, that the user can set for his relation. The relation will then receive this additional language as well, even if the persona does not have this transformation set up for all his langauges."
                              },
                              "guidedConversationPolicy": {
                                "$ref": "#/components/schemas/MessagePolicy",
                                "description": "For now, manually toggle guided conversations"
                              },
                              "guidedConversationStatus": {
                                "type": "string",
                                "enum": ["unresolved", "completed", "failed"],
                                "description": "status for the last guided conversation.\n\ndisabled + unresolved + personGoal means it's paused."
                              },
                              "draftedResponse": {
                                "type": "string",
                                "description": "can be an auto-generated response that is not sent yet"
                              },
                              "draftedSubject": {
                                "type": "string"
                              },
                              "memory": {
                                "$ref": "#/components/schemas/Memory",
                                "description": "key value store for different things we want to store about a relation"
                              },
                              "mainMessagingChannel": {
                                "$ref": "#/components/schemas/MessagingChannel",
                                "description": "TODO: should be added upon creation. After this changes, should be altered."
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/relation/create": {
      "post": {
        "tags": ["relation"],
        "summary": "Create relation",
        "operationId": "createRelation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string",
                          "description": "No specific custom identifyer for now"
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of your relation"
                        },
                        "note": {
                          "type": "string",
                          "description": "What you know about your relation (can be filled by an LLM)\n\nUsed as a conversation Summary"
                        },
                        "phoneNumber": {
                          "type": "string",
                          "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
                        },
                        "email": {
                          "type": "string",
                          "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
                        },
                        "whatsappPhoneNumber": {
                          "type": "string",
                          "description": "Phone number for whatsapp. If given, overwrites phoneNumber for whatsapp sending"
                        },
                        "personGoal": {
                          "type": "string",
                          "description": "More specific goals with regard to the person or assistant's functionality and purpose\n\nCan be used as a todolist for a guided conversation"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "Self",
                            "Person",
                            "Group",
                            "File",
                            "Page",
                            "Domain",
                            "CalendarEvent"
                          ],
                          "description": "Defaults to person (which can also be an AI agent, AI plugin, Company, etc.)\n\nThis determines where to get the chat messages from (if at all) and it also determines the UI the user gets when interacting with this relation.\n\nEverything is representable as a ChatMessage[] and will be stored as such.\n\nFile, page, and website, and date, however, do not show this UI as the main UI, maybe as a secondary one."
                        },
                        "createdAt": {
                          "type": "number"
                        },
                        "unreadMessagesAmount": {
                          "type": ["number", "null"],
                          "description": "null means not unread 0 means you've set it back to 'unread' any other number shows how many unread messages there are"
                        },
                        "lastReadAt": {
                          "type": "number",
                          "description": "Last time me_person read the messages in this relation.\n\nThis number is used to determine where to open the messages."
                        },
                        "lastMessage": {
                          "type": "string"
                        },
                        "messageAfterTemplateResponse": {
                          "type": "string",
                          "description": "message to be stored here in case you had to sent template first"
                        },
                        "lastMessageAt": {
                          "type": "number"
                        },
                        "lastRelationMessageAt": {
                          "type": "number",
                          "description": "needed to see if we can send in whatsapp or not"
                        },
                        "relationAdditionalTransformation": {
                          "type": "string",
                          "description": "a secondary language alongside the preferred language, that the user can set for his relation. The relation will then receive this additional language as well, even if the persona does not have this transformation set up for all his langauges."
                        },
                        "guidedConversationPolicy": {
                          "$ref": "#/components/schemas/MessagePolicy",
                          "description": "For now, manually toggle guided conversations"
                        },
                        "guidedConversationStatus": {
                          "type": "string",
                          "enum": ["unresolved", "completed", "failed"],
                          "description": "status for the last guided conversation.\n\ndisabled + unresolved + personGoal means it's paused."
                        },
                        "draftedResponse": {
                          "type": "string",
                          "description": "can be an auto-generated response that is not sent yet"
                        },
                        "draftedSubject": {
                          "type": "string"
                        },
                        "memory": {
                          "$ref": "#/components/schemas/Memory",
                          "description": "key value store for different things we want to store about a relation"
                        },
                        "mainMessagingChannel": {
                          "$ref": "#/components/schemas/MessagingChannel",
                          "description": "TODO: should be added upon creation. After this changes, should be altered."
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/relation/update": {
      "post": {
        "tags": ["relation"],
        "summary": "Update relation",
        "operationId": "updateRelation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string",
                        "description": "No specific custom identifyer for now"
                      },
                      "name": {
                        "type": "string",
                        "description": "Name of your relation"
                      },
                      "note": {
                        "type": "string",
                        "description": "What you know about your relation (can be filled by an LLM)\n\nUsed as a conversation Summary"
                      },
                      "phoneNumber": {
                        "type": "string",
                        "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
                      },
                      "email": {
                        "type": "string",
                        "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
                      },
                      "whatsappPhoneNumber": {
                        "type": "string",
                        "description": "Phone number for whatsapp. If given, overwrites phoneNumber for whatsapp sending"
                      },
                      "personGoal": {
                        "type": "string",
                        "description": "More specific goals with regard to the person or assistant's functionality and purpose\n\nCan be used as a todolist for a guided conversation"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "Self",
                          "Person",
                          "Group",
                          "File",
                          "Page",
                          "Domain",
                          "CalendarEvent"
                        ],
                        "description": "Defaults to person (which can also be an AI agent, AI plugin, Company, etc.)\n\nThis determines where to get the chat messages from (if at all) and it also determines the UI the user gets when interacting with this relation.\n\nEverything is representable as a ChatMessage[] and will be stored as such.\n\nFile, page, and website, and date, however, do not show this UI as the main UI, maybe as a secondary one."
                      },
                      "createdAt": {
                        "type": "number"
                      },
                      "unreadMessagesAmount": {
                        "type": ["number", "null"],
                        "description": "null means not unread 0 means you've set it back to 'unread' any other number shows how many unread messages there are"
                      },
                      "lastReadAt": {
                        "type": "number",
                        "description": "Last time me_person read the messages in this relation.\n\nThis number is used to determine where to open the messages."
                      },
                      "lastMessage": {
                        "type": "string"
                      },
                      "messageAfterTemplateResponse": {
                        "type": "string",
                        "description": "message to be stored here in case you had to sent template first"
                      },
                      "lastMessageAt": {
                        "type": "number"
                      },
                      "lastRelationMessageAt": {
                        "type": "number",
                        "description": "needed to see if we can send in whatsapp or not"
                      },
                      "relationAdditionalTransformation": {
                        "type": "string",
                        "description": "a secondary language alongside the preferred language, that the user can set for his relation. The relation will then receive this additional language as well, even if the persona does not have this transformation set up for all his langauges."
                      },
                      "guidedConversationPolicy": {
                        "$ref": "#/components/schemas/MessagePolicy",
                        "description": "For now, manually toggle guided conversations"
                      },
                      "guidedConversationStatus": {
                        "type": "string",
                        "enum": ["unresolved", "completed", "failed"],
                        "description": "status for the last guided conversation.\n\ndisabled + unresolved + personGoal means it's paused."
                      },
                      "draftedResponse": {
                        "type": "string",
                        "description": "can be an auto-generated response that is not sent yet"
                      },
                      "draftedSubject": {
                        "type": "string"
                      },
                      "memory": {
                        "$ref": "#/components/schemas/Memory",
                        "description": "key value store for different things we want to store about a relation"
                      },
                      "mainMessagingChannel": {
                        "$ref": "#/components/schemas/MessagingChannel",
                        "description": "TODO: should be added upon creation. After this changes, should be altered."
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/relation/execute": {
      "put": {
        "tags": ["relation"],
        "summary": "Execute relation",
        "operationId": "generateRelation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "__id",
                      "name",
                      "note",
                      "phoneNumber",
                      "email",
                      "whatsappPhoneNumber",
                      "personGoal",
                      "type",
                      "createdAt",
                      "unreadMessagesAmount",
                      "lastReadAt",
                      "lastMessage",
                      "messageAfterTemplateResponse",
                      "lastMessageAt",
                      "lastRelationMessageAt",
                      "relationAdditionalTransformation",
                      "guidedConversationPolicy",
                      "guidedConversationStatus",
                      "draftedResponse",
                      "draftedSubject",
                      "memory",
                      "mainMessagingChannel"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/relation": {
      "delete": {
        "tags": ["relation"],
        "summary": "Delete relation",
        "operationId": "deleteRelation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/roles-experiment/read": {
      "post": {
        "tags": ["roles-experiment"],
        "summary": "Read roles-experiment",
        "operationId": "readRolesExperiment",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "role",
                            "nationality",
                            "name",
                            "personality",
                            "picture",
                            "mainMissionStatement",
                            "expertise",
                            "tasks"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "__id",
                            "role",
                            "nationality",
                            "name",
                            "personality",
                            "picture",
                            "mainMissionStatement",
                            "expertise",
                            "tasks"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "role",
                        "nationality",
                        "name",
                        "personality",
                        "picture",
                        "mainMissionStatement",
                        "expertise",
                        "tasks"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "__id",
                        "role",
                        "nationality",
                        "name",
                        "personality",
                        "picture",
                        "mainMissionStatement",
                        "expertise",
                        "tasks"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "__id": {
                                "type": "string"
                              },
                              "role": {
                                "type": "string",
                                "description": ""
                              },
                              "nationality": {
                                "type": "string",
                                "description": "nationality",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "chatGptPlugin",
                                      "method": "POST",
                                      "path": "/function/chatGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "type": "creation",
                                    "context": {
                                      "description": "Imagine a nationality of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His role: ${role}\n\nNationality:",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": ["role"]
                                  }
                                ]
                              },
                              "name": {
                                "type": "string",
                                "description": "name",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "chatGptPlugin",
                                      "method": "POST",
                                      "path": "/function/chatGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "type": "creation",
                                    "context": {
                                      "description": "Imagine a name of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His/her role: ${role}. Nationality: ${nationality}\n\nFull Name:",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": [
                                      "role",
                                      "nationality"
                                    ]
                                  }
                                ]
                              },
                              "personality": {
                                "type": "string",
                                "description": "",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "chatGptPlugin",
                                      "method": "POST",
                                      "path": "/function/chatGptPlugin",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "type": "creation",
                                    "context": {
                                      "description": "the startup \"Code From Anywhere\" is an AI Product development studio.\n\nWe are dreaming up virtual AI characters that work there.\n\nFill in the blanks for me for: ${name}\n\nNationality: ${nationality}\nRole: ${role}\n\nTell me:\n\n- Gender:\n- Age:\n- Ethnicity:\n- Physical body details:\n- Hobbies:\n",
                                      "model": "auto"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": [
                                      "role",
                                      "nationality",
                                      "name"
                                    ]
                                  }
                                ]
                              },
                              "picture": {
                                "type": "string",
                                "description": "picture",
                                "creationPlugins": [
                                  {
                                    "$openapi": {
                                      "operationId": "openAiDalle",
                                      "method": "POST",
                                      "path": "/function/openAiDalle",
                                      "url": "https://api.codefromanywhere.com/openapi.json"
                                    },
                                    "condition": "",
                                    "type": "creation",
                                    "context": {
                                      "prompt": "Consider ${name}. ${role} at Code From Anywhere, a global AI product development studio. Nationality: ${nationality}. ${personality}. ",
                                      "size": "1024x1024",
                                      "quality": "standard"
                                    },
                                    "outputLocation": "result",
                                    "propertyDependencies": [
                                      "role",
                                      "nationality",
                                      "name",
                                      "personality"
                                    ]
                                  }
                                ]
                              },
                              "mainMissionStatement": {
                                "type": "string",
                                "description": "mainMissionStatement"
                              },
                              "expertise": {
                                "type": "string",
                                "description": "expertise"
                              },
                              "tasks": {
                                "type": "string",
                                "description": "tasks",
                                "creationPlugins": []
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/roles-experiment/create": {
      "post": {
        "tags": ["roles-experiment"],
        "summary": "Create roles-experiment",
        "operationId": "createRolesExperiment",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "__id": {
                          "type": "string"
                        },
                        "role": {
                          "type": "string",
                          "description": ""
                        },
                        "nationality": {
                          "type": "string",
                          "description": "nationality",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "chatGptPlugin",
                                "method": "POST",
                                "path": "/function/chatGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "type": "creation",
                              "context": {
                                "description": "Imagine a nationality of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His role: ${role}\n\nNationality:",
                                "model": "auto"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["role"]
                            }
                          ]
                        },
                        "name": {
                          "type": "string",
                          "description": "name",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "chatGptPlugin",
                                "method": "POST",
                                "path": "/function/chatGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "type": "creation",
                              "context": {
                                "description": "Imagine a name of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His/her role: ${role}. Nationality: ${nationality}\n\nFull Name:",
                                "model": "auto"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": ["role", "nationality"]
                            }
                          ]
                        },
                        "personality": {
                          "type": "string",
                          "description": "",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "chatGptPlugin",
                                "method": "POST",
                                "path": "/function/chatGptPlugin",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "type": "creation",
                              "context": {
                                "description": "the startup \"Code From Anywhere\" is an AI Product development studio.\n\nWe are dreaming up virtual AI characters that work there.\n\nFill in the blanks for me for: ${name}\n\nNationality: ${nationality}\nRole: ${role}\n\nTell me:\n\n- Gender:\n- Age:\n- Ethnicity:\n- Physical body details:\n- Hobbies:\n",
                                "model": "auto"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": [
                                "role",
                                "nationality",
                                "name"
                              ]
                            }
                          ]
                        },
                        "picture": {
                          "type": "string",
                          "description": "picture",
                          "creationPlugins": [
                            {
                              "$openapi": {
                                "operationId": "openAiDalle",
                                "method": "POST",
                                "path": "/function/openAiDalle",
                                "url": "https://api.codefromanywhere.com/openapi.json"
                              },
                              "condition": "",
                              "type": "creation",
                              "context": {
                                "prompt": "Consider ${name}. ${role} at Code From Anywhere, a global AI product development studio. Nationality: ${nationality}. ${personality}. ",
                                "size": "1024x1024",
                                "quality": "standard"
                              },
                              "outputLocation": "result",
                              "propertyDependencies": [
                                "role",
                                "nationality",
                                "name",
                                "personality"
                              ]
                            }
                          ]
                        },
                        "mainMissionStatement": {
                          "type": "string",
                          "description": "mainMissionStatement"
                        },
                        "expertise": {
                          "type": "string",
                          "description": "expertise"
                        },
                        "tasks": {
                          "type": "string",
                          "description": "tasks",
                          "creationPlugins": []
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/roles-experiment/update": {
      "post": {
        "tags": ["roles-experiment"],
        "summary": "Update roles-experiment",
        "operationId": "updateRolesExperiment",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "__id": {
                        "type": "string"
                      },
                      "role": {
                        "type": "string",
                        "description": ""
                      },
                      "nationality": {
                        "type": "string",
                        "description": "nationality",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "chatGptPlugin",
                              "method": "POST",
                              "path": "/function/chatGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "type": "creation",
                            "context": {
                              "description": "Imagine a nationality of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His role: ${role}\n\nNationality:",
                              "model": "auto"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["role"]
                          }
                        ]
                      },
                      "name": {
                        "type": "string",
                        "description": "name",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "chatGptPlugin",
                              "method": "POST",
                              "path": "/function/chatGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "type": "creation",
                            "context": {
                              "description": "Imagine a name of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His/her role: ${role}. Nationality: ${nationality}\n\nFull Name:",
                              "model": "auto"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": ["role", "nationality"]
                          }
                        ]
                      },
                      "personality": {
                        "type": "string",
                        "description": "",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "chatGptPlugin",
                              "method": "POST",
                              "path": "/function/chatGptPlugin",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "type": "creation",
                            "context": {
                              "description": "the startup \"Code From Anywhere\" is an AI Product development studio.\n\nWe are dreaming up virtual AI characters that work there.\n\nFill in the blanks for me for: ${name}\n\nNationality: ${nationality}\nRole: ${role}\n\nTell me:\n\n- Gender:\n- Age:\n- Ethnicity:\n- Physical body details:\n- Hobbies:\n",
                              "model": "auto"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": [
                              "role",
                              "nationality",
                              "name"
                            ]
                          }
                        ]
                      },
                      "picture": {
                        "type": "string",
                        "description": "picture",
                        "creationPlugins": [
                          {
                            "$openapi": {
                              "operationId": "openAiDalle",
                              "method": "POST",
                              "path": "/function/openAiDalle",
                              "url": "https://api.codefromanywhere.com/openapi.json"
                            },
                            "condition": "",
                            "type": "creation",
                            "context": {
                              "prompt": "Consider ${name}. ${role} at Code From Anywhere, a global AI product development studio. Nationality: ${nationality}. ${personality}. ",
                              "size": "1024x1024",
                              "quality": "standard"
                            },
                            "outputLocation": "result",
                            "propertyDependencies": [
                              "role",
                              "nationality",
                              "name",
                              "personality"
                            ]
                          }
                        ]
                      },
                      "mainMissionStatement": {
                        "type": "string",
                        "description": "mainMissionStatement"
                      },
                      "expertise": {
                        "type": "string",
                        "description": "expertise"
                      },
                      "tasks": {
                        "type": "string",
                        "description": "tasks",
                        "creationPlugins": []
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/roles-experiment/execute": {
      "put": {
        "tags": ["roles-experiment"],
        "summary": "Execute roles-experiment",
        "operationId": "generateRolesExperiment",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "__id",
                      "role",
                      "nationality",
                      "name",
                      "personality",
                      "picture",
                      "mainMissionStatement",
                      "expertise",
                      "tasks"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/roles-experiment": {
      "delete": {
        "tags": ["roles-experiment"],
        "summary": "Delete roles-experiment",
        "operationId": "deleteRolesExperiment",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/simple-word-matrix/read": {
      "post": {
        "tags": ["simple-word-matrix"],
        "summary": "Read simple-word-matrix",
        "operationId": "readSimpleWordMatrix",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "english",
                            "dutch",
                            "nepali",
                            "portuguese",
                            "brazilian",
                            "german",
                            "french",
                            "spanish",
                            "italian",
                            "norwegian",
                            "swedish",
                            "danish",
                            "vietnamese",
                            "indonesian",
                            "southAfrican",
                            "tokiPona",
                            "hindi",
                            "mandarin",
                            "arabic",
                            "bengali",
                            "urdu",
                            "japanese",
                            "swahili",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "description",
                            "type",
                            "example",
                            "shortDescription",
                            "synonyms",
                            "frequency",
                            "rank",
                            "isAugmented",
                            "isAugmentedChatgpt",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "english",
                            "dutch",
                            "nepali",
                            "portuguese",
                            "brazilian",
                            "german",
                            "french",
                            "spanish",
                            "italian",
                            "norwegian",
                            "swedish",
                            "danish",
                            "vietnamese",
                            "indonesian",
                            "southAfrican",
                            "tokiPona",
                            "hindi",
                            "mandarin",
                            "arabic",
                            "bengali",
                            "urdu",
                            "japanese",
                            "swahili",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "description",
                            "type",
                            "example",
                            "shortDescription",
                            "synonyms",
                            "frequency",
                            "rank",
                            "isAugmented",
                            "isAugmentedChatgpt",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "english",
                        "dutch",
                        "nepali",
                        "portuguese",
                        "brazilian",
                        "german",
                        "french",
                        "spanish",
                        "italian",
                        "norwegian",
                        "swedish",
                        "danish",
                        "vietnamese",
                        "indonesian",
                        "southAfrican",
                        "tokiPona",
                        "hindi",
                        "mandarin",
                        "arabic",
                        "bengali",
                        "urdu",
                        "japanese",
                        "swahili",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "description",
                        "type",
                        "example",
                        "shortDescription",
                        "synonyms",
                        "frequency",
                        "rank",
                        "isAugmented",
                        "isAugmentedChatgpt",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "english",
                        "dutch",
                        "nepali",
                        "portuguese",
                        "brazilian",
                        "german",
                        "french",
                        "spanish",
                        "italian",
                        "norwegian",
                        "swedish",
                        "danish",
                        "vietnamese",
                        "indonesian",
                        "southAfrican",
                        "tokiPona",
                        "hindi",
                        "mandarin",
                        "arabic",
                        "bengali",
                        "urdu",
                        "japanese",
                        "swahili",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "description",
                        "type",
                        "example",
                        "shortDescription",
                        "synonyms",
                        "frequency",
                        "rank",
                        "isAugmented",
                        "isAugmentedChatgpt",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "english": {
                                "type": "string"
                              },
                              "dutch": {
                                "type": "string"
                              },
                              "nepali": {
                                "type": "string"
                              },
                              "portuguese": {
                                "type": "string"
                              },
                              "brazilian": {
                                "type": "string"
                              },
                              "german": {
                                "type": "string"
                              },
                              "french": {
                                "type": "string"
                              },
                              "spanish": {
                                "type": "string"
                              },
                              "italian": {
                                "type": "string"
                              },
                              "norwegian": {
                                "type": "string"
                              },
                              "swedish": {
                                "type": "string"
                              },
                              "danish": {
                                "type": "string"
                              },
                              "vietnamese": {
                                "type": "string"
                              },
                              "indonesian": {
                                "type": "string"
                              },
                              "southAfrican": {
                                "type": "string"
                              },
                              "tokiPona": {
                                "type": "string"
                              },
                              "hindi": {
                                "type": "string"
                              },
                              "mandarin": {
                                "type": "string"
                              },
                              "arabic": {
                                "type": "string"
                              },
                              "bengali": {
                                "type": "string"
                              },
                              "urdu": {
                                "type": "string"
                              },
                              "japanese": {
                                "type": "string"
                              },
                              "swahili": {
                                "type": "string"
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "slug": {
                                "type": "string",
                                "description": "slugified version of english"
                              },
                              "description": {
                                "type": "string"
                              },
                              "type": {
                                "$ref": "#/components/schemas/WordType"
                              },
                              "example": {
                                "type": "string"
                              },
                              "shortDescription": {
                                "type": "string"
                              },
                              "synonyms": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "frequency": {
                                "type": "number"
                              },
                              "rank": {
                                "type": "number"
                              },
                              "isAugmented": {
                                "type": "boolean"
                              },
                              "isAugmentedChatgpt": {
                                "type": "boolean"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/simple-word-matrix/create": {
      "post": {
        "tags": ["simple-word-matrix"],
        "summary": "Create simple-word-matrix",
        "operationId": "createSimpleWordMatrix",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "english": {
                          "type": "string"
                        },
                        "dutch": {
                          "type": "string"
                        },
                        "nepali": {
                          "type": "string"
                        },
                        "portuguese": {
                          "type": "string"
                        },
                        "brazilian": {
                          "type": "string"
                        },
                        "german": {
                          "type": "string"
                        },
                        "french": {
                          "type": "string"
                        },
                        "spanish": {
                          "type": "string"
                        },
                        "italian": {
                          "type": "string"
                        },
                        "norwegian": {
                          "type": "string"
                        },
                        "swedish": {
                          "type": "string"
                        },
                        "danish": {
                          "type": "string"
                        },
                        "vietnamese": {
                          "type": "string"
                        },
                        "indonesian": {
                          "type": "string"
                        },
                        "southAfrican": {
                          "type": "string"
                        },
                        "tokiPona": {
                          "type": "string"
                        },
                        "hindi": {
                          "type": "string"
                        },
                        "mandarin": {
                          "type": "string"
                        },
                        "arabic": {
                          "type": "string"
                        },
                        "bengali": {
                          "type": "string"
                        },
                        "urdu": {
                          "type": "string"
                        },
                        "japanese": {
                          "type": "string"
                        },
                        "swahili": {
                          "type": "string"
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "slug": {
                          "type": "string",
                          "description": "slugified version of english"
                        },
                        "description": {
                          "type": "string"
                        },
                        "type": {
                          "$ref": "#/components/schemas/WordType"
                        },
                        "example": {
                          "type": "string"
                        },
                        "shortDescription": {
                          "type": "string"
                        },
                        "synonyms": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "frequency": {
                          "type": "number"
                        },
                        "rank": {
                          "type": "number"
                        },
                        "isAugmented": {
                          "type": "boolean"
                        },
                        "isAugmentedChatgpt": {
                          "type": "boolean"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/simple-word-matrix/update": {
      "post": {
        "tags": ["simple-word-matrix"],
        "summary": "Update simple-word-matrix",
        "operationId": "updateSimpleWordMatrix",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "english": {
                        "type": "string"
                      },
                      "dutch": {
                        "type": "string"
                      },
                      "nepali": {
                        "type": "string"
                      },
                      "portuguese": {
                        "type": "string"
                      },
                      "brazilian": {
                        "type": "string"
                      },
                      "german": {
                        "type": "string"
                      },
                      "french": {
                        "type": "string"
                      },
                      "spanish": {
                        "type": "string"
                      },
                      "italian": {
                        "type": "string"
                      },
                      "norwegian": {
                        "type": "string"
                      },
                      "swedish": {
                        "type": "string"
                      },
                      "danish": {
                        "type": "string"
                      },
                      "vietnamese": {
                        "type": "string"
                      },
                      "indonesian": {
                        "type": "string"
                      },
                      "southAfrican": {
                        "type": "string"
                      },
                      "tokiPona": {
                        "type": "string"
                      },
                      "hindi": {
                        "type": "string"
                      },
                      "mandarin": {
                        "type": "string"
                      },
                      "arabic": {
                        "type": "string"
                      },
                      "bengali": {
                        "type": "string"
                      },
                      "urdu": {
                        "type": "string"
                      },
                      "japanese": {
                        "type": "string"
                      },
                      "swahili": {
                        "type": "string"
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "slug": {
                        "type": "string",
                        "description": "slugified version of english"
                      },
                      "description": {
                        "type": "string"
                      },
                      "type": {
                        "$ref": "#/components/schemas/WordType"
                      },
                      "example": {
                        "type": "string"
                      },
                      "shortDescription": {
                        "type": "string"
                      },
                      "synonyms": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "frequency": {
                        "type": "number"
                      },
                      "rank": {
                        "type": "number"
                      },
                      "isAugmented": {
                        "type": "boolean"
                      },
                      "isAugmentedChatgpt": {
                        "type": "boolean"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/simple-word-matrix/execute": {
      "put": {
        "tags": ["simple-word-matrix"],
        "summary": "Execute simple-word-matrix",
        "operationId": "generateSimpleWordMatrix",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "english",
                      "dutch",
                      "nepali",
                      "portuguese",
                      "brazilian",
                      "german",
                      "french",
                      "spanish",
                      "italian",
                      "norwegian",
                      "swedish",
                      "danish",
                      "vietnamese",
                      "indonesian",
                      "southAfrican",
                      "tokiPona",
                      "hindi",
                      "mandarin",
                      "arabic",
                      "bengali",
                      "urdu",
                      "japanese",
                      "swahili",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "slug",
                      "description",
                      "type",
                      "example",
                      "shortDescription",
                      "synonyms",
                      "frequency",
                      "rank",
                      "isAugmented",
                      "isAugmentedChatgpt",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/simple-word-matrix": {
      "delete": {
        "tags": ["simple-word-matrix"],
        "summary": "Delete simple-word-matrix",
        "operationId": "deleteSimpleWordMatrix",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/statement/read": {
      "post": {
        "tags": ["statement"],
        "summary": "Read statement",
        "operationId": "readStatement",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "category",
                            "description",
                            "url",
                            "agreement",
                            "readersAgreement",
                            "readersAgreementVotedCount",
                            "importancy",
                            "isImportancySet",
                            "wordMatrixSlugs",
                            "wordMatrixs",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "personSlug",
                            "category",
                            "description",
                            "url",
                            "agreement",
                            "readersAgreement",
                            "readersAgreementVotedCount",
                            "importancy",
                            "isImportancySet",
                            "wordMatrixSlugs",
                            "wordMatrixs",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "category",
                        "description",
                        "url",
                        "agreement",
                        "readersAgreement",
                        "readersAgreementVotedCount",
                        "importancy",
                        "isImportancySet",
                        "wordMatrixSlugs",
                        "wordMatrixs",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "personSlug",
                        "category",
                        "description",
                        "url",
                        "agreement",
                        "readersAgreement",
                        "readersAgreementVotedCount",
                        "importancy",
                        "isImportancySet",
                        "wordMatrixSlugs",
                        "wordMatrixs",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "personSlug": {
                                "$ref": "#/components/schemas/Slug"
                              },
                              "category": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string",
                                "description": "your statement: definition, fact, question, quote"
                              },
                              "url": {
                                "type": "string",
                                "description": "source of the statement, if the statement was a non-original one found online somewhere"
                              },
                              "agreement": {
                                "type": "number",
                                "description": "Number [0-1] representing agreement of admin\n\n- 1 meaning 100% agreement\n- 0 means 0% agreement or complete disagreement"
                              },
                              "readersAgreement": {
                                "type": "number",
                                "description": "Number [0,1] representing agreement of readers\n\n1 reader can vote once"
                              },
                              "readersAgreementVotedCount": {
                                "type": "number"
                              },
                              "importancy": {
                                "type": "number",
                                "description": "defaults to 0.5 meaning average importancy this could be either a calculated or set property. could it be calculated on your value hierarchy? not sure if this is practical (yet) but still a very interesting property to have, or somehow calculate."
                              },
                              "isImportancySet": {
                                "type": "boolean",
                                "description": "by default, importancy is calculated by one or multiple systems. As the admin you can change it\n\nTODO: once this is all working, possibly add reader-importancy and readersImportancyVotedCount"
                              },
                              "wordMatrixSlugs": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Slug"
                                },
                                "description": "A statement can connect to one or more words. This can be calculated automatically I guess, by looking at all WordMatrix words and WordCombinations that are inside of the statement. However, we may not want to put all of them in there.\n\nFor now, let's skip this, since it's probably better to calculate it on the fly, not index it."
                              },
                              "wordMatrixs": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/WordMatrix"
                                }
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/statement/create": {
      "post": {
        "tags": ["statement"],
        "summary": "Create statement",
        "operationId": "createStatement",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "personSlug": {
                          "$ref": "#/components/schemas/Slug"
                        },
                        "category": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string",
                          "description": "your statement: definition, fact, question, quote"
                        },
                        "url": {
                          "type": "string",
                          "description": "source of the statement, if the statement was a non-original one found online somewhere"
                        },
                        "agreement": {
                          "type": "number",
                          "description": "Number [0-1] representing agreement of admin\n\n- 1 meaning 100% agreement\n- 0 means 0% agreement or complete disagreement"
                        },
                        "readersAgreement": {
                          "type": "number",
                          "description": "Number [0,1] representing agreement of readers\n\n1 reader can vote once"
                        },
                        "readersAgreementVotedCount": {
                          "type": "number"
                        },
                        "importancy": {
                          "type": "number",
                          "description": "defaults to 0.5 meaning average importancy this could be either a calculated or set property. could it be calculated on your value hierarchy? not sure if this is practical (yet) but still a very interesting property to have, or somehow calculate."
                        },
                        "isImportancySet": {
                          "type": "boolean",
                          "description": "by default, importancy is calculated by one or multiple systems. As the admin you can change it\n\nTODO: once this is all working, possibly add reader-importancy and readersImportancyVotedCount"
                        },
                        "wordMatrixSlugs": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Slug"
                          },
                          "description": "A statement can connect to one or more words. This can be calculated automatically I guess, by looking at all WordMatrix words and WordCombinations that are inside of the statement. However, we may not want to put all of them in there.\n\nFor now, let's skip this, since it's probably better to calculate it on the fly, not index it."
                        },
                        "wordMatrixs": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/WordMatrix"
                          }
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/statement/update": {
      "post": {
        "tags": ["statement"],
        "summary": "Update statement",
        "operationId": "updateStatement",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "personSlug": {
                        "$ref": "#/components/schemas/Slug"
                      },
                      "category": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string",
                        "description": "your statement: definition, fact, question, quote"
                      },
                      "url": {
                        "type": "string",
                        "description": "source of the statement, if the statement was a non-original one found online somewhere"
                      },
                      "agreement": {
                        "type": "number",
                        "description": "Number [0-1] representing agreement of admin\n\n- 1 meaning 100% agreement\n- 0 means 0% agreement or complete disagreement"
                      },
                      "readersAgreement": {
                        "type": "number",
                        "description": "Number [0,1] representing agreement of readers\n\n1 reader can vote once"
                      },
                      "readersAgreementVotedCount": {
                        "type": "number"
                      },
                      "importancy": {
                        "type": "number",
                        "description": "defaults to 0.5 meaning average importancy this could be either a calculated or set property. could it be calculated on your value hierarchy? not sure if this is practical (yet) but still a very interesting property to have, or somehow calculate."
                      },
                      "isImportancySet": {
                        "type": "boolean",
                        "description": "by default, importancy is calculated by one or multiple systems. As the admin you can change it\n\nTODO: once this is all working, possibly add reader-importancy and readersImportancyVotedCount"
                      },
                      "wordMatrixSlugs": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Slug"
                        },
                        "description": "A statement can connect to one or more words. This can be calculated automatically I guess, by looking at all WordMatrix words and WordCombinations that are inside of the statement. However, we may not want to put all of them in there.\n\nFor now, let's skip this, since it's probably better to calculate it on the fly, not index it."
                      },
                      "wordMatrixs": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/WordMatrix"
                        }
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/statement/execute": {
      "put": {
        "tags": ["statement"],
        "summary": "Execute statement",
        "operationId": "generateStatement",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "personSlug",
                      "category",
                      "description",
                      "url",
                      "agreement",
                      "readersAgreement",
                      "readersAgreementVotedCount",
                      "importancy",
                      "isImportancySet",
                      "wordMatrixSlugs",
                      "wordMatrixs",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/statement": {
      "delete": {
        "tags": ["statement"],
        "summary": "Delete statement",
        "operationId": "deleteStatement",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-domain/read": {
      "post": {
        "tags": ["website-domain"],
        "summary": "Read website-domain",
        "operationId": "readWebsiteDomain",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "robotsIsAllowed",
                            "requireResidential",
                            "requireHeadlessBrowser",
                            "isIframeAllowed",
                            "hasDomainApi",
                            "hasDomainAiPlugin",
                            "hasSitemap",
                            "websiteRoutes",
                            "sitemap",
                            "robots",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "slug",
                            "robotsIsAllowed",
                            "requireResidential",
                            "requireHeadlessBrowser",
                            "isIframeAllowed",
                            "hasDomainApi",
                            "hasDomainAiPlugin",
                            "hasSitemap",
                            "websiteRoutes",
                            "sitemap",
                            "robots",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "robotsIsAllowed",
                        "requireResidential",
                        "requireHeadlessBrowser",
                        "isIframeAllowed",
                        "hasDomainApi",
                        "hasDomainAiPlugin",
                        "hasSitemap",
                        "websiteRoutes",
                        "sitemap",
                        "robots",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "slug",
                        "robotsIsAllowed",
                        "requireResidential",
                        "requireHeadlessBrowser",
                        "isIframeAllowed",
                        "hasDomainApi",
                        "hasDomainAiPlugin",
                        "hasSitemap",
                        "websiteRoutes",
                        "sitemap",
                        "robots",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "slug": {
                                "type": "string",
                                "description": "unique id,should be domain"
                              },
                              "robotsIsAllowed": {
                                "type": "boolean"
                              },
                              "requireResidential": {
                                "type": "boolean"
                              },
                              "requireHeadlessBrowser": {
                                "type": "boolean"
                              },
                              "isIframeAllowed": {
                                "type": "boolean"
                              },
                              "hasDomainApi": {
                                "type": "boolean"
                              },
                              "hasDomainAiPlugin": {
                                "type": "boolean"
                              },
                              "hasSitemap": {
                                "type": "boolean"
                              },
                              "websiteRoutes": {
                                "type": "array",
                                "items": {},
                                "description": "Can be attached via `memory/domains/[websiteDomainSlug]/website-routes.json`"
                              },
                              "sitemap": {
                                "type": "string"
                              },
                              "robots": {
                                "type": "string"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-domain/create": {
      "post": {
        "tags": ["website-domain"],
        "summary": "Create website-domain",
        "operationId": "createWebsiteDomain",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "slug": {
                          "type": "string",
                          "description": "unique id,should be domain"
                        },
                        "robotsIsAllowed": {
                          "type": "boolean"
                        },
                        "requireResidential": {
                          "type": "boolean"
                        },
                        "requireHeadlessBrowser": {
                          "type": "boolean"
                        },
                        "isIframeAllowed": {
                          "type": "boolean"
                        },
                        "hasDomainApi": {
                          "type": "boolean"
                        },
                        "hasDomainAiPlugin": {
                          "type": "boolean"
                        },
                        "hasSitemap": {
                          "type": "boolean"
                        },
                        "websiteRoutes": {
                          "type": "array",
                          "items": {},
                          "description": "Can be attached via `memory/domains/[websiteDomainSlug]/website-routes.json`"
                        },
                        "sitemap": {
                          "type": "string"
                        },
                        "robots": {
                          "type": "string"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-domain/update": {
      "post": {
        "tags": ["website-domain"],
        "summary": "Update website-domain",
        "operationId": "updateWebsiteDomain",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "slug": {
                        "type": "string",
                        "description": "unique id,should be domain"
                      },
                      "robotsIsAllowed": {
                        "type": "boolean"
                      },
                      "requireResidential": {
                        "type": "boolean"
                      },
                      "requireHeadlessBrowser": {
                        "type": "boolean"
                      },
                      "isIframeAllowed": {
                        "type": "boolean"
                      },
                      "hasDomainApi": {
                        "type": "boolean"
                      },
                      "hasDomainAiPlugin": {
                        "type": "boolean"
                      },
                      "hasSitemap": {
                        "type": "boolean"
                      },
                      "websiteRoutes": {
                        "type": "array",
                        "items": {},
                        "description": "Can be attached via `memory/domains/[websiteDomainSlug]/website-routes.json`"
                      },
                      "sitemap": {
                        "type": "string"
                      },
                      "robots": {
                        "type": "string"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-domain/execute": {
      "put": {
        "tags": ["website-domain"],
        "summary": "Execute website-domain",
        "operationId": "generateWebsiteDomain",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "slug",
                      "robotsIsAllowed",
                      "requireResidential",
                      "requireHeadlessBrowser",
                      "isIframeAllowed",
                      "hasDomainApi",
                      "hasDomainAiPlugin",
                      "hasSitemap",
                      "websiteRoutes",
                      "sitemap",
                      "robots",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-domain": {
      "delete": {
        "tags": ["website-domain"],
        "summary": "Delete website-domain",
        "operationId": "deleteWebsiteDomain",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-route/read": {
      "post": {
        "tags": ["website-route"],
        "summary": "Read website-route",
        "operationId": "readWebsiteRoute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "websiteDomainSlug",
                            "pattern",
                            "description",
                            "timeToStaleMs",
                            "selectors",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "websiteDomainSlug",
                            "pattern",
                            "description",
                            "timeToStaleMs",
                            "selectors",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "websiteDomainSlug",
                        "pattern",
                        "description",
                        "timeToStaleMs",
                        "selectors",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "websiteDomainSlug",
                        "pattern",
                        "description",
                        "timeToStaleMs",
                        "selectors",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "websiteDomainSlug": {
                                "type": "string"
                              },
                              "pattern": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "timeToStaleMs": {
                                "type": "number",
                                "description": "Amount of ms before the content is stale and needs to be rescraped\n\nUseful for making my scraping endpoint cheaper"
                              },
                              "selectors": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/HtmlSelector"
                                },
                                "description": "The goal is to build a LLM prompt that can create a scraper that systematically collects the valuable data from a HTML page without the need for LLM's.\n\nThis will significantly reduce the cost of scraping."
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-route/create": {
      "post": {
        "tags": ["website-route"],
        "summary": "Create website-route",
        "operationId": "createWebsiteRoute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "websiteDomainSlug": {
                          "type": "string"
                        },
                        "pattern": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "timeToStaleMs": {
                          "type": "number",
                          "description": "Amount of ms before the content is stale and needs to be rescraped\n\nUseful for making my scraping endpoint cheaper"
                        },
                        "selectors": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/HtmlSelector"
                          },
                          "description": "The goal is to build a LLM prompt that can create a scraper that systematically collects the valuable data from a HTML page without the need for LLM's.\n\nThis will significantly reduce the cost of scraping."
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-route/update": {
      "post": {
        "tags": ["website-route"],
        "summary": "Update website-route",
        "operationId": "updateWebsiteRoute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "websiteDomainSlug": {
                        "type": "string"
                      },
                      "pattern": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "timeToStaleMs": {
                        "type": "number",
                        "description": "Amount of ms before the content is stale and needs to be rescraped\n\nUseful for making my scraping endpoint cheaper"
                      },
                      "selectors": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/HtmlSelector"
                        },
                        "description": "The goal is to build a LLM prompt that can create a scraper that systematically collects the valuable data from a HTML page without the need for LLM's.\n\nThis will significantly reduce the cost of scraping."
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-route/execute": {
      "put": {
        "tags": ["website-route"],
        "summary": "Execute website-route",
        "operationId": "generateWebsiteRoute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "websiteDomainSlug",
                      "pattern",
                      "description",
                      "timeToStaleMs",
                      "selectors",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/website-route": {
      "delete": {
        "tags": ["website-route"],
        "summary": "Delete website-route",
        "operationId": "deleteWebsiteRoute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow/read": {
      "post": {
        "tags": ["workflow"],
        "summary": "Read workflow",
        "operationId": "readWorkflow",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "description": "search for a specific value"
                  },
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "provide specific ids here to only select these keys (more efficient)"
                  },
                  "startFromIndex": {
                    "type": "number",
                    "description": "Starting index (slices the rest away)"
                  },
                  "maxRows": {
                    "type": "number",
                    "description": "If provided, slices the rest away after this amount"
                  },
                  "filter": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "operator": {
                          "type": "string",
                          "enum": [
                            "equal",
                            "notEqual",
                            "endsWith",
                            "startsWith",
                            "includes",
                            "includesLetters",
                            "greaterThan",
                            "lessThan",
                            "greaterThanOrEqual",
                            "lessThanOrEqual",
                            "isIncludedIn",
                            "isFalsy",
                            "isTruthy"
                          ],
                          "description": "Most operators are self-explanitory but please note that:\n\n- Number comparison will be casted from the string.\n- `isIncludedIn` will compare if the string is included in a comma-separated list in the value"
                        },
                        "value": {
                          "type": "string"
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "slug",
                            "category",
                            "goal",
                            "description",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "owner_personSlug",
                            "policyContext",
                            "policy",
                            "workflowAssistants",
                            "averageCreditCostCalculated",
                            "averageCreditCostStandardDeviationCalculated",
                            "__id"
                          ]
                        }
                      },
                      "required": ["operator", "value", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Filters to be applied on the result before sending it back"
                  },
                  "sort": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sortDirection": {
                          "type": "string",
                          "enum": ["ascending", "descending"]
                        },
                        "objectParameterKey": {
                          "type": "string",
                          "enum": [
                            "slug",
                            "category",
                            "goal",
                            "description",
                            "$schema",
                            "projectRelativePath",
                            "absolutePath",
                            "modelName",
                            "owner_personSlug",
                            "policyContext",
                            "policy",
                            "workflowAssistants",
                            "averageCreditCostCalculated",
                            "averageCreditCostStandardDeviationCalculated",
                            "__id"
                          ]
                        }
                      },
                      "required": ["sortDirection", "objectParameterKey"],
                      "additionalProperties": false
                    },
                    "description": "Apply sorting (one by one) after data has been fetched"
                  },
                  "objectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "slug",
                        "category",
                        "goal",
                        "description",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "owner_personSlug",
                        "policyContext",
                        "policy",
                        "workflowAssistants",
                        "averageCreditCostCalculated",
                        "averageCreditCostStandardDeviationCalculated",
                        "__id"
                      ]
                    },
                    "description": "If provided, only selects these keys from the table"
                  },
                  "ignoreObjectParameterKeys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "slug",
                        "category",
                        "goal",
                        "description",
                        "$schema",
                        "projectRelativePath",
                        "absolutePath",
                        "modelName",
                        "owner_personSlug",
                        "policyContext",
                        "policy",
                        "workflowAssistants",
                        "averageCreditCostCalculated",
                        "averageCreditCostStandardDeviationCalculated",
                        "__id"
                      ]
                    },
                    "description": "If provided, responds with all keys except these"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "json": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "privacy": {
                          "$ref": "#/components/schemas/ActionSchemaPrivacy"
                        },
                        "category": {
                          "type": "string",
                          "description": "can be filled by user"
                        },
                        "rowGenerationStatus": {
                          "$ref": "#/components/schemas/ActionSchemaStatus",
                          "description": "status indicating whether or not rows are being generated"
                        },
                        "status": {
                          "$ref": "#/components/schemas/JsonArrayStatus",
                          "description": "State concerning the status of (re)calculation behavior"
                        },
                        "lastOperationAt": {
                          "type": "number"
                        },
                        "lastSizeCalculatedAt": {
                          "type": "number"
                        },
                        "projectSizeBytes": {
                          "type": "number"
                        },
                        "delta": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonStatusDelta"
                          }
                        },
                        "columnSpending": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/GridSpending"
                          },
                          "description": "to keep track of spending"
                        },
                        "totalSpending": {
                          "$ref": "#/components/schemas/GridSpending"
                        },
                        "$schema": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "goal": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "$schema": {
                                "type": "string",
                                "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                              },
                              "projectRelativePath": {
                                "type": "string",
                                "description": "Where the item is/was stored"
                              },
                              "absolutePath": {
                                "type": "string",
                                "description": "Absolute item location (not always given)"
                              },
                              "modelName": {
                                "type": "string",
                                "description": "PascalCase name of the type interface of the model"
                              },
                              "owner_personSlug": {
                                "type": "string"
                              },
                              "policyContext": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Besides the general purpose context, we might provide some custom context.\n\nNot sure if this is needed, as getting the context from the database might also be a fine way to do it."
                              },
                              "policy": {
                                "type": "string",
                                "description": "The policy can be inferred from the message history and then be fine-tuned"
                              },
                              "workflowAssistants": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "personSlug": {
                                      "type": "string",
                                      "description": "Persona that was spawned to do this"
                                    },
                                    "person": {},
                                    "chatMessages": {
                                      "type": "array",
                                      "items": {}
                                    },
                                    "relation": {
                                      "description": "Relation could contain workflow details like the status"
                                    },
                                    "totalCreditPaid": {
                                      "type": "number"
                                    }
                                  },
                                  "required": ["personSlug"],
                                  "additionalProperties": false
                                },
                                "description": "All executions of this workflow can be represented as spawned agents with chat history\n\nAfter the workflow is finished, the spawned agent despawns (dies) like a Mr. MeeSix...\n\nNB: maybe it's better to add them as relations only and don't list them here"
                              },
                              "averageCreditCostCalculated": {
                                "type": "number",
                                "description": "Can be calculated by looking at the assistants."
                              },
                              "averageCreditCostStandardDeviationCalculated": {
                                "type": "number"
                              },
                              "__id": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      },
                      "required": ["$schema", "items"],
                      "description": "The data"
                    },
                    "schema": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/MainCapableJsonSchema"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The ActionSchema that describes the data in JSON\n\nFor making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
                    },
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not we can write to the schema"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether or not there are more items to be fetched"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow/create": {
      "post": {
        "tags": ["workflow"],
        "summary": "Create workflow",
        "operationId": "createWorkflow",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "slug": {
                          "type": "string"
                        },
                        "category": {
                          "type": "string"
                        },
                        "goal": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "$schema": {
                          "type": "string",
                          "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                        },
                        "projectRelativePath": {
                          "type": "string",
                          "description": "Where the item is/was stored"
                        },
                        "absolutePath": {
                          "type": "string",
                          "description": "Absolute item location (not always given)"
                        },
                        "modelName": {
                          "type": "string",
                          "description": "PascalCase name of the type interface of the model"
                        },
                        "owner_personSlug": {
                          "type": "string"
                        },
                        "policyContext": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Besides the general purpose context, we might provide some custom context.\n\nNot sure if this is needed, as getting the context from the database might also be a fine way to do it."
                        },
                        "policy": {
                          "type": "string",
                          "description": "The policy can be inferred from the message history and then be fine-tuned"
                        },
                        "workflowAssistants": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "personSlug": {
                                "type": "string",
                                "description": "Persona that was spawned to do this"
                              },
                              "person": {},
                              "chatMessages": {
                                "type": "array",
                                "items": {}
                              },
                              "relation": {
                                "description": "Relation could contain workflow details like the status"
                              },
                              "totalCreditPaid": {
                                "type": "number"
                              }
                            },
                            "required": ["personSlug"],
                            "additionalProperties": false
                          },
                          "description": "All executions of this workflow can be represented as spawned agents with chat history\n\nAfter the workflow is finished, the spawned agent despawns (dies) like a Mr. MeeSix...\n\nNB: maybe it's better to add them as relations only and don't list them here"
                        },
                        "averageCreditCostCalculated": {
                          "type": "number",
                          "description": "Can be calculated by looking at the assistants."
                        },
                        "averageCreditCostStandardDeviationCalculated": {
                          "type": "number"
                        },
                        "__id": {
                          "type": "string"
                        }
                      }
                    },
                    "description": "NB: If items in this array contain `__id` it will be overwriting that item if it's already there."
                  },
                  "shouldExecuteGridEntireRow": {
                    "type": "boolean"
                  },
                  "totalPriceCredit": {
                    "type": "number"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["items", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "result": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The rowIds created"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow/update": {
      "post": {
        "tags": ["workflow"],
        "summary": "Update workflow",
        "operationId": "updateWorkflow",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The id (indexed key) of the item to update"
                  },
                  "partialItem": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      },
                      "goal": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "$schema": {
                        "type": "string",
                        "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
                      },
                      "projectRelativePath": {
                        "type": "string",
                        "description": "Where the item is/was stored"
                      },
                      "absolutePath": {
                        "type": "string",
                        "description": "Absolute item location (not always given)"
                      },
                      "modelName": {
                        "type": "string",
                        "description": "PascalCase name of the type interface of the model"
                      },
                      "owner_personSlug": {
                        "type": "string"
                      },
                      "policyContext": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Besides the general purpose context, we might provide some custom context.\n\nNot sure if this is needed, as getting the context from the database might also be a fine way to do it."
                      },
                      "policy": {
                        "type": "string",
                        "description": "The policy can be inferred from the message history and then be fine-tuned"
                      },
                      "workflowAssistants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "personSlug": {
                              "type": "string",
                              "description": "Persona that was spawned to do this"
                            },
                            "person": {},
                            "chatMessages": {
                              "type": "array",
                              "items": {}
                            },
                            "relation": {
                              "description": "Relation could contain workflow details like the status"
                            },
                            "totalCreditPaid": {
                              "type": "number"
                            }
                          },
                          "required": ["personSlug"],
                          "additionalProperties": false
                        },
                        "description": "All executions of this workflow can be represented as spawned agents with chat history\n\nAfter the workflow is finished, the spawned agent despawns (dies) like a Mr. MeeSix...\n\nNB: maybe it's better to add them as relations only and don't list them here"
                      },
                      "averageCreditCostCalculated": {
                        "type": "number",
                        "description": "Can be calculated by looking at the assistants."
                      },
                      "averageCreditCostStandardDeviationCalculated": {
                        "type": "number"
                      },
                      "__id": {
                        "type": "string"
                      }
                    },
                    "description": "New (partial) value of the item. Will update all keys provided here. Please note that it cannot be set to 'undefined', but \"null\" is possible."
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["id", "partialItem", "projectRelativePath"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": ["isSuccessful", "message"],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow/execute": {
      "put": {
        "tags": ["workflow"],
        "summary": "Execute workflow",
        "operationId": "generateWorkflow",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["recalculate", "only-empty"]
                  },
                  "propertyKey": {
                    "type": "string",
                    "enum": [
                      "slug",
                      "category",
                      "goal",
                      "description",
                      "$schema",
                      "projectRelativePath",
                      "absolutePath",
                      "modelName",
                      "owner_personSlug",
                      "policyContext",
                      "policy",
                      "workflowAssistants",
                      "averageCreditCostCalculated",
                      "averageCreditCostStandardDeviationCalculated",
                      "__id"
                    ],
                    "description": "A single property calculation is done for the specified key"
                  },
                  "waitForResult": {
                    "type": "boolean",
                    "description": "NB: sometimes needed in case we rely on this result"
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["mode", "projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "canWrite": {
                      "type": "boolean",
                      "description": "Whether or not the schema can be written to"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow": {
      "delete": {
        "tags": ["workflow"],
        "summary": "Delete workflow",
        "operationId": "deleteWorkflow",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rowIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "authToken": {
                    "type": "string",
                    "description": "Should be provided from the endpoint, so we can use the users database without additional query to our own database"
                  }
                },
                "required": ["projectRelativePath", "rowIds"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Standard response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "removedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The row ids deleted (if any)"
                    },
                    "isSuccessful": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "priceCredit": {
                      "type": "number",
                      "description": "If given, overwrites `priceCredit` on the function, to substract from user credit\n\nNB: recently made required to make it easier to accumulate price. NB: Not a good idea! It'd add more boilerplate than it prevents. Way too many functions are free"
                    },
                    "isQueued": {
                      "type": "boolean",
                      "description": "if true, this states the function was successfully added to the queue (and not executed yet). Usually, should be added by a wrapper, not the function itself."
                    }
                  },
                  "required": ["isSuccessful"]
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Bearer",
        "description": "Your authToken should be provided"
      }
    },
    "schemas": {
      "StandardResponse": {
        "type": "object",
        "required": ["isSuccessful"],
        "properties": {
          "isSuccessful": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "priceCredit": {
            "type": "number"
          }
        }
      },
      "ModelItemPartial": {
        "$ref": "#/components/schemas/O",
        "description": "to be replaced by the model item in which each property is optional"
      },
      "O": {
        "type": "object"
      },
      "ModelKey": {
        "type": "string",
        "description": "to be replaced"
      },
      "ActionSchemaPrivacy": {
        "type": "string",
        "enum": ["public", "unlisted", "private"]
      },
      "ActionSchemaStatus": {
        "type": "string",
        "enum": ["queued", "waiting", "busy", "done"]
      },
      "JsonArrayStatus": {
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ActionSchemaStatus"
                  },
                  {
                    "not": {}
                  }
                ]
              }
            },
            {
              "not": {}
            }
          ]
        }
      },
      "JsonStatusDelta": {
        "type": "object",
        "properties": {
          "rowId": {
            "type": "string"
          },
          "propertyKey": {
            "type": "string"
          },
          "isSourcePluginUpdate": {
            "type": "boolean",
            "description": "This indicates the newValue contains an array of items. Should be done and awaited first if this is the case."
          },
          "newStatus": {
            "$ref": "#/components/schemas/ActionSchemaStatus"
          },
          "newValue": {}
        },
        "required": ["newStatus"],
        "additionalProperties": false,
        "description": "To be kept in the db\n\nTo be fetched every 1 second if the user is in the file. Is reset every time it is requested, and the delta transforms cell values one by one.\n\nNeeded in order to not require to do any refetches when things are loading, while showing loading indicators right."
      },
      "GridSpending": {
        "type": "object",
        "properties": {
          "priceCredit": {
            "type": "number"
          },
          "calculationsAmount": {
            "type": "number"
          },
          "priceCreditSinceLastEdit": {
            "type": "number"
          },
          "calculationsAmountSinceLastEdit": {
            "type": "number"
          }
        },
        "additionalProperties": false,
        "description": "NB: the priceCredit here has already taken the cost multiplier into account!"
      },
      "ModelItem": {
        "$ref": "#/components/schemas/O",
        "description": "to be replaced by the model item, including which keys are required or not"
      },
      "MainCapableJsonSchema": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "x-is-public": {
            "type": "boolean",
            "description": "If this is true, its a schema that is allowed to be read by anyone regardless of the data privacy"
          },
          "properties": {
            "type": "object",
            "properties": {
              "$schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string"
                  }
                },
                "required": ["type"],
                "additionalProperties": false
              },
              "items": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "creationPlugins": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CapableJsonSchemaPlugin"
                    },
                    "description": "CAPABLE JSON SCHEMA:Only works for arrays and object properties\n\nplugins to create more items. these are the sources\n\nNB: this plugin must always return an object with a \"result\" parameter\n\n- In case of column generations, if it's a string, it can be applied directly\n- In ase of column generations, if it's an object, the right key is chosen using a GPT normalization or GPT mapper\n\n- In case of array item generations, array items will be mapped using some sort of GPT Normalisations to the right column(s)\n- In case of array item generations, objects will be mapped to a single row to the right columns using the same technique"
                  },
                  "type": {
                    "type": "string"
                  },
                  "items": {
                    "type": "object",
                    "properties": {
                      "$ref": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "properties": {
                        "type": "object",
                        "description": "NB: each property can be a CapableJsonSchema (or JSON Schema) in itself!"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "required": ["items", "type"]
              }
            },
            "required": ["$schema", "items"],
            "additionalProperties": false
          },
          "definitions": {
            "type": "object"
          },
          "required": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": ["$schema", "type", "properties"],
        "additionalProperties": false,
        "description": "Properties a capable json schema must certainly have at its root\n\nNB: for making a un-circular open-api, I'm currently not referencing CapableJsonSchema!"
      },
      "CapableJsonSchemaPlugin": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "$ref": {
            "type": "string",
            "description": "TODO: Should be NamedParameters<functionName>\n\nTo make things deterministic, we can also reference the original uploaded file in a syntax like this: `File<projectRelativePath>`."
          },
          "ouptputMapFunction": {
            "type": "string",
            "description": "TODO: Map function stored as a string:\n\nE.g.:\n\n`response.results[0].title`\n\nThis can be evaluated in javascript, like:\n\n\n`const mapFunction = (response) => response.results[0].title` `const realResponse = mapFunction(response);`\n\nThis way we can always get what we want."
          },
          "code": {
            "type": "string",
            "description": "TODO: Optionally, this could be an alternative for using \"$openapi\" (or a complement). This could be code that can be evaluated in javascript/typescript on an edge worker.\n\nImagine this being code that can directly run on edge-workers, infinitely scalable? We now don't rely on creating openapis whatsoever. Instead, there is just this single openapi endpoint that is used for everything.\n\nOf course openapis can be better in many cases, since it is more standardised, but I think it could be very powerful to have this, especially for custom things that need to happen."
          },
          "runEveryPeriod": {
            "type": "string",
            "enum": ["day", "week", "hour", "instant"],
            "description": "TODO: In case of destination plugins it can be useful to run it every so many times"
          },
          "onChangeDependantBehavior": {
            "type": "string",
            "enum": ["ignore", "stale", "reset", "delete"],
            "description": "What should the dependant values do when this value changes?\n\nIf \"stale\", there needs to be an `isStatlePropertyName` given, so we can set it to stale."
          },
          "stalePropertyName": {
            "type": "string",
            "description": "If given, this could be a reference to another property that resolves to a boolean that, if true, tells that this value is stale."
          },
          "validPropertyName": {
            "type": "string",
            "description": "If given, this could be a reference to another property that resolves to a boolean that, if false, tells that this value is invalid"
          },
          "validityMs": {
            "type": "number",
            "description": "If given, after this amount of time, the value becomes stale."
          },
          "type": {
            "type": "string",
            "enum": ["creation", "validation", "destination", "upload", "table"]
          },
          "$openapi": {
            "$ref": "#/components/schemas/PluginOpenapiDetails",
            "description": "This can be the information required to access execute the function"
          },
          "condition": {
            "type": "string",
            "description": "If given, must resolve to true in order to run this function"
          },
          "outputLocation": {
            "type": "string",
            "description": "Simple localizer on the object. if defined, will use it as path in the object/array, like `a.b.c[0].d`"
          },
          "isVerticalExpandEnabled": {
            "type": "boolean",
            "description": "If true, this plugin should cause a vertical expansion\n\nThis means, for each row it is ran on, it will copy that row for each item in the resulting array.\n\nNB: If vertical expand is enabled, initial calculation will still work, including expansion, but recalculation is disabled as it would create exponential expansion."
          },
          "context": {
            "type": "object",
            "description": "Context given to the function. For strings, you'll be able to use variables here (using `${propertyName}` syntax). This needs to be known by the AI.\n\nFor row generation functions that have a partition function this needs to be generated on the fly (so it will be empty)"
          },
          "partitionContext": {
            "type": "object",
            "description": "For row generations with a partition function, this is the config"
          },
          "partitionContextsDone": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Keeps track of which partition function results have already been executed."
          },
          "propertyDependencies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Property keys in the same object that are required as context.\n\nThis is needed to know what can be auto-generated. We can only generate if all used variables aren't undefined/null.\n\nThe trick is to put actual logic in the functions themselves, not outside, in order to just require variables, not logic.\n\nThis can be inferred from the context as it contains variables that refer to other properties"
          },
          "priceCredit": {
            "type": "number",
            "description": "Cost estimation to run this plugin.\n\nThis is needed to give insight in costs for generations."
          }
        },
        "required": ["type"]
      },
      "PluginOpenapiDetails": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "emoji": {
            "type": "string"
          }
        },
        "required": ["url", "path", "method", "operationId"],
        "additionalProperties": false
      },
      "ActionSchema": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string",
            "description": "Name of the actionschema. This should determine the location where its saved"
          },
          "privacy": {
            "type": "string",
            "description": ""
          },
          "category": {
            "type": "string",
            "description": "Can be filled in by the user"
          },
          "rowGenerationStatus": {
            "type": "string",
            "description": "status indicating whether or not rows are being generated"
          },
          "status": {
            "type": "string",
            "description": "State concerning the status of (re)calculation behavior"
          },
          "lastOperationAt": {
            "type": "string",
            "description": "lastOperationAt"
          },
          "lastSizeCalculatedAt": {
            "type": "string",
            "description": "lastSizeCalculatedAt"
          },
          "projectSizeBytes": {
            "type": "string",
            "description": "projectSizeBytes"
          },
          "delta": {
            "type": "string",
            "description": "delta"
          },
          "columnSpending": {
            "type": "string",
            "description": "columnSpending"
          },
          "totalSpending": {
            "type": "string",
            "description": "totalSpending"
          },
          "itemsAmount": {
            "type": "string",
            "description": "Amount of items currently in the db. Should be able to get this from the plugin of the name of the db at some point"
          },
          "schema": {
            "type": "string",
            "description": "Could be a file read"
          },
          "schemaDescription": {
            "type": "string",
            "description": "schemaDescription",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "getKeyFromObjectPlugin",
                  "method": "POST",
                  "path": "/function/getKeyFromObjectPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "type": "creation",
                "context": {
                  "objectString": "${schema}",
                  "location": "description"
                },
                "outputLocation": "result",
                "propertyDependencies": ["schema"]
              }
            ]
          }
        }
      },
      "ActionSchemaPlugin": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string",
            "description": "Hostname e.g. api.codefromanywhere.com"
          },
          "headers": {
            "type": "string",
            "description": ""
          },
          "openapi": {
            "type": "string",
            "description": "Should be able to scrape this"
          },
          "hasLocalhost": {
            "type": "boolean",
            "description": "If true, this means its our own server so if we're running localhost, this thing should also take localhost"
          }
        }
      },
      "AiPlugin": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "extra": {
            "type": "object",
            "description": "anything you want to pass to this plugin"
          },
          "productionStatus": {
            "type": "string",
            "enum": ["experimental", "alpha", "beta", "production"],
            "description": "In order for a plugin to be visible, this needs to be beta or production"
          },
          "lifecycleStatus": {
            "type": "string",
            "enum": ["wip", "buggy", "broken", "deprecated"],
            "description": "It'd be good to track this for every function. It'd be even better to come up with this automatically using a LLM that generates tests based on the given purpose."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isPublic": {
            "type": "boolean",
            "description": "For local plugins, this is false if one of the underlying functions isn't public"
          },
          "source": {
            "type": "string",
            "enum": [
              "local",
              "customDomain",
              "replicate",
              "huggingface",
              "bananadev"
            ],
            "description": "Where the AI Plugin has been found"
          },
          "ipRangesAllowed": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start": {
                  "type": "string"
                },
                "end": {
                  "type": "string"
                }
              },
              "required": ["start"],
              "additionalProperties": false
            },
            "description": "To be taken over from managed domain"
          },
          "slug": {
            "type": "string",
            "description": "Unique identifier for the plugin.\n\n- Can be a domain containing the ai-plugin in `.well-known/ai-plugin.json`. Must be served on https. Can be a subdomain.\n\n- Can be name of a function in kebab-case"
          },
          "persona": {},
          "isLocal": {
            "type": "boolean",
            "description": "DEPRECATED: should use `source`.\n\nIf true, this is a locally served plugin and can be accessed by calling the function directly from the sdk"
          },
          "packageName": {
            "type": "string",
            "description": "in case of local plugin, the operation name should be here"
          },
          "status": {
            "type": "number",
            "description": "200: if the plugin is found and stable 404: if the plugin is not found on the specified domain (maybe they're down)\n\n...and other Rest Status codes"
          },
          "isUnstable": {
            "type": "boolean",
            "description": "If the plugin is found and functional but sometimes returns fail, e.g. due to a rate-limit"
          },
          "isUnauthorized": {
            "type": "boolean",
            "description": "if the plugin is found including openapi, but not available because auth is not working"
          },
          "statusMessage": {
            "type": "string",
            "description": "Message I got from the fetch, e.g. redirect or whatever"
          },
          "emoji": {
            "type": "string"
          },
          "aiPluginJson": {},
          "openapi": {
            "description": "this is too difficult for parsing"
          },
          "capabilitiesObject": {
            "description": "Almost entirely based on openapi, but still good to store because it is often needed"
          },
          "platforms": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": ["openai", "chatai"]
            },
            "description": "At which platforms is this plugin available in the store? For now"
          },
          "generatedInputs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Testing stuff"
          },
          "generatedInputsVersion": {
            "type": "string",
            "description": "Should be matching to `aiPluginJson.schema_version`."
          },
          "testResultAt": {
            "type": "number"
          },
          "testResultVersion": {
            "type": "string",
            "description": "Usually should be done right after generating new inputs"
          },
          "testResultSuccessful": {
            "type": "number"
          },
          "testResultFailed": {
            "type": "number"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "AssistantEducativeMaterial": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "personSlug": {
            "type": "string"
          },
          "index": {
            "type": "number",
            "description": "If given, the educative material can be sorted on this number, so someone can receive this material day by day."
          },
          "text": {
            "type": "string"
          },
          "storageRelativeAssetPath": {
            "type": "string",
            "description": "Could be an asset that is related to this that needs to be sent along"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "BrowserPageVisit": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "owner_personSlug": {
            "type": "string",
            "description": "If it was executed in a browser of a user using a chrome extension, this can be stored"
          },
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "websiteDomainSlug": {
            "type": "string",
            "description": "this is the domain"
          },
          "websiteDomain": {},
          "managedDomain": {},
          "title": {
            "type": "string"
          },
          "createdAt": {
            "type": "number"
          },
          "isUrlRobotsAllowed": {
            "type": "boolean"
          },
          "isUrlInSitemap": {
            "type": "boolean"
          },
          "serpResult": {
            "type": "string",
            "enum": ["none", "index", "exact"],
            "description": "What we find if we google the url. Index means it doesn't go to the exact url yet, but rather a page on a more general route"
          },
          "serpResultSummary": {
            "type": "string",
            "description": "if we google the url and/or title, what do we find?"
          },
          "browserScrapedContent": {
            "type": "string"
          },
          "browserScrapedContentStripped": {
            "type": "string",
            "description": "as close to just the relevant text as possible"
          },
          "browsersScrapedContentSummary": {
            "type": "string"
          },
          "fetchScrapedContent": {
            "type": "string"
          },
          "fetchScrapedContentStripped": {
            "type": "string"
          },
          "fetchScrapedContentSummary": {
            "type": "string"
          },
          "localScrapedContent": {
            "type": "string"
          },
          "localScrapedContentStripped": {
            "type": "string"
          },
          "localScrapedContentSummary": {
            "type": "string"
          },
          "remotePuppeteerScrapedContent": {
            "type": "string"
          },
          "remotePuppeteerScrapedContentStripped": {
            "type": "string"
          },
          "remotePuppeteerScrapedContentSummary": {
            "type": "string"
          },
          "finalSummary": {
            "type": "string"
          },
          "isAuthwall": {
            "type": "boolean"
          },
          "isPaywall": {
            "type": "boolean"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "CalendarEvent": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string",
            "description": "As a person doesn't have more than, let's say, 10000 events, this can be a 4 letter unique identifier, short enough to make it easy for the LLM"
          },
          "summary": {
            "type": "string"
          },
          "createdAt": {
            "type": "number"
          },
          "updatedAt": {
            "type": "number"
          },
          "startAt": {
            "type": "number",
            "description": "Start date in UNIX milliseconds"
          },
          "endAt": {
            "type": "number",
            "description": "End date in UNIX milliseconds"
          },
          "description": {
            "type": "string",
            "description": "Description about the event"
          },
          "status": {
            "type": "string",
            "enum": ["tentative", "confirmed", "canceled"],
            "description": "RSVP"
          },
          "location": {
            "type": "string",
            "description": "Can be a meeting link as well as a physical location"
          },
          "attendees": {
            "type": "string"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          }
        }
      },
      "CallConference": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "id": {
            "type": "string"
          },
          "createdAt": {
            "type": "number",
            "description": "Old (buggy) conferences can be auto-removed"
          },
          "isFinished": {
            "type": "boolean",
            "description": "If true, this isn't active anymore. Can be deleted also maybe."
          },
          "participants": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "personSlug": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "enum": ["unanswered", "declined", "accepted", "finished"]
                },
                "isRemote": {
                  "type": "boolean",
                  "description": "If true, the audio should be streamed and the transcription is processed differently"
                },
                "recordingUrl": {
                  "type": "string"
                },
                "recordingStartAt": {
                  "type": "number"
                },
                "recordingEndAt": {
                  "type": "number"
                }
              },
              "required": ["personSlug", "status"],
              "additionalProperties": false
            },
            "description": "Participants into the call. Will be possible to later add more people, both remote and IRL. People can also leave and join again potentially"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "ChatMessage": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "personSlug": {
            "type": "string",
            "description": "Person that sent the message"
          },
          "relation_personSlug": {
            "type": "string",
            "description": "is empty for groups"
          },
          "date": {
            "type": "string"
          },
          "createdAt": {
            "type": "number"
          },
          "messagingChannel": {
            "$ref": "#/components/schemas/MessagingChannel",
            "description": "where did the message come from or where is it sent to?"
          },
          "direction": {
            "type": "string",
            "enum": ["received", "sent"],
            "description": "If sent, the dicection is \"relation -> person\" If received, the direction is \"person -> relation\""
          },
          "status": {
            "type": "string",
            "enum": ["sent", "received", "read", "sending"],
            "description": "logic to do the double checkmark thingy a la whatsapp"
          },
          "message": {
            "type": "string",
            "description": "Original message. Can be:\n\n- text message\n- transcribed voice message\n- description of video, audio, image\n- textual content of textfile, pdf or other"
          },
          "messageLanguage": {
            "type": "string",
            "description": "Original message language"
          },
          "englishMessage": {
            "type": "string",
            "description": "Used for prompts and summaries etc."
          },
          "preferredLanguageMessage": {
            "type": "string",
            "description": "Message, translated to the preferred language of the user"
          },
          "markdownHelperAugmentedMessage": {
            "type": "string",
            "description": "Message, augmented with helper language words, using markdown"
          },
          "creditCost": {
            "type": "number",
            "description": "total cost for this message (including all assets, generation, etc). Useful to count the cost for a certain channel, maybe?"
          },
          "isPaywallMessage": {
            "type": "boolean"
          },
          "whatsappMessageSid": {
            "type": "string",
            "description": "In case of whatsapp, sid must be here"
          },
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BackendAsset"
            }
          },
          "scene": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageAsset"
            },
            "description": "Can be automatically attached, based on the prompts, to allow for video creation based on a conversation\n\nExample scene assets:\n\n- background music/sound effects\n- background image/gif/video"
          },
          "location": {
            "$ref": "#/components/schemas/MessageLocation"
          },
          "replied_chatMessageCreatedAt": {
            "type": "number"
          },
          "replied_chatMessage": {
            "description": "Reference to another one of itself."
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "MessagingChannel": {
        "type": "string",
        "enum": ["whatsapp", "email", "sms", "messenger", "web", "call"]
      },
      "BackendAsset": {
        "type": "object",
        "properties": {
          "alt": {
            "type": "string",
            "description": "Stored value\n\nAlt text for the asset"
          },
          "relativePath": {
            "type": "string",
            "description": "Stored value\n\nRelative path, relative to the location the asset is defined in.\n\nOnly available if the asset was already processed by a backend. Before backend processing, only `temporaryDestination` is available.\n\nChanging the `relativePath` shouldn't do anything, it can only be changed by backend processing by giving a new `temporaryDestination`, or by changing the `name`."
          },
          "name": {
            "type": "string",
            "description": "Not stored\n\nNot given by the backend data, but can be SENT to the backend.\n\nShould not be stored, but if you change this value and send it to the backend, it should rename the file and thus the relativePath stored should change.\n\nNB: I'm not sure how to solve having multiple references to a single file. If this occurs, which is hard to prevent if allowing manual editing of data, it may be hard to prevent dead links if someone changes the name of a file that is also refered to in other places. In this case, it would be ideal if all references also would be renamed, but it may be hard to find them. Even if we solve this, it's still possible to get dead links if someone renames the file (or removes it) manually. This should be taken into account, and may not break anything!"
          },
          "temporaryDestination": {
            "type": "string",
            "description": "Not stored\n\nFilename after uploading in the temporary folder. should still be moved to its final location\n\nOnly available straight after uploading. After the function processes the asset, this is removed and a `relativePath` is created."
          },
          "projectRelativeReferencingFilePath": {
            "type": "string",
            "description": "Not stored\n\nNeeds to be there before calling `processAsset`. Should be augmented to the backendAsset in the frontend, before sending it to the backend.\n\nLocation of the place where the asset is referenced\n\n- markdown file (or folder where it is located)\n- typescript file (or folder where it is located)\n- database file (or folder where it is located)"
          },
          "modelName": {
            "type": "string",
            "description": "Not stored\n\nNeeds to be there before calling `processAsset`. Should be augmented to the backendAsset in the frontend, before sending it to the backend.\n\nModel that the asset is related to"
          },
          "absoluteUrl": {
            "type": "string",
            "description": "NOT STORED\n\nCan be available in case it's an asset from an external source URL for example within md.\n\nAlso can be set in case it's a static asset from a next project"
          }
        },
        "additionalProperties": false,
        "description": "Part of the asset that should be sent to the backend. The rest should frontend-only\n\nSome values are stored, some are not"
      },
      "MessageAsset": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "should be a remotely accessible url (e.g. from twilio)"
          },
          "filename": {
            "type": "string",
            "description": "file is expected to be in the same folder"
          },
          "backendAsset": {
            "$ref": "#/components/schemas/BackendAsset",
            "description": "should have `relativePath`"
          },
          "assetType": {
            "$ref": "#/components/schemas/AssetType"
          },
          "isVcard": {
            "type": "boolean"
          }
        },
        "required": ["url", "assetType"],
        "additionalProperties": false
      },
      "AssetType": {
        "type": "string",
        "enum": ["video", "audio", "image", "text", "other"],
        "description": "Possible Asset Types\n\nLater, maybe also support: \"markdown\",\"json\",\"typescript\""
      },
      "MessageLocation": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "address": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "required": ["latitude", "longitude"],
        "additionalProperties": false
      },
      "ContextualPrompt": {
        "type": "object",
        "properties": {
          "contextType": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If given, will be used to filter the selection of prompts to match the context type"
          },
          "instantExecution": {
            "type": "boolean"
          },
          "isFavorite": {
            "type": "boolean"
          },
          "categoryStack": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pricing": {
            "type": "string",
            "enum": ["bad", "good", "premium", "enterprise", "private"]
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "category": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "descriptive name of what the prompt does, the same way as you would name a function.\n\nUsed to generate the name of the function"
          },
          "personaSlug": {
            "type": "string",
            "description": "Can be used to create links easily for the chatbot, which can be shown on the bot landing page, among other things"
          },
          "title": {
            "type": "string",
            "description": "Short description of the function.\n\nUsed to be added to as a doc-comment when generating a function for the prompt"
          },
          "description": {
            "type": "string",
            "description": "Bit longer description of the prompt"
          },
          "scopeProjectRelativePath": {
            "type": "string",
            "description": "if given, should be a path to a file or folder, so the prompt will never be shown outside of this scope\n\nNever stored! Is found based on the location of the file in your file system"
          },
          "model": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LanguageModelEnum"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LanguageModelEnum"
                }
              }
            ],
            "description": "Which models can this be applied on?"
          },
          "promptContent": {
            "type": "string",
            "description": "Only prompt is stored (string)"
          },
          "folderContentContext": {
            "type": "string",
            "enum": ["summary", "flat", "recursive"],
            "description": "Variable: `${folder}`\n\nIf set to `flat`, all folder content will be added as context, without sub-folders\n\nIf set to `recursive`, all folder content will be added as context, including sub-folders\n\nIf set to `summary-flat`/`summary-recursive`, a key-value with \"filename: summary\" with a one-line summary of the content of the file/folder will be added. Folder summaries must be longer.\n\nIDEA: if you have any question about your complete codebase, you can do a recurisve search in files/folders, taking all the relevant summaries every time, and doing a prompt for every result that might have the answer.\n\n1) First we need to collect the relevant information 2) Then we need to prune the relevant information 3) Then we can answer the question based on truth that links to files\n\nIf I can do this, I have a very powerful search engine."
          },
          "usesContext": {
            "type": "boolean",
            "description": "Variable: ${context}\n\nWhether or not the prompt requires the context\n\nCan be a file contents, but can also be the contents of an HTML page"
          },
          "usesSelection": {
            "type": "boolean",
            "description": "Variable: ${selection}\n\nWhether or not the prompt requires the selection"
          },
          "usesAnyContext": {
            "type": "boolean",
            "description": "Variable: ${any}\n\nIf true, will return this prompt in any context prompt, as selection results because it can use any of them as its variable. It will use the smallest one available."
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "LanguageModelEnum": {
        "type": "string",
        "enum": ["chat-gpt", "stable-diffusion-2"]
      },
      "ContextualPromptResult": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "id": {
            "type": "string"
          },
          "createdAt": {
            "type": "number",
            "description": "When was the result created"
          },
          "isValidCalculated": {
            "type": "boolean",
            "description": "It's a crucial question whether prompt results are still valid once the actual file has been altered. If we have prompts in a chain, it may be so that all of them become invalid\n\nFor example, if a very fundamental belief changes, I need to alter all generated inferences for that belief.\n\nI think it might be better to add indexation on the validity maybe, if beliefs change, and mark the file as \"old\" if I want to write a new version. The frontmatter may change, but we should probably keep the content immutable because it has too many implications if we don't\n\nIt is the same as the O in the SOLID principle!"
          },
          "isFake": {
            "type": "boolean",
            "description": "Fake result for testing, marked to be able to easily clean it up"
          },
          "contextualPromptSlug": {
            "type": "string",
            "description": "Contextual prompt this prompt was based on. We don't have the acutal prompt here since we use an extended convention from `fs-orm`"
          },
          "prompt_projectRelativePath": {
            "type": "string",
            "description": "Path the result is about, if any. Can also be a folder!"
          },
          "prompt": {
            "type": "string",
            "description": "Prompt string of the prompt, but only of this very question, not all previous things if this is a later item in a thread, that can be stored in another result."
          },
          "selectionString": {
            "type": "string",
            "description": "In case the prompt had `.useSelection: true`, this should be the selected string, so the location can be found in the markdown, so the markdown can be augmented with a link to the result."
          },
          "isFavorite": {
            "type": "boolean",
            "description": "If true, will get priority in where it's shown"
          },
          "resultText": {
            "type": "string"
          },
          "resultAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BackendAsset"
            }
          },
          "thread": {
            "type": "string",
            "description": "Unique ID for this thread, generated if not given to the prompt"
          },
          "noteContent": {
            "type": "string",
            "description": "Note you can attach to the Prompt result."
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "DataPipeline": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": ["draft", "ongoing", "paused", "over-budget"]
          },
          "owner_personSlug": {
            "type": "string",
            "description": "Who is paying for this (and is granted access to the results)"
          },
          "queueIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Queue items that have been created for this pipeline"
          },
          "queues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Queue"
            }
          },
          "maxBudgetPerDayEuro": {
            "type": "number",
            "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
          },
          "maxTotalBudgetEuro": {
            "type": "number"
          },
          "totalCostEuro": {
            "type": "number",
            "description": "Total budget spent until now"
          },
          "totalCostTodayEuro": {
            "type": "number",
            "description": "Total budget spent today"
          },
          "estimatedProfitEuro": {
            "type": "number",
            "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
          },
          "notesDescription": {
            "type": "string",
            "description": "Notes by the owner"
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "prospecting_groupSlug": {
            "type": "string",
            "description": "Marking the person once we inserted them into the database. This group can be defined as \"may be target audience\""
          },
          "prospecting_group": {},
          "strategyDescription": {
            "type": "string",
            "description": "Human language description of how we're going to find them"
          },
          "mrklResult": {
            "type": "string",
            "description": "Edit strategy just as long until you like the MRKL result. If it's a good result, you can start the pipeline, which will add it to the queue."
          },
          "mapFilterSequence": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "gptMapSlug": {
                  "type": "string"
                },
                "filterFunctionName": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "description": "Must be a list of maps and filters, to be executed in sequence for each item in the `prospecting_group`.\n\nNB: each item in the array should only contain either gptMap or filterfunction"
          }
        },
        "required": [
          "category",
          "modelName",
          "notesDescription",
          "owner_personSlug",
          "prospecting_groupSlug",
          "slug",
          "status",
          "strategyDescription"
        ],
        "additionalProperties": false,
        "description": "Pipeline responsible for inserting AND augmenting persons from:\n\n- LLM knowledge\n- Public internet data\n- Our own person database\n- manually entered CSV's\n- Conversations with the person\n\nNB: at a later stage, we'll have many of these and they can be auto-created by AI\n--------\n\nDescription List of persons sources:\n\n- Pick person db filter (`gptGet` with `gptFilter`)\n- LLM knowledge (`gptCreateHierarchy` with `gptMap`)\n- Manual CSV data entry (`analysePersonListFile`)\n- `scrapePlacesUntilExhausted`\n\nPerson/company augmentation:\n\n- `analysePerson`\n- `conversation-analytics` or `llm-analytics` for texts in general\n- many more sources (web data, company data) that can be used to augment existing data\n\nChallenges:\n\n1. Doing everything depth-first 2. Doing just enough and staying under a budget 3. Every batch, store which part is done and should not be done again. 4. Based on a human prompt, come up with a combination of these things until we have what we need."
      },
      "Queue": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "id": {
            "type": "string"
          },
          "createdAt": {
            "type": "number"
          },
          "owner_personSlug": {
            "type": "string",
            "description": "Useful to make an overview for active queue items for a logged in person"
          },
          "functionName": {
            "type": "string"
          },
          "parameters": {
            "type": "array",
            "items": {}
          },
          "result": {
            "description": "JSON result of the function"
          },
          "status": {
            "type": "string",
            "enum": ["queued", "paused", "working", "canceled", "finished"]
          },
          "statusMessage": {
            "type": "string",
            "description": "Can be set to show the status of the function to the user, for example, with a conversion, a percentage indicator for completeness"
          },
          "durationEstimationSeconds": {
            "type": "number"
          },
          "isUsingFullOpenAiBandwidth": {
            "type": "boolean"
          },
          "openAiEmail": {
            "type": "string"
          },
          "aliveAt": {
            "type": "number",
            "description": "Timestamp indicating the last time the function said it was still being executed. If this is recent enough, it must be assumed the function is being executed. Can be reset at server startup"
          },
          "partitionIndex": {
            "type": "number",
            "description": "Which partition are we?\n\nIf this is given, the function should take this and calculate the partitions array based on the input parameters.\n\nIf you want to keep track of this, the queue function should keep track of it by updating it every partition done.\n\nNB: partition functions can also be called \"Checkpoints\""
          },
          "maximumCreditCost": {
            "type": "number",
            "description": "Will stop once this amount is reached. Useful for keeping a budget. Will count based on"
          },
          "maximumPartitionAmount": {
            "type": "number",
            "description": "Will stop once this amount of partitions are done. Useful if you know how many parts you want to process at once"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "Dataset": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetFilter"
            },
            "description": "Filters are applied after each other"
          },
          "sort": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetSort"
            }
          },
          "maxRows": {
            "type": "number",
            "description": "Specify a max amount of items n"
          },
          "startFromIndex": {
            "type": "number",
            "description": "If specified, slices the sorted array to omit the first n items;"
          },
          "objectParameterKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If specified, will only include these parameter keys of the model object. Otherwise all keys will be taken"
          },
          "ignoreObjectParameterKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If specified, will omit these keys when creating the dataset"
          },
          "view": {},
          "authorizations": {
            "$ref": "#/components/schemas/GroupAuthorizationObject"
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "The model you want to make a dataset from"
          },
          "slug": {
            "type": "string"
          },
          "price": {
            "$ref": "#/components/schemas/Price",
            "description": "How much does this dataset cost?"
          },
          "defaultView": {
            "$ref": "#/components/schemas/ModelViewEnum"
          },
          "allowedModelViews": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelViewEnum"
            }
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "DatasetFilter": {
        "type": "object",
        "properties": {
          "objectParameterKey": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "description": "This will sometines need to be casted"
          },
          "operator": {
            "$ref": "#/components/schemas/DatasetFilterOperator",
            "description": "Uses type equality"
          }
        },
        "required": ["objectParameterKey", "value", "operator"],
        "additionalProperties": false,
        "description": "Can be better, see https://www.w3schools.com/js/js_comparisons.asp"
      },
      "DatasetFilterOperator": {
        "type": "string",
        "enum": [
          "includesLetters",
          "includes",
          "startsWith",
          "endsWith",
          "equal",
          "notEqual",
          "greaterThan",
          "greaterThanOrEqual",
          "lessThan",
          "lessThanOrEqual"
        ]
      },
      "DatasetSort": {
        "type": "object",
        "properties": {
          "objectParameterKey": {
            "type": "string"
          },
          "sortDirection": {
            "type": "string",
            "enum": ["ascending", "descending"],
            "description": "sort normally or in reverse order"
          },
          "sortFunctionName": {
            "type": "string",
            "description": "TODO:"
          }
        },
        "required": ["objectParameterKey"],
        "additionalProperties": false,
        "description": "Sort by comparing the two values using the `Array.sort` method and Greater than and Less than operators."
      },
      "GroupAuthorizationObject": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        },
        "description": "The key, groupName, is a slug of a group, or a wildcard (*) for all groups\n\nThe value should be a concatenation of all operations permitted in this dataset.\n\n- C for create\n- R for read\n- U for update\n- D for delete\n\nExample: `{ \"cfa\": \"CRUD\" }` would say that this dataset can be fully altered and read by the \"cfa\" group\n\nFor `Dataset`s this should be applied through the database.\n\nFor database models, this should be applied in frontmatter, like this:\n\n```\n--- authorizations: cfa:crud, public:r\n--- ```\n\nThe above applies on the database.\n\nFor functions, see StandardFunctionConfig\n\nFor memory (text), you can apply authorizations in frontmatter of the markdown, in the same way as you can for data (canRead/canWrite are the only ones needed).\n\nNB: In a later stage we may add more permissions like \"isSearchable (S)\""
      },
      "Price": {
        "$ref": "#/components/schemas/Euro",
        "description": "TLDR;EUROS\n\nA price is a number indicating the relative cost. Absolute cost is calculated by many other factors\n\nFor now, we're going to keep it simple: 1 `Price` is equal to 1 Eurocent.\n\nLater we can add all kinds of extra conversion:\n\n- currency support\n- king os currency\n- lower cost for poorer people\n\netc...\n\nFirst we need to start making sales before we can add such complexity."
      },
      "Euro": {
        "type": "number"
      },
      "ModelViewEnum": {
        "type": "string",
        "enum": ["table", "grid", "timeline", "tree"],
        "description": "Models should be able to be shown in multiple different views:\n\n- Table: useful to show models with much details\n- Grid: useful to show models with a visual aspect and less details\n- Timeline: useful to show text-related models\n- Tree: useful to show a hierarchy"
      },
      "Device": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string",
            "description": "AuthToken is used to identify a device. Unique identifier that is saved in the devices browser/app.\n\nIf the authToken is the same, we can be sure that the device is matched, even if the IP is different.\n\nShould be identical to ID"
          },
          "currentPersonSlug": {
            "$ref": "#/components/schemas/Slug",
            "description": "A device can switch between persons, by changing this value"
          },
          "personSlugs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Id"
            },
            "description": "If the device is authenticated, this should be set.\n\nCan be unset by the person"
          },
          "ip": {
            "type": "string",
            "description": "The ip of the device. Can be a local IP or remote IP.\n\nNB: Port is not included"
          },
          "city": {
            "type": "string"
          },
          "position": {
            "$ref": "#/components/schemas/Position"
          },
          "positionRadiusKm": {
            "type": "number"
          },
          "country": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "userAgentString": {
            "type": "string",
            "description": "Raw `User-Agent` header.\n\nNOT used to identify the device, since the device can already be connected to a person!"
          },
          "name": {
            "type": "string",
            "description": "Name of the device, calculated based on metadata like location, os, and ip\n\nCan be edited by the user"
          },
          "hasPapi": {
            "type": "boolean",
            "description": "Is set to true if the devices IP is pinged and seems to have something that resembles a King OS PAPI."
          },
          "isOnlineCalculated": {
            "type": "boolean",
            "description": "Returning `true` or `false` indicating whether or not the IP is giving a response"
          },
          "lastOnlineAt": {
            "type": "number",
            "description": "Whenever the peer is online, this should update"
          },
          "isLocalIpCalculated": {
            "type": "boolean",
            "description": "if true, the above IP is a local one, meaning it cannot be accessed from outside of this network\n\nThis is easy to determine: local IP's must start with \"192.168\""
          },
          "isFavorite": {
            "type": "boolean",
            "description": "if `true`, this device will show on top"
          },
          "isPrivate": {
            "type": "boolean",
            "description": "If true, this peer should not be shared"
          },
          "lastSyncDatabaseAtObject": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            },
            "description": "last sync of any model\n\nUseful for example for a p2p messaging"
          },
          "persons": {
            "type": "array",
            "items": {},
            "description": "reference to another model"
          },
          "currentPersonCalculated": {
            "$ref": "#/components/schemas/Person",
            "description": "If you have a currentPersonId, it is calculated and provided by selecting it from the persons array\n\nFor now, only provided by functioncontext"
          },
          "appOperationsCalculated": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppOperation"
            },
            "description": "Calculated all operations that can be exposed as apps. This is taken from `getAllAppOperations` function"
          },
          "authenticationMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuthenticationMethod"
            },
            "description": "DEPRECATED: Going to move to `Person.authentication` in favor of simplicity.\n\nLater, we may need a `LoginAttempt` Model in order to facilitate 2FA because it may take multiple steps to log someone in.\n\nFor now, you're immediately logged in once the password or OTP matches the Person, and you can immediately set `currentPersonId` and `personIds`\n\nIf the `Device` is not identified as a person yet, this can be configured to authenticate with different methods. Once it matches to a person, this can be cleared and `personId` can be attached."
          },
          "paymentLink": {
            "type": "string",
            "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
          },
          "paymentLinkCreatedAt": {
            "type": "number",
            "description": "Date the payment link was created so it's not too old"
          }
        }
      },
      "Position": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          }
        },
        "required": ["latitude", "longitude"],
        "additionalProperties": false
      },
      "Id": {
        "type": "string",
        "description": "Should be an unique string By default, you can use `generateId()` to generate a random string of 16 characters. If you wish, you can also use any other string, as long as you are sure it's unique.\n\n# Background Info\n\nazAZ09 characters are easy to copy and provide 62 characters. the goal of an id is to be unique.\n\nthe advantage of a random id compared to an numeric id starting with 1 with auto increment is that you can set them up decentralised.\n\nthe change of duplicate ids gets bigger once you make them shorter the change of finding an existing id gets bigger once you make them shorter\n\nAn Id with 12 characters would provide 3.22e21 combinations.\n\nWhat is the change of duplicate ids? This depends on the amount of identifyable items in the data What is the change of guessing an id? This depends on speed of a brute force attack and the amount of available datapoints. If you can guess 10000 times per second, you can make 864.000.000 guesses. A billion guesses on a dataset of a billion datapoints yields 3226 correct ids on average.\n\nWhy make an id short? I don't know if there's an important reason.\n\nAll in all, I think we should make ids 24 characters by default. This would make it very easy to store, yet, with more than E42 combinations, make it nearly impossible to get duplication or brute force hits.\n\nAn id would look like this:\n\n``` { \"id\": \"sk2EcW9AkZpksk2EcW9AkZpk\" } ```\n\nLooks good to me! Don't think about it and just keep it simple. We can always migrate later to a bigger amount, but I don't see good reason to keep it smaller than this."
      },
      "Slug": {
        "type": "string",
        "description": "use this for any identifier that's not an Id-type. Usually this is a kebab-case version of a written text, but it can also be a file path, for example."
      },
      "Person": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string"
          },
          "authToken": {
            "type": "string",
            "description": "authToken"
          },
          "createdAt": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "phoneNumber": {
            "type": "string",
            "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
          },
          "isPhoneNumberVerified": {
            "type": "boolean"
          },
          "whatsappPhoneNumber": {
            "type": "string",
            "description": "Phone number for whatsapp\n\nNB: may be the same as cellular, but not required."
          },
          "isWhatsappPhoneNumberVerified": {
            "type": "boolean"
          },
          "email": {
            "type": "string",
            "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
          },
          "isEmailVerified": {
            "type": "boolean"
          },
          "googlePlacesInfo": {
            "type": "object",
            "properties": {
              "rating": {
                "type": "number"
              },
              "priceLevel": {
                "type": "string"
              },
              "ratingCount": {
                "type": "number"
              },
              "category": {
                "type": "string"
              },
              "cid": {
                "type": "string"
              },
              "placeId": {
                "type": "string"
              },
              "thumbnailUrl": {
                "type": "string"
              }
            },
            "required": [
              "rating",
              "priceLevel",
              "ratingCount",
              "category",
              "cid",
              "placeId"
            ],
            "additionalProperties": false
          },
          "isPhoneNumberPublic": {
            "type": "boolean"
          },
          "isEmailPublic": {
            "type": "boolean"
          },
          "fullName": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "profession": {
            "type": ["string", "null"]
          },
          "interests": {
            "type": ["string", "null"]
          },
          "address": {
            "type": ["string", "null"]
          },
          "companies": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "summary": {
            "type": ["string", "null"]
          },
          "followUpSearchQueries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subscriptionType": {
            "type": "string",
            "enum": ["stripe", "gift"],
            "description": "In case of 'gift' it will not be removed"
          },
          "paymentAuthToken": {
            "type": "string",
            "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
          },
          "stripeCustomerEmail": {
            "type": "string",
            "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
          },
          "hasSubscription": {
            "type": "boolean",
            "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
          },
          "paymentLink": {
            "type": "string",
            "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
          },
          "paymentLinkCreatedAt": {
            "type": "number",
            "description": "Date the payment link was created so it's not too old"
          },
          "paymentLinkExpiresAt": {
            "type": "number"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "isWhatsappPhoneNumberPublic": {
            "type": "boolean"
          },
          "hasPhoneNumberCalculated": {
            "type": "boolean"
          },
          "hasWhatsappPhoneNumberCalculated": {
            "type": "boolean"
          },
          "hasEmailCalculated": {
            "type": "boolean"
          },
          "pictureImages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "emoji": {
            "type": "string"
          },
          "betaMode": {
            "type": "string",
            "enum": ["alpha", "beta"]
          },
          "isAlphaAllowed": {
            "type": "boolean",
            "description": "if true, user can set betaMode to alpha too. Beta is always allowed"
          },
          "lastAnalysedAt": {
            "type": "number",
            "description": "last analysed"
          },
          "isChatAnonymousMode": {
            "type": "boolean",
            "description": "if true, this person is just there for looking at the chat, not responding. This means it needs to be anonymous and you shouldn't be able to see the name and phone number of the relations. For now, this can be frontend-only to keep it simple."
          },
          "goalsDescription": {
            "type": "string",
            "description": "Goals to be used in the CRM"
          },
          "crud_personaSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "personas that this person should have the right for to crud"
          },
          "isPersona": {
            "type": "boolean",
            "description": "Todo: Replace this with groupSlugs[\"persona\"] and refactor all personas to be in this group."
          },
          "lastActivityAt": {
            "type": "number",
            "description": "used for whatsapp messages to determine the users last message"
          },
          "lastActivity_personSlug": {
            "type": "string"
          },
          "isEmailSubscribed": {
            "type": "boolean"
          },
          "messengerId": {
            "type": "string"
          },
          "bio": {
            "type": "string",
            "description": "Markdown that the person can write about themselves."
          },
          "authentication": {
            "type": "object",
            "properties": {
              "emailIsVerified": {
                "type": "boolean"
              },
              "emailOtp": {
                "type": "string"
              },
              "emailOtpAt": {
                "type": "number"
              },
              "twoFactorAuthenticationStrategy": {
                "type": "string",
                "enum": ["disabled", "any", "email", "phoneNumber", "both"],
                "description": "Strategy for the user to authenticate. Defaults to disabled, which means you can just verify in a single way."
              },
              "phoneNumberIsVerified": {
                "type": "boolean"
              },
              "phoneNumberOtp": {
                "type": "string"
              },
              "phoneNumberOtpAt": {
                "type": "number"
              },
              "encryptedPassword": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "description": "To replace the initial system of having multiple `authenticationMethod`s\n\nIf authentication exists, that means the user is attempting to access their account\n\nWe can already have their person registered and we can already have information about them or for them without them having an account yet, because it's the same `Person` model.\n\nTODO: Remove this completely, outdated"
          },
          "interestSlugs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Slug"
            },
            "description": "slugs of interest categories that this person should be notified about.\n\nSince this is a hierarchical model, parent interests will ensure all children are also applied."
          },
          "mediaChannelIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Id"
            },
            "description": "After the `MediaChannel` DB is filled, we can index the names of the persons of the `MediaChannel`, and and we can push them to here, if the name is \"similar\" to the name of this `Person`.\n\n`*` = \"similar\" means: exact match, or at least first name + last name match"
          },
          "preferred_mediaChannelId": {
            "$ref": "#/components/schemas/Id",
            "description": "Optional. Can be set by admin (not indexed)\n\nIf not available, take the first (mediaChannelIds[0])"
          },
          "devicesCalculated": {
            "type": "array",
            "items": {},
            "description": "Devices can be attached to a person by looking in the device model and finding the devices that refer to this person\n\nAmong other things, this can be used to determine the `Person` location"
          },
          "authenticationMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuthenticationMethod"
            },
            "description": "DEPRECATED: to be replaced by `authentication` in favor of simplicity\n\nMethods that can be used to identify yourself as being this user\n\nShould be set up by the user either when registering, or in settings, to provide more methods.\n\nNB: It's important to note that a `Person` should not be able to add credentials that are already added by another person. This means that, when adding such a method, all `Person`s need to be searched!"
          },
          "groupSlugs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Slug"
            },
            "description": "To which groups does this person belong?\n\nThis determines additional authorizations\n\nCan be set on signup, but can always be edited by admin\n\nDEPRECATED?! Should be replaced by groups.personSlug for efficiency"
          },
          "groups": {
            "type": "array",
            "items": {}
          },
          "credit": {
            "$ref": "#/components/schemas/Credit",
            "description": "Actions by the `Person` can create changes in the amount of credits\n\nThe exact meaning of the number of credits is determined by the OS settings. Can for example be 1:1 to euro, 1:1 to bitcoin, or a custom credit system. Transferability is also customisable.\n\nInsufficient credit can limit the persons possibilities within the OS"
          },
          "currentConferenceCallId": {
            "type": "string",
            "description": "needed for active calls"
          },
          "isWaitlistRequested": {
            "type": "boolean",
            "description": "if true, user has given email and\n\n- for high-income country, trial is requested\n- for low-income country, free unlimited is requested"
          },
          "trialStartedAt": {
            "type": "number",
            "description": "if admins give the trial access, this will be enabled, and unlimited will be turned on"
          },
          "trialDurationDays": {
            "type": "number",
            "description": "amount of days the trial will take"
          },
          "subscribee_personSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "the persons that you have given your subscription automatically, if any. Should, upon payment, link 3 low-income country people to you."
          },
          "subscriber_personSlug": {
            "type": "string",
            "description": "the persons that you have given your subscription, if it was given."
          },
          "isDiscoveryEnabled": {
            "type": "boolean",
            "description": "If the person sets this to true (opt-in)\n- as a subscriber, you allow the subscribees to contact you\n- as a subscribee, you allow the subscriber to contact you"
          },
          "sendingMessageAt": {
            "type": "number",
            "description": "gets set to the date when you start sending a message, gets reset afterwards, so you don't send two messages at the same time, there is some sort of wait system"
          },
          "totalCreditSpent": {
            "$ref": "#/components/schemas/Credit",
            "description": "Useful metric. Should accumulate every time the user spends credit"
          },
          "totalCreditPaid": {
            "$ref": "#/components/schemas/Credit",
            "description": "Useful metric"
          },
          "totalCreditGiven": {
            "$ref": "#/components/schemas/Credit",
            "description": "Useful metric: how much credit was given for free to the user by the system"
          },
          "totalCreditGivenFriends": {
            "$ref": "#/components/schemas/Credit",
            "description": "Useful metric, how much credit was given to friends"
          },
          "referralSlug": {
            "type": "string",
            "description": "Referral business (based on initial message). Links to `Referral` model instance"
          },
          "referral_personaSlug": {
            "type": "string",
            "description": "Persona that the user used the app the first..."
          },
          "icalWebfeedUrl": {
            "type": "string",
            "description": "webfeed iCal URL to sync your calendar into our system"
          },
          "lastLocation": {
            "$ref": "#/components/schemas/AssistantLocation",
            "description": "To be used as Assistant Context"
          },
          "utcTimeOffsetHours": {
            "type": "number",
            "description": "Set when user signs up, updated when user gives location"
          },
          "preferredLanguage": {
            "type": "string",
            "description": "Set upon user creation, can be changed into anything.\n\nThis is the baselanguage in which you prefer to receive all communication"
          },
          "helperLanguages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Language"
            },
            "description": "If set, and if `.preferredLanguage` is also a `Language`, the `WordMatrix` can be used to show words in these languages on hover (or on mobile on-click)"
          },
          "relationSlugsCalculated": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lastLocationAt": {
            "type": "number",
            "description": "To be used as Assistant Context"
          },
          "socialMediaChannels": {
            "$ref": "#/components/schemas/SocialMediaChannels"
          },
          "isSemanticSearchDone": {
            "type": "boolean",
            "description": "See `getFastPersonInfo`"
          }
        }
      },
      "AuthenticationMethod": {
        "type": "object",
        "properties": {
          "method": {
            "$ref": "#/components/schemas/AuthenticationMethodMethod",
            "description": "NB: Not all are supported yet"
          },
          "handle": {
            "type": "string",
            "description": "most of the time, this is a username, but can also be phone number or email or so"
          },
          "encryptedCredential": {
            "type": "string",
            "description": "This can be a password or token, depending on the method.\n\nIn case of OTP, this isn't required (e.g. for `phoneNumber`)"
          },
          "credential": {
            "type": "string",
            "description": "original credential. should only be available on the device, not on the person"
          },
          "otp": {
            "type": "number",
            "description": "one time password code, that will be sent to email or sms (or in the future other ways)"
          },
          "isAuthenticated": {
            "type": "boolean",
            "description": "If OTP is not filled in yet, will be false, otherwise true"
          }
        },
        "required": ["method", "handle", "isAuthenticated"],
        "additionalProperties": false
      },
      "AuthenticationMethodMethod": {
        "type": "string",
        "enum": [
          "usernamePassword",
          "phoneNumber",
          "email",
          "apple",
          "google",
          "facebook",
          "twitter",
          "linkedin",
          "github"
        ],
        "description": "Username + password should be the default\n\nEmail OTP, phone number OTP (sms or call or whatsapp), should be optional 2FA methods\n\nAll others can also act as authentication methods, but the token shouldn't be stored"
      },
      "Credit": {
        "type": "number"
      },
      "AssistantLocation": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "address": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Language": {
        "type": "string",
        "enum": [
          "english",
          "dutch",
          "nepali",
          "portuguese",
          "brazilian",
          "german",
          "french",
          "spanish",
          "italian",
          "norwegian",
          "swedish",
          "danish",
          "vietnamese",
          "indonesian",
          "southAfrican",
          "tokiPona",
          "hindi",
          "mandarin",
          "arabic",
          "bengali",
          "urdu",
          "japanese",
          "swahili"
        ],
        "description": "all currently supported languages"
      },
      "SocialMediaChannels": {
        "type": "object",
        "additionalProperties": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "description": "Should contain the channel name so the social media url can be regenerated based on that."
      },
      "AppOperation": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "port": {
            "type": "number"
          },
          "description": {
            "type": "string"
          },
          "isOnline": {
            "type": "boolean"
          },
          "emoji": {
            "type": "string",
            "description": "Emoji that should be used as the app icon. Can be calculated from the `operation.md`"
          }
        },
        "required": ["name", "port"],
        "additionalProperties": false
      },
      "Download": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "id": {
            "type": "string",
            "description": "download ID"
          },
          "persistence": {
            "type": "string",
            "enum": ["one-time", "forever"],
            "description": "defaults to \"one-time\""
          },
          "availableUntilAt": {
            "type": "number",
            "description": "If given, download is availablue until this date is past."
          },
          "download_projectRelativePath": {
            "type": "string",
            "description": "URL to download"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "Filesave": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "id": {
            "type": "string"
          },
          "projectRelativeFilePath": {
            "type": "string"
          },
          "originalProjectRelativeFilePath": {
            "type": "string",
            "description": "If given, this indicates the file has been moved/renamed over time and this was the original filename when saved"
          },
          "updatedAt": {
            "type": "number"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "content": {
            "type": "string"
          },
          "previousContent": {
            "type": "string"
          },
          "canParse": {
            "type": "boolean"
          },
          "difference": {
            "type": "string"
          },
          "differenceSummary": {
            "type": "string"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "GptMap": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "slug": {
            "type": "string"
          },
          "owner_personSlug": {
            "type": "string"
          },
          "mapModelName": {
            "type": "string",
            "description": "If provided, this should be the name of the model that the GptMap augments"
          },
          "mapPrompt": {
            "type": "string",
            "description": "The original mapPrompt"
          },
          "listDescription": {
            "type": "string"
          },
          "newKeys": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": ["key", "description", "type"],
              "additionalProperties": false
            }
          },
          "requiredKeys": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pluginNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "Group": {
        "type": "object",
        "properties": {
          "subscriptionType": {
            "type": "string",
            "enum": ["stripe", "gift"],
            "description": "In case of 'gift' it will not be removed"
          },
          "paymentAuthToken": {
            "type": "string",
            "description": "For now this can be a stripe token, stored for this \"customer\". Handy to connect the customer to the Person. Later this can become an array of multiple credentials, for example if you want to add multiple creditcards."
          },
          "stripeCustomerEmail": {
            "type": "string",
            "description": "should be the email connected to the customer. can be used to verify the customer is still subscribed"
          },
          "hasSubscription": {
            "type": "boolean",
            "description": "If true, no credit will be deducted\n\nShould be kept up to date with your actual subscription on stripe."
          },
          "paymentLink": {
            "type": "string",
            "description": "Used to cache a stripe payment link for use anywhere to onboard the device to become a user"
          },
          "paymentLinkCreatedAt": {
            "type": "number",
            "description": "Date the payment link was created so it's not too old"
          },
          "paymentLinkExpiresAt": {
            "type": "number"
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "name": {
            "type": "string",
            "description": "Name of the group (will set slug)\n\nNB: this can be used in functions to specify certain access to groups. It should there fore be unique and you should be careful when changing it!"
          },
          "slug": {
            "type": "string"
          },
          "owner_personSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "TODO: Persons that are allowed to see who's in this group. Useful for research pipelines"
          },
          "description": {
            "type": "string"
          },
          "inherited_groupSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Any group recursively inherits other groups until it finds itself being in a loop. This way you can have authorizations applied on multiple groups at once, more easily\n\nTODO: change this into parent_groupSlugs. it's just a hierarchical categorisation, in a way."
          },
          "customAuthorizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Authorization"
            },
            "description": "DEPRECATED: not needed\n\nOptionally, provide custom authorization to a group"
          },
          "indexedAuthorizationCalculated": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuthorizationModel"
            }
          },
          "admin_personSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Who can manage the groups channels?"
          },
          "personSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "TODO: there should be some functions that help you  to add people to groups\n\n- addToGroup(personSlug, groupSlug)\n- removeFromGroup(personSlug, groupSlug)\n\nThese update the person entry and the group entry so there's a two-way index."
          },
          "persons": {
            "type": "array",
            "items": {}
          },
          "channels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              },
              "required": ["slug", "title", "description"],
              "additionalProperties": false
            },
            "description": "List of channels for members of the group to conversate in"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "Authorization": {
        "type": "object",
        "properties": {
          "isProjectWide": {
            "type": "boolean",
            "description": "If true, this authorization is project-wide and applies to everything"
          },
          "authorizedOperationName": {
            "type": "string",
            "description": "If selected, the authorization will apply to the whole operation"
          },
          "tsFunctionId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this function"
          },
          "tsVariableId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this variable"
          },
          "tsInterfaceId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this interface"
          },
          "datasetId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this dataset"
          },
          "authorizedProjectRelativePath": {
            "type": "string",
            "description": "If selected, the authorization will apply to everything in this folder or to this specific file"
          },
          "canExecute": {
            "type": "boolean"
          },
          "canWriteCreate": {
            "type": "boolean"
          },
          "canWriteUpdate": {
            "type": "boolean"
          },
          "canWriteDelete": {
            "type": "boolean"
          },
          "canRead": {
            "type": "boolean"
          },
          "canSearch": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "`Authorization` helps you provide certain access to files, data, functionality, and code. Authorization can be provided custom, or by indexation. The indexation of the codebase and text-files overwrites the custom authorization in the `Group`-model.\n\n## Different authorizations\n\nFor files (ts, md, json, etc...):\n\n- canWriteCreate\n- canWriteUpdate\n- canWriteDelete\n- canRead\n- canSearch (only search index)\n\nFor db model data subsets:\n\n- canWriteUpdate\n- canWriteCreate\n- canWriteDelete\n- canRead\n- canSearch (only search index)\n\nFor functions:\n\n- canExecute\n\nFor functions, interfaces, variables:\n\n- canRead (reading docs only. for source, you need to provide the file auth)\n- canSearch (only search index)"
      },
      "AuthorizationModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "isProjectWide": {
            "type": "boolean",
            "description": "If true, this authorization is project-wide and applies to everything"
          },
          "authorizedOperationName": {
            "type": "string",
            "description": "If selected, the authorization will apply to the whole operation"
          },
          "tsFunctionId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this function"
          },
          "tsVariableId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this variable"
          },
          "tsInterfaceId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this interface"
          },
          "datasetId": {
            "$ref": "#/components/schemas/Id",
            "description": "If selected, the authorization will apply to this dataset"
          },
          "authorizedProjectRelativePath": {
            "type": "string",
            "description": "If selected, the authorization will apply to everything in this folder or to this specific file"
          },
          "canExecute": {
            "type": "boolean"
          },
          "canWriteCreate": {
            "type": "boolean"
          },
          "canWriteUpdate": {
            "type": "boolean"
          },
          "canWriteDelete": {
            "type": "boolean"
          },
          "canRead": {
            "type": "boolean"
          },
          "canSearch": {
            "type": "boolean"
          },
          "createdAt": {
            "$ref": "#/components/schemas/CreatedAt"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/UpdatedAt"
          },
          "deletedAt": {
            "$ref": "#/components/schemas/DeletedAt"
          },
          "createdFirstAt": {
            "$ref": "#/components/schemas/CreatedFirstAt"
          },
          "operationName": {
            "type": ["null", "string"],
            "description": "name of operation the model belongs to\n\n- calculated value (not stored in database)\n- can be `null` or an actual operationName that it was saved at\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "path to dbfile\n\n- calculated value (not stored in database)\n- relatively from the project (without slash at start)\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "operationRelativePath": {
            "type": "string",
            "description": "path to db file\n\n- relatively from the operation root folder (without slash at start)\n- calculated value (not stored in database)\n- can be `undefined` if the db file does not belong to an operation\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "categoryStack": {
            "$ref": "#/components/schemas/CategoryStack",
            "description": "In case of jsonSingle storageMethod, the categoryStack is generated by the location of the file in the db model folder in the db folder.\n\nNB: Changing this value when updating/upserting, changes where the item is located!"
          }
        },
        "required": [
          "createdAt",
          "createdFirstAt",
          "deletedAt",
          "id",
          "operationName",
          "projectRelativePath",
          "updatedAt"
        ],
        "description": "Authorization model for indexed authorizations\n\nDon't edit this! If you wish to add authorizations to a group, either edit the code or text-files, or provide custom authorizations to the `Group`."
      },
      "CreatedAt": {
        "$ref": "#/components/schemas/Time"
      },
      "Time": {
        "type": "number",
        "description": "Time\n\nTime can be stored in various ways but in my experience it is, again, best to keep it simple and just have one way to store time. I can think about this for hours, but my intuition goes towards using the same format as Date.now() because it is a very small format and is easy to read.\n\nIt is the amount of ms since 1970.\n\nI could argue to store it in seconds since 1970 since there are few applications of doing ms, but maybe we do, and it's just 30% bigger. No problem.\n\nTherefore, let's store all time values in the format Date.now()"
      },
      "UpdatedAt": {
        "$ref": "#/components/schemas/Time"
      },
      "DeletedAt": {
        "$ref": "#/components/schemas/Time"
      },
      "CreatedFirstAt": {
        "$ref": "#/components/schemas/Time",
        "description": "in some cases, data can be created before it was created in our system. In this case, use CreatedFirstAt if this information is important."
      },
      "CategoryStack": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Taken from the location in the folder of the db-model.\n\nNB: Changing this value when updating/upserting, changes where the item is located!"
      },
      "GuidedConversationPipeline": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": ["draft", "ongoing", "paused", "over-budget"]
          },
          "owner_personSlug": {
            "type": "string",
            "description": "Who is paying for this (and is granted access to the results)"
          },
          "queueIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Queue items that have been created for this pipeline"
          },
          "queues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Queue"
            }
          },
          "maxBudgetPerDayEuro": {
            "type": "number",
            "description": "Please note that - at this point, for simplicity - this budget does not include the budget for any pipelines carried out before this pipeline that were required for it."
          },
          "maxTotalBudgetEuro": {
            "type": "number"
          },
          "totalCostEuro": {
            "type": "number",
            "description": "Total budget spent until now"
          },
          "totalCostTodayEuro": {
            "type": "number",
            "description": "Total budget spent today"
          },
          "estimatedProfitEuro": {
            "type": "number",
            "description": "Very hard to calculate, yet very important to do so:\n\nThe profit can be estimated based on where we think persons come from and why they spent the money they spent (which yielded us profit). Sometimes it can be totally acredited to a certain guided conversation pipeline, but sometimes it may be a mix of multiple, hence it must be sometimes guessed.\n\nOnce we see this number, we can assign more budget to this pipeline (if it's worth it)"
          },
          "notesDescription": {
            "type": "string",
            "description": "Notes by the owner"
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "purposeDescription": {
            "type": "string",
            "description": "Human language description the purpose of this conversation"
          },
          "groupSlugsCalculated": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Calculated based on all groups of all research pipelines"
          },
          "relationsAmountCalculated": {
            "type": "number"
          },
          "conversationStrategies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Human language description of the strategy\n\nBased on these and a person from the target audience, we can select the persona with the best person fit. With all that, we create a `Relation` with a `personGoal`.\n\nNB: at a later stage, the strategies can be automatically filled in by AI"
          },
          "personaSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Based on the different strategies that can be manually filled in, select or create multiple personas.\n\nList of personas that can be used for the strategies."
          },
          "target_groupSlug": {
            "type": "string"
          },
          "dataPipelineSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Pipelines that need to be activated if we run out of persons"
          },
          "dataPipelines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataPipeline"
            }
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "KeyPerformanceIndicator": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "personSlug": {
            "type": "string",
            "description": "always filled in"
          },
          "fromDate": {
            "type": "string"
          },
          "untilDate": {
            "type": "string",
            "description": "if provided, should be a date later than \"fromDate\", which makes this KPI item a summary over multiple dates if not provided, this KPI item is just a single day"
          },
          "messagesReceivedAmount": {
            "type": "number"
          },
          "messagesSentAmount": {
            "type": "number"
          },
          "emailReceivedAmount": {
            "type": "number"
          },
          "emailSentAmount": {
            "type": "number"
          },
          "revenueEuros": {
            "type": "number",
            "description": "fetch data from stripe (ensure to check metadata.personaSlug)"
          },
          "newRelationsAmount": {
            "type": "number",
            "description": "see all relations of the person and look for their createdAt (not person.createdAt but relation.createdAt)"
          },
          "isAlreadyCalculated": {
            "type": "boolean",
            "description": "If true, this was already there. Not to be stored"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "LlmTranslation": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "slug": {
            "type": "string",
            "description": "The filename."
          },
          "markdown": {
            "type": "string"
          },
          "model": {
            "type": "string",
            "description": "LLM model key. useful to know"
          },
          "isCustomised": {
            "type": "boolean",
            "description": "If true, the admin has edited this tranlsation to his/her own taste"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "OneTimePassword": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "personSlug": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "if given, the OTP will redirect to a custom URL after login. default is \"/dashboard\". must be a string starting with \"/\" so it can be pushed as navigation url"
          },
          "createdAt": {
            "type": "number"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "OpenFile": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "personSlug": {
            "type": "string"
          },
          "file_projectRelativePath": {
            "type": "string"
          },
          "isPinned": {
            "type": "boolean"
          },
          "isOpen": {
            "type": "boolean"
          },
          "openedAt": {
            "type": "number",
            "description": "The openfile be removed if not open and pinned after a certain time"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "Untitled": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string"
          },
          "item": {
            "type": "string"
          }
        }
      },
      "OpenapiProxy": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string",
            "description": "Name of the proxy to be made accessible at '[__id].[slug].actionschema.com'"
          },
          "proxies": {
            "type": "string",
            "description": "List of multiple paths from multiple openapis"
          },
          "info": {
            "type": "string",
            "description": "Info object of the to be served openapi"
          },
          "openApiGenerated": {
            "type": "string",
            "description": "Generated openapi after fetching and merging the paths"
          }
        }
      },
      "Persona": {
        "type": "object",
        "properties": {
          "githubEmail": {
            "type": "string",
            "description": "Github stuff"
          },
          "githubAccessToken": {
            "type": "string",
            "description": "Personal access token"
          },
          "githubOrganisation": {
            "type": "string"
          },
          "useGithubOrganisation": {
            "type": "boolean"
          },
          "apiKey2Captcha": {
            "type": "string"
          },
          "linkedinEmail": {
            "type": "string"
          },
          "linkedinPassword": {
            "type": "string"
          },
          "twitterLoginHandle": {
            "type": "string",
            "description": "phone, email or username"
          },
          "twitterPassword": {
            "type": "string"
          },
          "twitterApiKey": {
            "type": "string"
          },
          "twitterApiKeySecret": {
            "type": "string"
          },
          "twitterBearerToken": {
            "type": "string"
          },
          "twitterAccessToken": {
            "type": "string"
          },
          "twitterAccessTokenSecret": {
            "type": "string"
          },
          "twitterOAuth2ClientIdentifier": {
            "type": "string"
          },
          "twitterOAuth2ClientSecret": {
            "type": "string"
          },
          "facebookLoginHandle": {
            "type": "string"
          },
          "facebookPassword": {
            "type": "string"
          },
          "mediumLoginHandle": {
            "type": "string"
          },
          "mediumPassword": {
            "type": "string"
          },
          "redditLoginHandle": {
            "type": "string"
          },
          "redditPassword": {
            "type": "string"
          },
          "devtoLoginHandle": {
            "type": "string"
          },
          "devtoPassword": {
            "type": "string"
          },
          "slackLoginHandle": {
            "type": "string"
          },
          "slackPassword": {
            "type": "string"
          },
          "vercelProjectId": {
            "type": "string"
          },
          "vercelTeamId": {
            "type": "string"
          },
          "vercelApiToken": {
            "type": "string"
          },
          "vercelDeployHookUrl": {
            "type": "string"
          },
          "githubWebhookSecret": {
            "type": "string"
          },
          "cloudflareEmail": {
            "type": "string"
          },
          "cloudflareApiKey": {
            "type": "string"
          },
          "cloudflareAccountId": {
            "type": "string"
          },
          "namecheapApiKey": {
            "type": "string"
          },
          "namecheapUsername": {
            "type": "string"
          },
          "namecheapClientIp": {
            "type": "string"
          },
          "stripeWebhookSigningSecret": {
            "type": "string",
            "description": "secret for signing the webhook"
          },
          "stripePublishableKey": {
            "type": "string"
          },
          "stripeSecret": {
            "type": "string",
            "description": "NB: should have a custom input in the `SimplifiedSchemaForm`"
          },
          "twilioAccountSid": {
            "type": "string"
          },
          "twilioAuthToken": {
            "type": "string"
          },
          "sendgridApiKey": {
            "type": "string"
          },
          "scrapingbeeToken": {
            "type": "string",
            "description": "scrapingbee"
          },
          "scrapedoApiToken": {
            "type": "string"
          },
          "serperApiKey": {
            "type": "string"
          },
          "deepgramApiKey": {
            "type": "string"
          },
          "replicateApiToken": {
            "type": "string"
          },
          "playhtUser": {
            "type": "string",
            "description": "user id of playht"
          },
          "playhtSecret": {
            "type": "string"
          },
          "openAiPassword": {
            "type": "string"
          },
          "openAiEmail": {
            "type": "string"
          },
          "openAiToken": {
            "type": "string"
          },
          "huggingfaceAuthToken": {
            "type": "string"
          },
          "uberduckApiKey": {
            "type": "string"
          },
          "uberduckSecret": {
            "type": "string"
          },
          "bananadevApiKey": {
            "type": "string"
          },
          "bananadevModelKeys": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "slug": {
            "type": "string",
            "description": "Slug can also be a domain. If this is the case, this persona belongs to an `AiPlugin`."
          },
          "name": {
            "type": "string"
          },
          "useOwnCredentials": {
            "type": "boolean",
            "description": "If true, this personas person is paying for their own api keys, meaning they don't need to be charged for this"
          },
          "email": {
            "type": "string"
          },
          "sendgridFromEmail": {
            "type": "string"
          },
          "twilioWhatsappFromPhoneNumber": {
            "type": "string",
            "description": "TODO: rename to twilioPhoneNumber\n\nMust be a phone number that is also a whatsapp sender if you want to use it for this as well"
          },
          "twilioMessengerIdentifier": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": ["disabled", "alpha", "beta", "production"],
            "description": "disabled: doesn't show in the list alpha: only shows on the frontpage for team members beta: shows in the frontpage but has a 'beta' flag production: shows"
          },
          "purposes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "purposeDescription": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                }
              },
              "required": ["purposeDescription", "slug"],
              "additionalProperties": false
            },
            "description": "What does this persona do? Used for sales funnels"
          },
          "transformations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Persona is someone that uses chat ai pro (web interface)\n\nThey can set up which transformations the message need to undergo when receiving a message"
          },
          "reviewAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BackendAsset"
            },
            "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
          },
          "exampleAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BackendAsset"
            },
            "description": "Can be videos, screenshots, audios, anything. Examples of how the bot works"
          },
          "description": {
            "type": "string",
            "description": "Profile bio (can be multiline)"
          },
          "tagline": {
            "type": "string",
            "description": "one line description about the bot"
          },
          "preferredTextToText": {
            "type": "string"
          },
          "isSubscriptionPlanDisabled": {
            "type": "boolean",
            "description": "TODO:\n\nif true, will not generate payment links and will not allow user to subscribe to this one"
          },
          "workflowSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Workflows that this persona should showcase"
          },
          "workflows": {
            "type": "array",
            "items": {}
          },
          "default_aiPluginSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "new users that interact with this assistant as a new relation will get these plugins assigned"
          },
          "isAiPlugin": {
            "type": "boolean"
          },
          "default_aiPlugins": {
            "type": "array",
            "items": {}
          },
          "domain": {
            "type": "string",
            "description": "Required for root.\n\nShould be the primary domain. Used for email and maybe links from emails, sms, etc."
          },
          "contextualPromptSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Contextual prompts that need to be showcased on the personas profile for direct usage"
          },
          "contextualPrompts": {
            "type": "array",
            "items": {}
          },
          "genericVoices": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "model": {
                  "type": "string",
                  "enum": ["playht", "local", "uberduck"]
                },
                "voiceKey": {
                  "type": "string"
                }
              },
              "required": ["model", "voiceKey"],
              "additionalProperties": false
            },
            "description": "Defaults back to a global generic voices object. Can be set automatically by the AI based on what we know about the person."
          },
          "isVoiceRequired": {
            "type": "boolean",
            "description": "If true, voice is required and language will thus be enforced to the available ones if this speaker style is selected.\n\nE.g. if the users preferredLanguage is Dutch but he sets the speaker style to eminem, and eminem is only available through voices in english, then the language will be set to english instead."
          },
          "style": {
            "type": "string",
            "description": "Hardcoded style, used for translation and forming a reply by the LLM.\n\nCannot be overwritten\n\nExamples: Albert Einstein, Eminem, Snoop Dogg, poetic rap, street slang"
          },
          "responseModality": {
            "type": "string",
            "enum": ["both", "voice", "text"]
          },
          "autoReplyPolicy": {
            "$ref": "#/components/schemas/MessagePolicy",
            "description": "defaults to \"auto\"\n\n\"disabled\" will disable the reply completely\n\n\"draft\" will add \"draftedResponse\" to \"Relation\", but not send it"
          },
          "inherited_personaSlug": {
            "type": "string",
            "description": "If this is given, will inherit all existing values from that persona, and overwrite them with the ones this persona has."
          },
          "disableVideos": {
            "type": "boolean"
          },
          "payForWhat": {
            "type": "string",
            "description": "string to describe what you pay for for 2 euros"
          },
          "costPerMessageCredit": {
            "type": "number",
            "description": "Defaults to 0.05"
          },
          "freeMessagesPerNewUser": {
            "type": "number"
          },
          "customCreditQuantity": {
            "type": "number",
            "description": "defaults to 10"
          },
          "freeMessagesPerDay": {
            "type": "number"
          },
          "freeMessagesPerNewUserAfterDauLimit": {
            "type": "number",
            "description": "free messages per new user after dau limit"
          },
          "maximumNewUsersPerDay": {
            "type": "number",
            "description": "amount of new users allowed (per day)"
          },
          "giftsPerDay": {
            "type": "number",
            "description": "amount of gifts to inactive users (per day)"
          },
          "giftFreeMessages": {
            "type": "number",
            "description": "free messages in a gift"
          },
          "dauLimit": {
            "type": "number",
            "description": "dau limit (defaults to 100)"
          },
          "dauLimitPaid": {
            "type": "number",
            "description": "paid dau limit ($5+)"
          },
          "dauLimitVip": {
            "type": "number",
            "description": "vip dau limit ($50+)"
          },
          "minimumCreditPaid": {
            "type": "number",
            "description": "minimum credit required to be \"paid\", defaults to 0"
          },
          "minimumCreditVip": {
            "type": "number",
            "description": "minimum credit required to be \"deluxe\", omitted if not set"
          },
          "freeMessagesForReferral": {
            "type": "number",
            "description": "reward free messages for referal use"
          },
          "freeMessagesForReferralPay": {
            "type": "number",
            "description": "reward for referal pay"
          },
          "fillerSentences": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "customWelcomeMessage": {
            "type": "string",
            "description": "Custom message, instead of \"Nice to meet you $name. Let's get started. To answer your first message\""
          },
          "customWelcomeBackMessage": {
            "type": "string",
            "description": "Replaces the message that shows you how many credit you have"
          },
          "customPaywallMessage": {
            "type": "string"
          },
          "defaultFollow_personSlugs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mediaCredentialIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Id"
            }
          },
          "mediaCredentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaCredential"
            }
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "MessagePolicy": {
        "type": "string",
        "enum": ["auto", "disabled", "draft"]
      },
      "MediaCredential": {
        "type": "object",
        "properties": {
          "createdAt": {
            "$ref": "#/components/schemas/CreatedAt"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/UpdatedAt"
          },
          "deletedAt": {
            "$ref": "#/components/schemas/DeletedAt"
          },
          "createdFirstAt": {
            "$ref": "#/components/schemas/CreatedFirstAt"
          },
          "operationName": {
            "type": ["null", "string"],
            "description": "name of operation the model belongs to\n\n- calculated value (not stored in database)\n- can be `null` or an actual operationName that it was saved at\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "path to dbfile\n\n- calculated value (not stored in database)\n- relatively from the project (without slash at start)\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "operationRelativePath": {
            "type": "string",
            "description": "path to db file\n\n- relatively from the operation root folder (without slash at start)\n- calculated value (not stored in database)\n- can be `undefined` if the db file does not belong to an operation\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "categoryStack": {
            "$ref": "#/components/schemas/CategoryStack",
            "description": "In case of jsonSingle storageMethod, the categoryStack is generated by the location of the file in the db model folder in the db folder.\n\nNB: Changing this value when updating/upserting, changes where the item is located!"
          },
          "mediaType": {
            "$ref": "#/components/schemas/MediaPlatformEnum"
          },
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "phoneNumber": {
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "createdFirstAt",
          "deletedAt",
          "id",
          "mediaType",
          "operationName",
          "password",
          "projectRelativePath",
          "updatedAt"
        ],
        "additionalProperties": false
      },
      "MediaPlatformEnum": {
        "type": "string",
        "enum": [
          "facebook",
          "twitter",
          "medium",
          "reddit",
          "devto",
          "linkedin",
          "whatsapp",
          "slack"
        ]
      },
      "PhoneRecordingInbox": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string",
            "description": "Id",
            "creationPlugins": []
          },
          "createdAt": {
            "type": "string"
          },
          "keywords": {
            "type": "string",
            "description": "keywords that need to be detected if present",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "llm.calculateTokenCountPlugin",
                  "method": "POST",
                  "path": "/function/llm.calculateTokenCountPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {},
                "outputLocation": "result",
                "propertyDependencies": []
              }
            ],
            "visibility": "auto"
          },
          "to": {
            "type": "string",
            "description": "to",
            "visibility": "auto"
          },
          "item": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "type",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "getTypeFromUrlOrPathPlugin",
                  "method": "POST",
                  "path": "/function/getTypeFromUrlOrPathPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "urlOrPath": "${item}"
                },
                "outputLocation": "result",
                "propertyDependencies": ["item"]
              }
            ],
            "visibility": "auto"
          },
          "isAudio": {
            "type": "string",
            "description": "check if the value is of type audio",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "simpleCondition",
                  "method": "POST",
                  "path": "/function/simpleCondition",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "value": "${item}",
                  "operator": "Starts with",
                  "compare": "https://api.twilio.com"
                },
                "outputLocation": "result",
                "propertyDependencies": ["item"]
              }
            ],
            "visibility": "auto"
          },
          "transcript": {
            "type": "string",
            "description": "transcript",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "getDeepgramTranscript",
                  "method": "POST",
                  "path": "/function/getDeepgramTranscript",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "audioUrl": "${item}",
                  "keywords": "${keywords}"
                },
                "outputLocation": "result",
                "propertyDependencies": ["keywords", "item"]
              }
            ],
            "visibility": "auto"
          },
          "transcriptText": {
            "type": "string",
            "description": "transcriptText",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "getKeyFromObjectPlugin",
                  "method": "POST",
                  "path": "/function/getKeyFromObjectPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "objectString": "${transcript}",
                  "location": "paragraphs.transcript"
                },
                "outputLocation": "result",
                "propertyDependencies": ["transcript"]
              }
            ],
            "visibility": "auto"
          },
          "analysis": {
            "type": "string",
            "description": "analysis",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "Consider this transcript:\n------\n\n${transcriptText}\n\n-----\n\nPlease respond with a summary and a suitable title, subtitle, keywords and names of people and companies.\n\n",
                  "jsonFormat": "{ \"summary\": string, \"title\": string, \"subtitle\": string, \"keywords\": string, \"namedPeopleAndCompanies\": string[] }",
                  "model": "chatgpt-16k"
                },
                "outputLocation": "result",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "makesSense": {
            "type": "string",
            "description": "makesSense",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "Consider this transcript:\n\n-----\n\n${transcriptText}\n\n----\n\n\nIn some cases the language is interpreted wrongly, resulting in a complete nonsensical transcript (e.g. it writes English if the speaker spoke Dutch) \n\nDoes this transcript make sense, as in, do the words form coherent sentences?\n\nExample of a transcript that makes sense:  \"ga nu verder met mijn verhaal wat ik natuurlijk moet verkopen wat ik natuurlijk aan de man wil brengen is niet alleen het pijn telefoonnummer het is de experience het is het gevoel gevoel van vrijheid gevoel om des nachts je bent uit te gaan en de nachtwoning maakt omdat je gewoon niet omdat je niet kan slapen\"",
                  "jsonFormat": "{ \"makesSense\": boolean }",
                  "model": "chatgpt-16k"
                },
                "outputLocation": "result.makesSense",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "tokenCount": {
            "type": "string",
            "description": "tokenCount",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "calculateTokenCountPlugin",
                  "method": "POST",
                  "path": "/function/calculateTokenCountPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "text": "${transcriptText}"
                },
                "outputLocation": "result",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "statements": {
            "type": "string",
            "description": "statements",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "type": "creation",
                "context": {
                  "description": "Consider this transcript:\n----------\n\n${transcriptText}\n\n-----------\n\nPlease summarise the transcript. Then, please extract core beliefs and opinions that were made (if any). Ensure to provide a broad context for each item in your bullet list.",
                  "jsonFormat": "{ \"shortSummary\": string, \"coreBeliefsAndOpinions\": string }",
                  "model": "chatgpt-16k"
                },
                "outputLocation": "result.coreBeliefsAndOpinions",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "sendEmail": {
            "type": "string",
            "description": "sendEmail",
            "visibility": "auto"
          },
          "email": {
            "type": "string",
            "description": "email",
            "visibility": "auto"
          },
          "from": {
            "type": "string",
            "description": "from",
            "visibility": "auto"
          },
          "otpCode": {
            "type": "string",
            "description": "otpClode",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "util",
                  "method": "POST",
                  "path": "/function/util",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {},
                "outputLocation": "result",
                "propertyDependencies": []
              }
            ],
            "visibility": "auto"
          },
          "callDurationMinutes": {
            "type": "string",
            "description": "callDurationMinutes",
            "visibility": "auto"
          },
          "paymentLink": {
            "type": "string",
            "description": "paymentLink",
            "visibility": "auto"
          },
          "isPersonalMessage": {
            "type": "string",
            "description": "True if this is a personal message",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "${isAudio}",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "Consider this transcript: \n----\n\n${transcriptText}\n\n----\n\nIs this transcript likely to be directed to another person or company? It's likely the case if it includes words like 'You', 'we' or names of people.",
                  "jsonFormat": "{ \"isPersonalMessage\": boolean }",
                  "model": "auto"
                },
                "outputLocation": "result.isPersonalMessage",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "personalMessageCleaned": {
            "type": "string",
            "description": "personalMessageCleaned",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "chatGptPlugin",
                  "method": "POST",
                  "path": "/function/chatGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "${isPersonalMessage}Consider this transcript which is deemed to be a personal message to someone:\n\n----\n\n${transcriptText}\n\n----\n\nPlease turn it into a personal authentic message. \n\n- Do not change any wording, except if it's unusual for written text.\n- Ensure to fix spelling mistakes or word-errors (e.g. names and companies are often misheard)\n- Ensure to omit misspeaking that were self-corrected, and make them more concise\n- Ensure the email is in the same language as the transcript!",
                  "model": "auto"
                },
                "outputLocation": "result",
                "propertyDependencies": ["transcriptText", "isPersonalMessage"]
              }
            ],
            "visibility": "auto"
          },
          "personalMessageSubject": {
            "type": "string",
            "description": "personalMessageSubject",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "Consider this mail draft:\n\n---\n\n${personalMessageCleaned}\n\n---\n\nWhat's the subject?",
                  "jsonFormat": "{\"subject\":string}",
                  "model": "auto"
                },
                "outputLocation": "result.subject",
                "propertyDependencies": ["personalMessageCleaned"]
              }
            ],
            "visibility": "auto"
          },
          "sendPersonalMessage": {
            "type": "string",
            "description": "sendPersonalMessage",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "sendMailPlugin",
                  "method": "POST",
                  "path": "/function/sendMailPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "${isPersonalMessage}",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "to": "${email}",
                  "subject": "${personalMessageSubject}",
                  "textDescription": "${personalMessageCleaned}\n\nDisclaimer: This message was recorded with https://screenless.org and may contain some transcription errors."
                },
                "outputLocation": "result",
                "propertyDependencies": [
                  "email",
                  "personalMessageCleaned",
                  "personalMessageSubject"
                ]
              }
            ],
            "visibility": "auto"
          },
          "isOperatorMentioned": {
            "type": "string",
            "description": "isOperatorMentioned",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "Consider this transcript:\n\n------\n\n${transcriptText}\n\n------\n\nHas the transcript mentioned the term \"Operator\" or \"Screenless\"?",
                  "jsonFormat": "{ \"isOperatorMentioned\": boolean }",
                  "model": "auto"
                },
                "outputLocation": "result.isOperatorMentioned",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "isVisualRequested": {
            "type": "string",
            "description": "isVisualRequested",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "Consider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nDid the speaker(s) request any visualisations?",
                  "jsonFormat": "{ \"isVisualRequested\": boolean }",
                  "model": "auto"
                },
                "outputLocation": "result.isVisualRequested",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "imagePrompts": {
            "type": "string",
            "description": "imagePrompts",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "${isVisualRequested}",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "${isVisualRequested}\n\nConsider this transcript:\n\n----\n\n${transcriptText}\n\n----\n\nPlease list the requested visuals requested by the user. Ensure each item in the list is self-descriptive and standalone. Ensure each item in the list clearly defines what needs to be visualised in a unambiguous detailed way.",
                  "jsonFormat": "{ \"imagePrompts\": string[] }",
                  "model": "gpt-4-1106-preview"
                },
                "outputLocation": "result.imagePrompts",
                "propertyDependencies": ["transcriptText", "isVisualRequested"]
              }
            ],
            "visibility": "auto"
          },
          "averageWordConfidence": {
            "type": "string",
            "description": "averageWordConfidence",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "getKeyFromObjectPlugin",
                  "method": "POST",
                  "path": "/function/getKeyFromObjectPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "objectString": "${transcript}",
                  "location": "averageWordConfidence"
                },
                "outputLocation": "result",
                "propertyDependencies": ["transcript"]
              }
            ],
            "visibility": "auto"
          },
          "isHighQuality": {
            "type": "string",
            "description": "isHighQuality",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "simpleCondition",
                  "method": "POST",
                  "path": "/function/simpleCondition",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "value": "${averageWordConfidence}",
                  "operator": "More than",
                  "compare": "0.7"
                },
                "outputLocation": "result",
                "propertyDependencies": ["averageWordConfidence"]
              }
            ],
            "visibility": "auto"
          },
          "tweetableStatements": {
            "type": "string",
            "description": "tweetableStatements",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "jsonGptPlugin",
                  "method": "POST",
                  "path": "/function/jsonGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "description": "Consider this transcript:\n-------\n${transcriptText}\n-------\n\nAre there any statements in there that are tweetable?\n\nStatements are tweetable if:\n- The statement is understandable by a broad audience independent of the rest of the transcript\n- The statement conveys something interesting like news, opinion, fact, or question\n\n",
                  "jsonFormat": "{ \"tweetableStatements\": string[] }",
                  "model": "auto"
                },
                "outputLocation": "result.tweetableStatements",
                "propertyDependencies": ["transcriptText"]
              }
            ],
            "visibility": "auto"
          },
          "speakerAmount": {
            "type": "string",
            "description": "speakerAmount",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "getKeyFromObjectPlugin",
                  "method": "POST",
                  "path": "/function/getKeyFromObjectPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "objectString": "${transcript}",
                  "location": "speakerAmount"
                },
                "outputLocation": "result",
                "propertyDependencies": ["transcript"]
              }
            ],
            "visibility": "auto"
          },
          "hasOtherSpeakers": {
            "type": "string",
            "description": "hasOtherSpeakers",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "simpleCondition",
                  "method": "POST",
                  "path": "/function/simpleCondition",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {
                  "value": "${speakerAmount}",
                  "operator": "More than",
                  "compare": "1"
                },
                "outputLocation": "result",
                "propertyDependencies": ["speakerAmount"]
              }
            ],
            "visibility": "auto"
          },
          "hasNoSubscription": {
            "type": "string",
            "description": "hasNoSubscription",
            "visibility": "auto"
          },
          "isEmailNotVerified": {
            "type": "string",
            "description": "isEmailNotVerified",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "util.simpleCondition",
                  "method": "POST",
                  "path": "/function/util.simpleCondition",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {},
                "outputLocation": "result",
                "propertyDependencies": []
              }
            ],
            "visibility": "auto"
          },
          "wasCallInterrupted": {
            "type": "string",
            "description": "wasCallInterrupted",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "llm: simpleCondition",
                  "method": "POST",
                  "path": "/function/llm: simpleCondition",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "isVerticalExpandEnabled": false,
                "type": "creation",
                "context": {},
                "outputLocation": "result",
                "propertyDependencies": []
              }
            ],
            "visibility": "auto"
          },
          "emailUnverifiedSms": {
            "type": "string",
            "description": "emailUnverifiedSms",
            "visibility": "auto"
          }
        }
      },
      "Referral": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "primary_personSlug": {
            "type": "string",
            "description": "which persona is this a referral link for?"
          },
          "phoneNumber": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "whatsappUrlsCalculated": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "initialMessages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "Relation": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string",
            "description": "No specific custom identifyer for now"
          },
          "name": {
            "type": "string",
            "description": "Name of your relation"
          },
          "note": {
            "type": "string",
            "description": "What you know about your relation (can be filled by an LLM)\n\nUsed as a conversation Summary"
          },
          "phoneNumber": {
            "type": "string",
            "description": "The cellular phone number (sms and calling)\n\nNB: this is the one the user is registered with. Whatsapp phone number is optional!"
          },
          "email": {
            "type": "string",
            "description": "Email takes priority over phone number, but they are both unique identifiers for a person"
          },
          "whatsappPhoneNumber": {
            "type": "string",
            "description": "Phone number for whatsapp. If given, overwrites phoneNumber for whatsapp sending"
          },
          "personGoal": {
            "type": "string",
            "description": "More specific goals with regard to the person or assistant's functionality and purpose\n\nCan be used as a todolist for a guided conversation"
          },
          "type": {
            "type": "string",
            "enum": [
              "Self",
              "Person",
              "Group",
              "File",
              "Page",
              "Domain",
              "CalendarEvent"
            ],
            "description": "Defaults to person (which can also be an AI agent, AI plugin, Company, etc.)\n\nThis determines where to get the chat messages from (if at all) and it also determines the UI the user gets when interacting with this relation.\n\nEverything is representable as a ChatMessage[] and will be stored as such.\n\nFile, page, and website, and date, however, do not show this UI as the main UI, maybe as a secondary one."
          },
          "createdAt": {
            "type": "number"
          },
          "unreadMessagesAmount": {
            "type": ["number", "null"],
            "description": "null means not unread 0 means you've set it back to 'unread' any other number shows how many unread messages there are"
          },
          "lastReadAt": {
            "type": "number",
            "description": "Last time me_person read the messages in this relation.\n\nThis number is used to determine where to open the messages."
          },
          "lastMessage": {
            "type": "string"
          },
          "messageAfterTemplateResponse": {
            "type": "string",
            "description": "message to be stored here in case you had to sent template first"
          },
          "lastMessageAt": {
            "type": "number"
          },
          "lastRelationMessageAt": {
            "type": "number",
            "description": "needed to see if we can send in whatsapp or not"
          },
          "relationAdditionalTransformation": {
            "type": "string",
            "description": "a secondary language alongside the preferred language, that the user can set for his relation. The relation will then receive this additional language as well, even if the persona does not have this transformation set up for all his langauges."
          },
          "guidedConversationPolicy": {
            "$ref": "#/components/schemas/MessagePolicy",
            "description": "For now, manually toggle guided conversations"
          },
          "guidedConversationStatus": {
            "type": "string",
            "enum": ["unresolved", "completed", "failed"],
            "description": "status for the last guided conversation.\n\ndisabled + unresolved + personGoal means it's paused."
          },
          "draftedResponse": {
            "type": "string",
            "description": "can be an auto-generated response that is not sent yet"
          },
          "draftedSubject": {
            "type": "string"
          },
          "memory": {
            "$ref": "#/components/schemas/Memory",
            "description": "key value store for different things we want to store about a relation"
          },
          "mainMessagingChannel": {
            "$ref": "#/components/schemas/MessagingChannel",
            "description": "TODO: should be added upon creation. After this changes, should be altered."
          }
        }
      },
      "Memory": {
        "type": "object",
        "additionalProperties": {
          "type": ["string", "null"]
        }
      },
      "RolesExperiment": {
        "type": "object",
        "properties": {
          "__id": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "description": ""
          },
          "nationality": {
            "type": "string",
            "description": "nationality",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "chatGptPlugin",
                  "method": "POST",
                  "path": "/function/chatGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "type": "creation",
                "context": {
                  "description": "Imagine a nationality of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His role: ${role}\n\nNationality:",
                  "model": "auto"
                },
                "outputLocation": "result",
                "propertyDependencies": ["role"]
              }
            ]
          },
          "name": {
            "type": "string",
            "description": "name",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "chatGptPlugin",
                  "method": "POST",
                  "path": "/function/chatGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "type": "creation",
                "context": {
                  "description": "Imagine a name of a person working at the startup \"Code From Anywhere\", an AI Product development studio. His/her role: ${role}. Nationality: ${nationality}\n\nFull Name:",
                  "model": "auto"
                },
                "outputLocation": "result",
                "propertyDependencies": ["role", "nationality"]
              }
            ]
          },
          "personality": {
            "type": "string",
            "description": "",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "chatGptPlugin",
                  "method": "POST",
                  "path": "/function/chatGptPlugin",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "type": "creation",
                "context": {
                  "description": "the startup \"Code From Anywhere\" is an AI Product development studio.\n\nWe are dreaming up virtual AI characters that work there.\n\nFill in the blanks for me for: ${name}\n\nNationality: ${nationality}\nRole: ${role}\n\nTell me:\n\n- Gender:\n- Age:\n- Ethnicity:\n- Physical body details:\n- Hobbies:\n",
                  "model": "auto"
                },
                "outputLocation": "result",
                "propertyDependencies": ["role", "nationality", "name"]
              }
            ]
          },
          "picture": {
            "type": "string",
            "description": "picture",
            "creationPlugins": [
              {
                "$openapi": {
                  "operationId": "openAiDalle",
                  "method": "POST",
                  "path": "/function/openAiDalle",
                  "url": "https://api.codefromanywhere.com/openapi.json"
                },
                "condition": "",
                "type": "creation",
                "context": {
                  "prompt": "Consider ${name}. ${role} at Code From Anywhere, a global AI product development studio. Nationality: ${nationality}. ${personality}. ",
                  "size": "1024x1024",
                  "quality": "standard"
                },
                "outputLocation": "result",
                "propertyDependencies": [
                  "role",
                  "nationality",
                  "name",
                  "personality"
                ]
              }
            ]
          },
          "mainMissionStatement": {
            "type": "string",
            "description": "mainMissionStatement"
          },
          "expertise": {
            "type": "string",
            "description": "expertise"
          },
          "tasks": {
            "type": "string",
            "description": "tasks",
            "creationPlugins": []
          }
        }
      },
      "SimpleWordMatrix": {
        "type": "object",
        "properties": {
          "english": {
            "type": "string"
          },
          "dutch": {
            "type": "string"
          },
          "nepali": {
            "type": "string"
          },
          "portuguese": {
            "type": "string"
          },
          "brazilian": {
            "type": "string"
          },
          "german": {
            "type": "string"
          },
          "french": {
            "type": "string"
          },
          "spanish": {
            "type": "string"
          },
          "italian": {
            "type": "string"
          },
          "norwegian": {
            "type": "string"
          },
          "swedish": {
            "type": "string"
          },
          "danish": {
            "type": "string"
          },
          "vietnamese": {
            "type": "string"
          },
          "indonesian": {
            "type": "string"
          },
          "southAfrican": {
            "type": "string"
          },
          "tokiPona": {
            "type": "string"
          },
          "hindi": {
            "type": "string"
          },
          "mandarin": {
            "type": "string"
          },
          "arabic": {
            "type": "string"
          },
          "bengali": {
            "type": "string"
          },
          "urdu": {
            "type": "string"
          },
          "japanese": {
            "type": "string"
          },
          "swahili": {
            "type": "string"
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "slug": {
            "type": "string",
            "description": "slugified version of english"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/WordType"
          },
          "example": {
            "type": "string"
          },
          "shortDescription": {
            "type": "string"
          },
          "synonyms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "frequency": {
            "type": "number"
          },
          "rank": {
            "type": "number"
          },
          "isAugmented": {
            "type": "boolean"
          },
          "isAugmentedChatgpt": {
            "type": "boolean"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "WordType": {
        "type": "string",
        "enum": ["noun", "adjective", "verb"]
      },
      "Statement": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "personSlug": {
            "$ref": "#/components/schemas/Slug"
          },
          "category": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "description": "your statement: definition, fact, question, quote"
          },
          "url": {
            "type": "string",
            "description": "source of the statement, if the statement was a non-original one found online somewhere"
          },
          "agreement": {
            "type": "number",
            "description": "Number [0-1] representing agreement of admin\n\n- 1 meaning 100% agreement\n- 0 means 0% agreement or complete disagreement"
          },
          "readersAgreement": {
            "type": "number",
            "description": "Number [0,1] representing agreement of readers\n\n1 reader can vote once"
          },
          "readersAgreementVotedCount": {
            "type": "number"
          },
          "importancy": {
            "type": "number",
            "description": "defaults to 0.5 meaning average importancy this could be either a calculated or set property. could it be calculated on your value hierarchy? not sure if this is practical (yet) but still a very interesting property to have, or somehow calculate."
          },
          "isImportancySet": {
            "type": "boolean",
            "description": "by default, importancy is calculated by one or multiple systems. As the admin you can change it\n\nTODO: once this is all working, possibly add reader-importancy and readersImportancyVotedCount"
          },
          "wordMatrixSlugs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Slug"
            },
            "description": "A statement can connect to one or more words. This can be calculated automatically I guess, by looking at all WordMatrix words and WordCombinations that are inside of the statement. However, we may not want to put all of them in there.\n\nFor now, let's skip this, since it's probably better to calculate it on the fly, not index it."
          },
          "wordMatrixs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WordMatrix"
            }
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "WordMatrix": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "priorityLevel": {
            "$ref": "#/components/schemas/WordPriority",
            "description": "Priority level is how important this word is to communicate...\n\n\nTITLE: Priority level (defaults to low)\n\ncritical: toki pona word (top 150) high: top 500 medium: top 2500 low (default): less occurence"
          },
          "rank": {
            "type": "number",
            "description": "TITLE: Rank (How common this word is in the english language?)"
          },
          "usageCountCalculated": {
            "type": "number",
            "description": "amount used across the whole monorepo"
          },
          "conjucations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WordConjucation"
            },
            "description": "All ways the word is conjucated from the root word"
          },
          "root_wordMatrixSlug": {
            "$ref": "#/components/schemas/Slug",
            "description": "SECTION: Relations to other words...\n\nTITLE: Root word\n\nDESCRIPTION: If the word is a certain conjugation of a root word, this should be a reference to the root word"
          },
          "root_word": {
            "$ref": "#/components/schemas/WordMatrix"
          },
          "opposite_wordMatrixSlug": {
            "$ref": "#/components/schemas/Slug",
            "description": "TITLE: Opposite word\n\nDESCRIPTION: If there's another word that's the complete opposite of this one, you can declare it here"
          },
          "opposite_wordMatrix": {
            "$ref": "#/components/schemas/WordMatrix"
          },
          "common_wordMatrixSlug": {
            "$ref": "#/components/schemas/Slug",
            "description": "TITLE: Common Synonym\n\nDESCRIPTION: f the word is a synonym to a more common word, this should be a reference to the more common synonym. This is a 1:1 synonym only"
          },
          "common_wordMatrix": {
            "$ref": "#/components/schemas/WordMatrix"
          },
          "tokiPona_wordMatrixSlugs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Slug"
            },
            "description": "TITLE: Toki-Pona words\n\nDESCRIPTION: The closest way to express this word in toki pona terms.\n\nNB: should be an array (order is important here) of slugs of words containing the \"tk\" property. This needs to be a reference so we can also give information about the individual toki pona words"
          },
          "tokiPona_wordMatrixs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WordMatrix"
            }
          },
          "emoji_wordMatrixSlugs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Slug"
            },
            "description": "TITLE: Emoji Words\n\nThe closest way to express this word in emoji terms should be an array (order is important here) of slugs of words containing \"emoji\" property\n\nThis needs to be a reference so we can also give information about the individual emojis"
          },
          "emoji_wordMatrixs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WordMatrix"
            }
          },
          "emoji": {
            "type": "string",
            "description": "SECTION: Translations\n\nDESCRIPTION: Single emoji describing this word 1:1 (if it are more emojis of multiple words, please use the reference instead)"
          },
          "description": {
            "type": "string",
            "description": "Definition of the word (in english)"
          },
          "descriptionAudio": {
            "$ref": "#/components/schemas/BackendAsset"
          },
          "image": {
            "$ref": "#/components/schemas/BackendAsset"
          },
          "wordCategorySlugs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Slug"
            }
          },
          "wordCategorys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WordCategory"
            }
          },
          "type": {
            "$ref": "#/components/schemas/WordType"
          },
          "english": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "dutch": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "nepali": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "portuguese": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "brazilian": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "german": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "french": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "spanish": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "italian": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "norwegian": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "swedish": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "danish": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "vietnamese": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "indonesian": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "southAfrican": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "tokiPona": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "hindi": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "mandarin": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "arabic": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "bengali": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "urdu": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "japanese": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          },
          "swahili": {
            "$ref": "#/components/schemas/WordLanguageInfo"
          }
        },
        "required": ["modelName"],
        "description": "WordMatrix is a matrix that contains as much information about a word as possible in as many languages as possible. Easy to use for 1:1 translation"
      },
      "WordPriority": {
        "type": "string",
        "enum": ["critical", "high", "medium", "low"]
      },
      "WordConjucation": {
        "type": "string",
        "enum": ["plural", "female", "male", "past", "future"],
        "description": "In linguistics, conjugation is the creation of derived forms of a verb from its principal parts by inflection\n\nBesides this, there are also other ways to alter a word to add/change meaning, this should be summed up using this enum."
      },
      "WordCategory": {
        "type": "object",
        "properties": {
          "slug": {
            "$ref": "#/components/schemas/Slug",
            "description": "kebab-case of the name, should be unique"
          },
          "name": {
            "type": "string"
          },
          "language": {
            "$ref": "#/components/schemas/Language",
            "default": "en"
          },
          "createdAt": {
            "$ref": "#/components/schemas/CreatedAt"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/UpdatedAt"
          },
          "deletedAt": {
            "$ref": "#/components/schemas/DeletedAt"
          },
          "createdFirstAt": {
            "$ref": "#/components/schemas/CreatedFirstAt"
          },
          "operationName": {
            "type": ["null", "string"],
            "description": "name of operation the model belongs to\n\n- calculated value (not stored in database)\n- can be `null` or an actual operationName that it was saved at\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "path to dbfile\n\n- calculated value (not stored in database)\n- relatively from the project (without slash at start)\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "operationRelativePath": {
            "type": "string",
            "description": "path to db file\n\n- relatively from the operation root folder (without slash at start)\n- calculated value (not stored in database)\n- can be `undefined` if the db file does not belong to an operation\n- can be `undefined` when you are creating an item, because then it can be set for you"
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "categoryStack": {
            "$ref": "#/components/schemas/CategoryStack",
            "description": "In case of jsonSingle storageMethod, the categoryStack is generated by the location of the file in the db model folder in the db folder.\n\nNB: Changing this value when updating/upserting, changes where the item is located!"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "createdFirstAt",
          "deletedAt",
          "description",
          "id",
          "language",
          "name",
          "operationName",
          "projectRelativePath",
          "slug",
          "updatedAt"
        ],
        "additionalProperties": false,
        "description": "Different ways to categorise a word semantically"
      },
      "WordLanguageInfo": {
        "type": "object",
        "properties": {
          "latin": {
            "$ref": "#/components/schemas/LanguageLatin",
            "description": "TITLE: Latin writing (if common) DESCRIPTION: the latin standard written representation for this word"
          },
          "alternative": {
            "$ref": "#/components/schemas/LanguageAlternative",
            "description": "TITLE: Alternative writing (if common)\n\nDESCRIPTION: the alternative written representation for this word, if any (if the language commonly uses a different script, this can be noted here)"
          },
          "phonetic": {
            "$ref": "#/components/schemas/LanguagePhonetic",
            "description": "TITLE: Phonetic writing\n\nDESCRIPTION: Phonetic writing is used to describe how the word is pronounced"
          },
          "audio": {
            "$ref": "#/components/schemas/LanguageAudio",
            "description": "TITLE: Spoken word\n\nDESCRIPTION: Audio fragment containing the spoken word."
          },
          "examples": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LanguageExample"
            },
            "description": "DESCRIPTION: A list of examples of usage of this word (can contain both a text and audio)"
          }
        },
        "additionalProperties": false,
        "description": "Language specific word information"
      },
      "LanguageLatin": {
        "type": "string"
      },
      "LanguageAlternative": {
        "type": "string"
      },
      "LanguagePhonetic": {
        "type": "string"
      },
      "LanguageAudio": {
        "$ref": "#/components/schemas/BackendAsset"
      },
      "LanguageExample": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "audio": {
            "$ref": "#/components/schemas/BackendAsset"
          }
        },
        "required": ["text", "audio"],
        "additionalProperties": false
      },
      "WebsiteDomain": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "slug": {
            "type": "string",
            "description": "unique id,should be domain"
          },
          "robotsIsAllowed": {
            "type": "boolean"
          },
          "requireResidential": {
            "type": "boolean"
          },
          "requireHeadlessBrowser": {
            "type": "boolean"
          },
          "isIframeAllowed": {
            "type": "boolean"
          },
          "hasDomainApi": {
            "type": "boolean"
          },
          "hasDomainAiPlugin": {
            "type": "boolean"
          },
          "hasSitemap": {
            "type": "boolean"
          },
          "websiteRoutes": {
            "type": "array",
            "items": {},
            "description": "Can be attached via `memory/domains/[websiteDomainSlug]/website-routes.json`"
          },
          "sitemap": {
            "type": "string"
          },
          "robots": {
            "type": "string"
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "WebsiteRoute": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "websiteDomainSlug": {
            "type": "string"
          },
          "pattern": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "timeToStaleMs": {
            "type": "number",
            "description": "Amount of ms before the content is stale and needs to be rescraped\n\nUseful for making my scraping endpoint cheaper"
          },
          "selectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HtmlSelector"
            },
            "description": "The goal is to build a LLM prompt that can create a scraper that systematically collects the valuable data from a HTML page without the need for LLM's.\n\nThis will significantly reduce the cost of scraping."
          },
          "__id": {
            "type": "string"
          }
        }
      },
      "HtmlSelector": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "selector": {
            "type": "string"
          },
          "target": {
            "type": "string",
            "enum": ["text", "html"]
          },
          "isPruningSelector": {
            "type": "boolean"
          },
          "parameterNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hasMore": {
            "type": "boolean"
          },
          "next": {
            "description": "Should be HTMLSelector but recursion isn't allowed in JSONSchema for now"
          }
        },
        "required": ["description", "selector", "target", "parameterNames"],
        "additionalProperties": false
      },
      "Workflow": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "goal": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "$schema": {
            "type": "string",
            "description": "JSON Schema location (URI)\n\n- If the item is stored as a single object in a file, should be here.\n- If the item is stored in a file as an array, `$schema` will be in the object encapsulating the array under the items key"
          },
          "projectRelativePath": {
            "type": "string",
            "description": "Where the item is/was stored"
          },
          "absolutePath": {
            "type": "string",
            "description": "Absolute item location (not always given)"
          },
          "modelName": {
            "type": "string",
            "description": "PascalCase name of the type interface of the model"
          },
          "owner_personSlug": {
            "type": "string"
          },
          "policyContext": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Besides the general purpose context, we might provide some custom context.\n\nNot sure if this is needed, as getting the context from the database might also be a fine way to do it."
          },
          "policy": {
            "type": "string",
            "description": "The policy can be inferred from the message history and then be fine-tuned"
          },
          "workflowAssistants": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "personSlug": {
                  "type": "string",
                  "description": "Persona that was spawned to do this"
                },
                "person": {},
                "chatMessages": {
                  "type": "array",
                  "items": {}
                },
                "relation": {
                  "description": "Relation could contain workflow details like the status"
                },
                "totalCreditPaid": {
                  "type": "number"
                }
              },
              "required": ["personSlug"],
              "additionalProperties": false
            },
            "description": "All executions of this workflow can be represented as spawned agents with chat history\n\nAfter the workflow is finished, the spawned agent despawns (dies) like a Mr. MeeSix...\n\nNB: maybe it's better to add them as relations only and don't list them here"
          },
          "averageCreditCostCalculated": {
            "type": "number",
            "description": "Can be calculated by looking at the assistants."
          },
          "averageCreditCostStandardDeviationCalculated": {
            "type": "number"
          },
          "__id": {
            "type": "string"
          }
        }
      }
    }
  }
}
