{"openapi":"3.1.0","info":{"title":"Vom API","version":"1.0.0"},"paths":{"/v1/organizations/{organization_name}/decide/{policy_name}":{"post":{"tags":["Decision"],"summary":"Execute Policy","description":"Decides a policy using input variables from the request body. In case of\nexecution failure, returns a non 2xx status code and details about the error\nwill be in the `error` field of the response body.","operationId":"execute_policy_v1_organizations__organization_name__decide__policy_name__post","parameters":[{"name":"policy_name","in":"path","required":true,"schema":{"type":"string","title":"Policy Name"}},{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"version_name","in":"query","required":false,"schema":{"type":"string","description":"Name of the specific Version to decide with (e.g. 'v1'). If not specified, a Version will be chosen automatically","title":"Version Name"},"description":"Name of the specific Version to decide with (e.g. 'v1'). If not specified, a Version will be chosen automatically"},{"name":"version_choice_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A version will be chosen deterministically by hashing this key. If not provided the entity ids fields passed in the body will be used instead (e.g. `ssn`). Does not do anything if a version is set explicitly using param `version_name`","title":"Version Choice Key"},"description":"A version will be chosen deterministically by hashing this key. If not provided the entity ids fields passed in the body will be used instead (e.g. `ssn`). Does not do anything if a version is set explicitly using param `version_name`"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Input variables to decide the Policy with","title":"Execution Input"}}}},"responses":{"200":{"description":"The JSON output of executing the Policy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionOutput"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/decide/{policy_name}/multiple":{"post":{"tags":["Decision"],"summary":"Multi Execute Policy","description":"Decides a policy multiple times, all using the same version, but with\ndifferent sets of input variables and outputs for each decision.\n\nReturns a list of output objects, each representing the output of a single\nexecution. If any or all executions fails the overall call will still return\n2xx, but there will be error details in the `error` field for each each\nfailed decision. That is, the HTTP return is only about the overall\noperation and not about the particular status of any decision. Note that the\norder of objects in the returned the list corresponds to the order of the\ninputs.","operationId":"multi_execute_policy_v1_organizations__organization_name__decide__policy_name__multiple_post","parameters":[{"name":"policy_name","in":"path","required":true,"schema":{"type":"string","title":"Policy Name"}},{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"version_name","in":"query","required":false,"schema":{"type":"string","description":"Name of the specific Version to decide with (e.g. 'v1'). If not specified, a Version will be chosen automatically","title":"Version Name"},"description":"Name of the specific Version to decide with (e.g. 'v1'). If not specified, a Version will be chosen automatically"},{"name":"version_choice_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A version will be chosen deterministically by hashing this key. If not provided the entity ids fields passed in the body will be used instead (e.g. `ssn`). Does not do anything if a version is set explicitly using param `version_name`","title":"Version Choice Key"},"description":"A version will be chosen deterministically by hashing this key. If not provided the entity ids fields passed in the body will be used instead (e.g. `ssn`). Does not do anything if a version is set explicitly using param `version_name`"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"List of sets of input variables to decide the Policy with. Each member in the list maps to a single decision and should have all the variables needed to decide the Policy.","title":"Execution Inputs"}}}},"responses":{"200":{"description":"A list of JSON Outputs of executing the Policy multiple times. Each object in the list represents a single execution.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExecutionOutput"},"title":"Response Multi Execute Policy V1 Organizations  Organization Name  Decide  Policy Name  Multiple Post"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/decide/external-decisions/ingest":{"post":{"tags":["Decision"],"summary":"Persist External Execution","description":"Persist a **single execution** produced by an external system.\nThis endpoint does **not** execute any policy.","operationId":"persist_external_execution_v1_organizations__organization_name__decide_external_decisions_ingest_post","parameters":[{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalExecutionInput"}}}},"responses":{"204":{"description":"Persist a single external execution"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/decide/{policy_name}/docs/openapi.json":{"get":{"tags":["Policy Docs"],"summary":"Get Openapi Json","description":"Returns a OpenAPI JSON spec for a policy with an endpoint for its decision\nAPI.","operationId":"get_openapi_json_v1_organizations__organization_name__decide__policy_name__docs_openapi_json_get","parameters":[{"name":"policy_name","in":"path","required":true,"schema":{"type":"string","title":"Policy Name"}},{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"auth_cookie","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Cookie"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Openapi Json V1 Organizations  Organization Name  Decide  Policy Name  Docs Openapi Json Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/organizations/{organization_name}/decide/{policy_name}/docs":{"get":{"tags":["Policy Docs"],"summary":"Swagger Ui","description":"Serves a Swagger Docs UI to view and operate a decision policy, built from\nits openapi.json. Notice that since policy schema is part of an\norganization's private intellectual property, the user needs to authenticate\nwith the Organization's API Key before they can see the docs.","operationId":"swagger_ui_v1_organizations__organization_name__decide__policy_name__docs_get","parameters":[{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"policy_name","in":"path","required":true,"schema":{"type":"string","title":"Policy Name"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/organizations/{organization_name}/push_feature_value":{"post":{"tags":["Feature Value Pushing"],"summary":"Push Feature Value","operationId":"push_feature_value_v1_organizations__organization_name__push_feature_value_post","parameters":[{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureValue"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/push_feature_values":{"post":{"tags":["Feature Value Pushing"],"summary":"Push Feature Values","description":"Pushes a batch of Feature Values.\nReturns:\n    If any of the values fails to be pushed, a ProblemDetails object will be\n    returned. It will have a member in inner_problems for each failure.\n    The index of the input element that failed will be in\n    inner_problems[].index.feature. Returns an empty object if all pushes\n    were successful.","operationId":"push_feature_values_v1_organizations__organization_name__push_feature_values_post","parameters":[{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FeatureValue"},"description":"Feature values to push in batch","title":"Feature Values"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/decision-data/{policy_name}/{dataset_name}":{"get":{"tags":["Decision Data"],"summary":"Upload Data Link","description":"Returns a signed URL that allows uploading a parquet dataset with\npost-decision data for a given policy.\n\nThe dataset should be uploaded to the returned URL by performing a PUT\nrequest with the `.parquet` file in the request body, as a binary. The\nparquet file must contain a column `decision_id` with the id (same returned\nby the /decide API) from the decision that originated the data.\n\nOnce uploaded, the data will be available for analysis in Vom, along with\nthe original decision data.","operationId":"upload_data_link_v1_organizations__organization_name__decision_data__policy_name___dataset_name__get","parameters":[{"name":"policy_name","in":"path","required":true,"schema":{"type":"string","title":"Policy Name"}},{"name":"dataset_name","in":"path","required":true,"schema":{"type":"string","description":"A descriptive name for the dataset reflecting its content or purpose.","title":"Dataset Name"},"description":"A descriptive name for the dataset reflecting its content or purpose."},{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadDataResponse"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/batch-decisions":{"post":{"tags":["Batch Decisions","Decision"],"summary":"Create Batch Execution","description":"Creates a Batch Execution.","operationId":"create_batch_execution_v1_organizations__organization_name__batch_decisions_post","parameters":[{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"auth_cookie","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Cookie"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchExecutionCreation","description":"Data about the batch execution to create. Notice the execution will only really start when the input file is separately uploaded to BatchExecution.input_file_url."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchExecution"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}},"get":{"tags":["Batch Decisions"],"summary":"List Batch Executions","description":"Lists Batch Executions.","operationId":"list_batch_executions_v1_organizations__organization_name__batch_decisions_get","parameters":[{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"policy_name","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Only return Batch Execution that ran using these policies.","title":"Policy Name"},"description":"Only return Batch Execution that ran using these policies."},{"name":"version_name","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"description":"Only return Batch Executions that ran using these Versions.","title":"Version Name"},"description":"Only return Batch Executions that ran using these Versions."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Only return Batch Executions that were created after this time.","title":"Start Time"},"description":"Only return Batch Executions that were created after this time."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"auth_cookie","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Cookie"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BatchExecution"},"title":"Response List Batch Executions V1 Organizations  Organization Name  Batch Decisions Get"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/batch-decisions/{batch_execution_id}":{"get":{"tags":["Batch Decisions","Decision"],"summary":"Read Batch Execution","description":"Reads a Batch Execution.","operationId":"read_batch_execution_v1_organizations__organization_name__batch_decisions__batch_execution_id__get","parameters":[{"name":"batch_execution_id","in":"path","required":true,"schema":{"type":"integer","title":"Batch Execution Id"}},{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"auth_cookie","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Cookie"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchExecution"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/batch-decisions/{batch_execution_id}/results":{"get":{"tags":["Batch Decisions","Decision"],"summary":"Read Batch Execution Results","description":"Returns the authenticated URLs to download the output and errors files of a\nBatch Execution.","operationId":"read_batch_execution_results_v1_organizations__organization_name__batch_decisions__batch_execution_id__results_get","parameters":[{"name":"batch_execution_id","in":"path","required":true,"schema":{"type":"integer","title":"Batch Execution Id"}},{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"auth_cookie","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Cookie"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchExecutionResults"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}},"/v1/organizations/{organization_name}/decisions/{decision_id}":{"patch":{"tags":["Decision History"],"summary":"Amend Execution","description":"Amends a previously taken decision. The previous values are still retained.\nYou can see the full history of the decisions, including original values\nas well as any amendments in the Vom Studio.","operationId":"amend_execution_v1_organizations__organization_name__decisions__decision_id__patch","parameters":[{"name":"decision_id","in":"path","required":true,"schema":{"type":"string","description":"What decision to amend. Same as the `id` field of the return of the decide route","title":"Decision Id"},"description":"What decision to amend. Same as the `id` field of the return of the decide route"},{"name":"organization_name","in":"path","required":true,"schema":{"type":"string","title":"Organization Name"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"API key that grants access to the Organization","title":"X-Api-Key"},"description":"API key that grants access to the Organization"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Amendment","description":"What to change"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Unprocessable Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Request"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Internal Server Error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Service Unavailable"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Conflict"},"412":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetails"}}},"description":"Precondition Failed"}}}}},"components":{"schemas":{"Amendment":{"properties":{"email":{"type":"string","title":"Email","description":"Email of the user making the amendment. They don't need to be a Vom user,\nsince this action can be performed via the API, which is org authenticated."},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment","description":"Extra information inputted by the user who is making the amendment."},"decision":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"}]},"type":"object","title":"Decision","description":"What decision variables are being overridden. Only variables supported by\nthe policy can be overridden. That is:\n\n* \"result\", if the policy uses allowed results.\n* Any output variable."},"case_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Id","description":"If the amendment originates from a case resolution, this is the case ID\nthat triggered it. Stored in the override's ActionRecord."}},"type":"object","required":["email","decision"],"title":"Amendment","description":"Manual change made to a previously saved decision."},"AssignmentError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/assignment/missing-formula"],"title":"AssignmentError","description":"Assignment block configuration errors."},"BatchExecution":{"properties":{"id":{"type":"integer","title":"Id"},"organization_id":{"type":"integer","title":"Organization Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"policy_name":{"type":"string","title":"Policy Name","description":"The name of the policy that will be executed."},"policy_id":{"type":"integer","title":"Policy Id","description":"Same as policy_name but in the form of an id. Only exists so that the\nfrontend can use it to link to the policy page."},"version_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version Id","description":"Runs with a specific version of the policy for all the executions in the\nbatch. None means the default version selection will be used. That is, a\nversion will be chosen between default and experiments for execution in the\nbatch."},"version_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Name","description":"Same as `version_id` but in the form of the version name. Will only be\npresent if `version_id` is and the version is not a draft. That is, if\n`version_id` is present and `version_name` is not, than the version is a\ndraft."},"is_backtest":{"type":"boolean","title":"Is Backtest","description":"A backtest runs a policy against historical data in order to evaluate its\nperformance. Backtests are batch executions that:\n\n* Are of limited size and does not count against the customer's plan.\n* Can read input from the execution history instead of a CSV file.\n* Cannot read data from connectors.\n* Does not log executions to the execution history.\n\nNote that if a piece of external data is required and the default value for\nit is not specified in the InputSchema, the execution will fail.","default":false},"input_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input File","description":"The path within the GCS bucket of the file that will be used as input to\nbatch execution. For example:\n\"orgs/org_name/batch_execution/in/1.policy_name.csv\"\nWill be missing in case `execution_history_input` is used."},"execution_history_input":{"anyOf":[{"$ref":"#/components/schemas/ExecutionHistoryInput"},{"type":"null"}],"description":"Run by reading records from execution history and replaying them against the\npolicy. Note that:\n\n* This option is only available for backtests (`is_backtest == True`).\n* The feature values that were read in the original execution will be\n  available for the backtest, but not new ones. That using a feature that\n  was not read in the original execution will result in an error for that\n  execution within the batch.\n* If present, `input_file` will be missing."},"output_file":{"type":"string","title":"Output File","description":"The path within the GCS bucket of the file that will be written as output to\nbatch execution. For example:\n\"orgs/org_name/batch_execution/out/1.policy_name.csv\""},"initiator_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initiator Email","description":"The e-mail of the user that requested the execution. This is used to notify\nthe end of the execution."},"input_file_upload_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input File Upload Url","description":"An URL that allows the client to upload the `input_file`. The URL includes\nauthentication information so that the bearer does need to be logged in to\nupload the file. The URL is generated when the BatchExecution is created and\nis valid for a limited time."},"upload_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Upload Started At","description":"The date and time the file upload began."},"execution_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Execution Started At","description":"The date and time the execution began. It also represents the moment the\nfile upload was completed."},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"The date and time the execution was completed and the result files are\navailable for download."},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason","description":"The reason that the execution failed. Missing if it has not failed."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"A clear and concise description of the batch execution. This allows us to\ndisambiguate one batch execution from another while also making batch\nexecutions searchable by their descriptions."},"env_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Env Name","description":"The name of the environment which created the batch execution. None means\nit was the main prod environment. This is needed so that only the watchers for\nthe env in which the batch executions was created process it. That is, without\nthis field the same execution would be processed in all dev envs, which would\nnot test a particular env and would lead to conflicts."},"attempts":{"items":{"$ref":"#/components/schemas/DataflowAttempt"},"type":"array","title":"Attempts","description":"Information about each time we tried to run the BatchExecution in Dataflow\nin the order they were attempted. All of the attempts but the last are\nfailed ones. The last one is failed or not depending on the\n`BatchExecution.failure_reason` field."},"statistics":{"additionalProperties":{"additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/BooleanStats"},{"$ref":"#/components/schemas/NumericStats"},{"$ref":"#/components/schemas/DateTimeStats"},{"$ref":"#/components/schemas/StringStats"}],"discriminator":{"propertyName":"var_type","mapping":{"boolean":"#/components/schemas/BooleanStats","datetime":"#/components/schemas/DateTimeStats","numeric":"#/components/schemas/NumericStats","string":"#/components/schemas/StringStats"}}},"type":"object"},"type":"object","title":"Statistics","description":"Statistics about execution variables, grouped by result."}},"type":"object","required":["id","organization_id","created_at","policy_name","policy_id","output_file"],"title":"BatchExecution","description":"Configuration for running many policy executions as part of a batch and\nrepresenting the current status of the overall operation its. Batch\nexecutions can also be \"back tests\", where we run for smaller batches, don't\ncharge the customer and don't have side effect. Batch execution works as\nfollows:\n\n1. A BatchExecution entity is created, which authorizes the client to upload\n   the input file;\n2. Client uploads the input file;\n3. As soon as the upload completes the execution starts;\n4. When execution completes the customer is notified and can download the\n   results file.\n\nAt each step between 2 and 4, the Batch Execution entity is updated, so the\nthe client can poll its state and for example show it on a screen."},"BatchExecutionCreation":{"properties":{"policy_name":{"type":"string","title":"Policy Name"},"version_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version Id","description":"Bypass version selection and use a specific version. Notice that draft\nversions are only supported in backtest. That is, if `is_backtest` is\nTrue."},"is_backtest":{"type":"boolean","title":"Is Backtest","default":false},"execution_history_input":{"anyOf":[{"$ref":"#/components/schemas/ExecutionHistoryInput"},{"type":"null"}],"description":"If absent the input will be read from a separately uploaded CSV file (see\nBatchExecutionCreation.input_file_upload_url)."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["policy_name"],"title":"BatchExecutionCreation"},"BatchExecutionResults":{"properties":{"output_file_download_url":{"type":"string","title":"Output File Download Url","description":"An URL that allows the client to download the `output_file`. The URL\nincludes authentication information so that the bearer does need to be\nlogged in to download the file. The URL is generated when requested and is\nvalid for a limited time."}},"type":"object","required":["output_file_download_url"],"title":"BatchExecutionResults"},"BooleanStats":{"properties":{"var_type":{"type":"string","const":"boolean","title":"Var Type","default":"boolean"},"count":{"type":"integer","title":"Count"},"true_rate":{"type":"number","title":"True Rate"},"false_rate":{"type":"number","title":"False Rate"}},"type":"object","required":["count","true_rate","false_rate"],"title":"BooleanStats","description":"The statistics that are generated for boolean variables when a batch\nexecution is run."},"ConditionalError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/conditional/missing-condition","http://api.vomdecision.com/error/graph/block/conditional/missing-condition-label","http://api.vomdecision.com/error/graph/block/conditional/missing-else-label","http://api.vomdecision.com/error/graph/block/conditional/missing-branch-next","http://api.vomdecision.com/error/graph/block/conditional/missing-else-next"],"title":"ConditionalError","description":"Conditional block configuration errors."},"ConnectorError":{"type":"string","enum":["http://api.vomdecision.com/error/execution/connector/failed-extraction","http://api.vomdecision.com/error/execution/connector/failed-to-contact-provider","http://api.vomdecision.com/error/execution/connector/invalid-response","http://api.vomdecision.com/error/execution/connector/not-found","http://api.vomdecision.com/error/execution/connector/unauthorized"],"title":"ConnectorError","description":"Errors that can happen during Connector's run."},"ConnectorRun":{"properties":{"name":{"type":"string","title":"Name"},"token_response":{"anyOf":[{"$ref":"#/components/schemas/ProviderResponse"},{"type":"null"}],"description":"Response from the provider when we fetched the token. Notice we remove\nsecrets from this response, since it's widely accessible. For example, we\nomit `ProviderResponse.attempts.body`."},"provider_response":{"anyOf":[{"$ref":"#/components/schemas/ProviderResponse"},{"type":"null"}],"description":"Information retrieved from the connector as well metadata about it."},"block_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Block Index","description":"Index of the block where we attempted to run the connector. Notice the read\ncan be triggered by a connected input variable access or by a explicit\nReadDataBlock."}},"type":"object","required":["name"],"title":"ConnectorRun","description":"Record of a connector run as part of a policy execution."},"DataflowAttempt":{"properties":{"region":{"type":"string","title":"Region","description":"Where the dataflow was launched. This allows us to poll for status in the\ncorrect region and if needed to launch retries in different regions."},"job_id":{"type":"string","title":"Job Id","description":"The id returned by Google Dataflow when the job is launched. This is used\nto poll later for the job status."},"started_at":{"type":"string","format":"date-time","title":"Started At"}},"type":"object","required":["region","job_id","started_at"],"title":"DataflowAttempt","description":"Information about an attempt to run a BatchExecution via Dataflow job in\nGCP. Since those jobs might fail transiently we record this information\nabout each attempt, which can be used to decide whether any retries should\nbe attempted."},"DateTimeStats":{"properties":{"var_type":{"type":"string","const":"datetime","title":"Var Type","default":"datetime"},"count":{"type":"integer","title":"Count"},"min":{"type":"string","title":"Min"},"mean":{"type":"string","title":"Mean"},"max":{"type":"string","title":"Max"},"std":{"type":"string","title":"Std","description":"Represent the Standard Deviation as a ISO 8601 Duration String."},"percentiles":{"additionalProperties":{"type":"string"},"type":"object","title":"Percentiles","description":"The percentiles that are computed for the datetime variable. The keys are\nthe percentiles and the values are the values of the percentile."}},"type":"object","required":["count","min","mean","max","std","percentiles"],"title":"DateTimeStats","description":"The statistics that are generated for datetime variables when a batch\nexecution is run. Values are ISO 8601 strings representing the date and\ntime, except for `std` that represent the ISO 8601 duration, e.g.\n\"P1M2H3M4S\""},"ElementIndex":{"properties":{"assignment":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Assignment","description":"Index of the assignment within the `AssignmentBlock.assignments`"},"branch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Branch","description":"Index of the branch within the `ConditionalBlock.branches`"},"table_input_column":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Table Input Column","description":"Index of the input column within the `TableBlock.input_columns`"},"table_output":{"anyOf":[{"$ref":"#/components/schemas/TableOutputIndex"},{"type":"null"}],"description":"Indices into `TableBlock.rows[row_index].output[column_index]`."}},"type":"object","title":"ElementIndex","description":"Index of an element within a block such as an assignment within the\n`AssignmentBlock.assignments`"},"EndError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/end/missing-result","http://api.vomdecision.com/error/graph/block/end/invalid-result"],"title":"EndError","description":"End block configuration errors."},"ExecutedBlock":{"properties":{"index":{"type":"integer","title":"Index","description":"Index of the executed block into the original PolicyVersion.graph.blocks\nfield."},"variable_accesses":{"items":{"$ref":"#/components/schemas/VariableAccess"},"type":"array","title":"Variable Accesses","description":"Variables read by this block."},"assignments":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"}]},"type":"object","title":"Assignments","description":"Variables successfully assigned by this block. Notice this includes not only\nassignments done by the assignment block, but assignments done by any block,\nsuch as the one done by the end block."},"feature_writes":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"}]},"type":"object","title":"Feature Writes","description":"Values written to the Feature Store by this block. Keyed by the feature\nname. Unlike `assignments`, these values are not assigned to any variable\nwithin the policy — they are only used for the write operation."},"branch":{"anyOf":[{"type":"integer"},{"type":"string","const":"else"},{"type":"null"}],"title":"Branch","description":"If a `ConditionalBlock` was executed without errors this field will hold:\n* In case a branch was selected from `ConditionalBlock.branches`: The\n  zero-based index of the branch.\n* \"else\" if the else branch was selected."},"input_columns":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"}]},"type":"object","title":"Input Columns","description":"If a `TableBlock` was executed, holds the value considered for each input\ncolumn. That is, the values resulting from executing the input column\nformulas. The dict is keyed by input column index within\n`TableBlock.input_columns`."},"row":{"anyOf":[{"type":"integer"},{"type":"string","const":"else"},{"type":"null"}],"title":"Row","description":"If a `TableBlock` was executed without errors this field will hold:\n* In case a row was selected from `TableBlock.rows`: The zero-based index\n  of the row.\n* \"else\" if the else output was selected."},"execution_error":{"anyOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"type":"null"}],"description":"Any error that occurred during the execution of this block. Notice that\nsome assignments might have completed before the error and will be in field\n`assignments`."},"executed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Executed At"},"latency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latency","description":"Time it took to execute this block."},"gen_ai":{"anyOf":[{"$ref":"#/components/schemas/GenAiExecution"},{"type":"null"}],"description":"Information about the execution of the Gen AI model, it will be None if the\nblock is not Gen AI."},"http_request":{"anyOf":[{"$ref":"#/components/schemas/HTTPRequestRun"},{"type":"null"}],"description":"Information about the HTTP request made by this block, it will be None if the\nblock is not an HTTP Request Block."},"child_execution_id":{"items":{"type":"string"},"type":"array","title":"Child Execution Id","description":"If this block ran another policy version this will contain the ids of all\nits executions (AKA idempotence_key). "}},"type":"object","required":["index"],"title":"ExecutedBlock","description":"Information about how a specific block was executed."},"ExecutionError":{"type":"string","enum":["http://api.vomdecision.com/error/execution/input/feature-value-not-found","http://api.vomdecision.com/error/execution/not-started/missing-default-version","http://api.vomdecision.com/error/execution/not-started/policy-not-found","http://api.vomdecision.com/error/execution/not-started/version-not-found","http://api.vomdecision.com/error/execution/input/entity/missing","http://api.vomdecision.com/error/execution/input/entity/invalid","http://api.vomdecision.com/error/execution/input/variable/missing","http://api.vomdecision.com/error/execution/input/variable/type-mismatch","http://api.vomdecision.com/error/execution/model/runtime-problem","http://api.vomdecision.com/error/execution/child","http://api.vomdecision.com/error/execution/batch/too-broad-sample","http://api.vomdecision.com/error/execution/batch/invalid-record-count","http://api.vomdecision.com/error/execution/batch/no-executions-in-range","http://api.vomdecision.com/error/execution/model/gen-ai","http://api.vomdecision.com/error/execution/model/gen-ai/invalid-value","http://api.vomdecision.com/error/execution/model/gen-ai/missing-value","http://api.vomdecision.com/error/execution/model/gen-ai/invalid-output","http://api.vomdecision.com/error/execution/model/gen-ai/missing-output","http://api.vomdecision.com/error/execution/http-request/failed-extraction","http://api.vomdecision.com/error/execution/http-request/failed-to-contact-provider","http://api.vomdecision.com/error/execution/http-request/invalid-response","http://api.vomdecision.com/error/execution/http-request/missing-output","http://api.vomdecision.com/error/execution/http-request/not-found","http://api.vomdecision.com/error/execution/http-request/unauthorized","http://api.vomdecision.com/error/execution/run-policy/input/invalid-length"],"title":"ExecutionError","description":"Errors that can happen during execution."},"ExecutionHistoryInput":{"properties":{"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Records with execution time larger than or equal to this value will be\nincluded."},"end_time":{"type":"string","format":"date-time","title":"End Time","description":"Records with execution time smaller than this value will be included."},"record_count":{"type":"integer","title":"Record Count","description":"Maximum number of records from the period do include. There is no guarantee\nof fair sampling in the period. For example, the system might chose all\nrecords from the beginning of the period."}},"type":"object","required":["start_time","end_time","record_count"],"title":"ExecutionHistoryInput"},"ExecutionOutput":{"properties":{"manual_review":{"anyOf":[{"$ref":"#/components/schemas/ManualReviewParams"},{"type":"null"}],"description":"Evaluated manual review settings for case creation. Internal only."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Unique id of this execution. It can be used by the client to match this\nexecution to other representations of it, for example coming from CSV dumps."},"version_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Name","description":"Name of the policy version that was executed. Will be None if:\n* The version was not found, in which case the attempted name will be\n  logged in the error field.\n* If the execution failed before selecting a version.\n* If execution was run with a draft version (drafts have no name)."},"decision":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"}]},"type":"object"},{"type":"null"}],"title":"Decision","description":"Variables output by the policy execution. If the execution fails, this will\nbe None."},"executed_blocks":{"items":{"$ref":"#/components/schemas/ExecutedBlock"},"type":"array","title":"Executed Blocks","description":"Record of all blocks executed in the order they were executed. That is, non\nexecuted blocks will not show up in this field. It's meant to be used as a\ndebugging aid to understand how the policy reached its decision. Notice that\nif an error happened when executing a block it will be recorded both in this\nfield and in the `error` field."},"error":{"anyOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"type":"null"}],"description":"Any error that occurred during the execution, including version selection\nissues. If None it means the execution was successful."},"positive_outcome":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Positive Outcome","description":"Whether this execution resulted in a positive outcome. For example in the\ncontext of credit granting, it might be whether the credit was approved.\nWill be missing if the the policy version output schema does not use allowed\nresults or if the result of the execution is not configured as positive or\nnegative in the output schema."},"feature_accesses":{"items":{"$ref":"#/components/schemas/FeatureAccess"},"type":"array","title":"Feature Accesses","description":"Record of all Feature accesses performed as part of the policy execution."},"connectors_run":{"items":{"$ref":"#/components/schemas/ConnectorRun"},"type":"array","title":"Connectors Run","description":"Record of all connectors run as part of the policy execution."}},"type":"object","title":"ExecutionOutput","description":"Output of the policy execution REST endpoint."},"ExternalExecutionInput":{"properties":{"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Mandatory input data used to evaluate policies or scenarios.\nThe structure is flexible and depends on the schema expected\nby the execution engine."},"output":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Output","description":"Optional output generated by the external system prior to ingestion.\nWhen provided, it may be used for auditing, comparison, or enrichment\npurposes."},"from_external_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From External Source","description":"Identifier of the external system or integration that originated\nthe execution (e.g., service name, connector ID, or partner platform)."},"time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time","description":"Optional date and time attribute for retroactive entries."}},"type":"object","required":["input"],"title":"ExternalExecutionInput","description":"Represents the payload of an execution received from an external system.\n\nThis model encapsulates the input data required to persist an external execution,\nan optional output produced by the external source, and metadata identifying\nthe origin of the request."},"FeatureAccess":{"properties":{"variable_name":{"type":"string","title":"Variable Name","description":"Variable that received the value read from the Feature."},"feature_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature Name","description":"Feature that was read. Will be missing when running on modes that don't\nallow reading features, like backtests, or when a default value was used.\nNote that in those cases the variable_name should be still be present and\ncan be used alongside the PolicyVersion input schema to deduce the Feature\nat a later point."},"entity_id":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Entity Id","description":"What entity the value is about. Notice the keys in this field are the ones\nof the Feature accessed, not necessarily the same as any entity vars fed\ninto Policy Execution. For instance, the policy might use a entity id key\n'cpf', but if the Feature has no entity id keys, this field will be an empty\ndictionary. It will be missing if a value was not found and a default was\nused instead."},"used_default":{"type":"boolean","title":"Used Default","description":"Whether a value was not found and a the default was used instead, in which\ncase the default will show up in the `value` field.","default":false},"time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time","description":"Timestamp with timezone of the FeatureValue read. It will be None if a\nvalue was not found and a default was used instead or if the value is not\nassociated to a time."},"value":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Value","description":"The value that was ultimately assigned to the variable, irrespective of\nwhether it was a value read or the default configured in the policy schema.\nIf it is None, it means a value was not found for the given entity id, which\nmeans there was an error reading the feature."},"block_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Block Index","description":"Index of the block where we attempted to read the feature variable. It can\nbe None to support feature accessed for the calculation of the positive\noutcome (what is not done in a specific block)."},"read_from_feature_store":{"type":"boolean","title":"Read From Feature Store","description":"Whether the value was read from the Feature Store.","default":false},"read_from_connector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Read From Connector","description":"Name of the connector that was used to read the value. If None, it means the\nvalue wasn't read from a connector."}},"type":"object","required":["variable_name"],"title":"FeatureAccess","description":"Record of each Feature Value read as part of a Policy Execution."},"FeatureError":{"type":"string","enum":["http://api.vomdecision.com/error/feature/failed-push","http://api.vomdecision.com/error/feature/partially-failed-push"],"title":"FeatureError"},"FeatureValue":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the Feature to push the value to. It must have been previously\ncreated."},"entity_id":{"additionalProperties":{"type":"string"},"type":"object","title":"Entity Id","description":"What entity the value is about, in the form of string key-value pairs, for\nexample {'cpf': '14936065730'}. Notice:\n* To create a new FeatureValue, values must be passed for all the\n  Feature.entity_id_keys.\"\n* Just as for Feature.entity_id_keys the values of this field should always\n  be lowercased."},"time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time","description":"The time in UTC (i.e. ending with a Z) the value corresponds to. If None, it\nmeans that value is not about any specific time. A feature that only uses\ntimeless values will not be a time series and will hold a single value\n(overwritten by each push)."},"value":{"title":"Value","description":"Value to be pushed to the Feature. It must be of the type specified by\nFeature.data_type."}},"type":"object","required":["name","entity_id","value"],"title":"FeatureValue","description":"One value to be pushed into a Feature. If the Feature already has a value\nwith the same entity_id and time, it will be overwritten."},"FormulaError":{"type":"string","enum":["http://api.vomdecision.com/error/formula/calculation","http://api.vomdecision.com/error/formula/division-by-zero","http://api.vomdecision.com/error/formula/empty","http://api.vomdecision.com/error/formula","http://api.vomdecision.com/error/formula/invalid-argument","http://api.vomdecision.com/error/formula/invalid-argument-count","http://api.vomdecision.com/error/formula/invalid-syntax","http://api.vomdecision.com/error/formula/overflow","http://api.vomdecision.com/error/formula/type-mismatch","http://api.vomdecision.com/error/formula/undefined-function","http://api.vomdecision.com/error/formula/undefined-variable","http://api.vomdecision.com/error/formula/variable-type-change"],"title":"FormulaError","description":"Formula errors can happen both at configuration and execution time."},"GenAiExecution":{"properties":{"input_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Tokens"},"output_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Tokens"},"raw_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Response","description":"The model's raw response content as returned by the provider, before\nstructured-output parsing and sanitization. Kept for troubleshooting."}},"type":"object","title":"GenAiExecution","description":"Information about the execution of this block, if it's an AIModelBlock running an GenAI Model."},"GenericError":{"type":"string","enum":["http://api.vomdecision.com/error/access-denied","http://api.vomdecision.com/error/already-exists","http://api.vomdecision.com/error/conflict","http://api.vomdecision.com/error/failed-precondition","http://api.vomdecision.com/error/in-use","http://api.vomdecision.com/error/internal-error","http://api.vomdecision.com/error/invalid-param","http://api.vomdecision.com/error/missing-param","http://api.vomdecision.com/error/not-found","http://api.vomdecision.com/error/reserved","http://api.vomdecision.com/error/type-mismatch"],"title":"GenericError"},"GraphError":{"type":"string","enum":["http://api.vomdecision.com/error/graph","http://api.vomdecision.com/error/graph/input","http://api.vomdecision.com/error/graph/input/empty","http://api.vomdecision.com/error/graph/input/entity-id","http://api.vomdecision.com/error/graph/input/entity-id/reserved","http://api.vomdecision.com/error/graph/input/variable","http://api.vomdecision.com/error/graph/input/variable/reserved","http://api.vomdecision.com/error/graph/output","http://api.vomdecision.com/error/graph/output/variable","http://api.vomdecision.com/error/graph/output/variable/reserved","http://api.vomdecision.com/error/graph/output/result/insufficient","http://api.vomdecision.com/error/graph/output/result/empty-value","http://api.vomdecision.com/error/graph/output/variable/not-assigned","http://api.vomdecision.com/error/graph/output/variable/type-mismatch","http://api.vomdecision.com/error/graph/block","http://api.vomdecision.com/error/graph/block/variable","http://api.vomdecision.com/error/graph/block/missing-next","http://api.vomdecision.com/error/graph/block/variable/input","http://api.vomdecision.com/error/graph/block/variable/missing","http://api.vomdecision.com/error/graph/block/variable/reserved"],"title":"GraphError","description":"Graph configuration errors, i.e. not execution."},"HTTPRequestRun":{"properties":{"response":{"anyOf":[{"$ref":"#/components/schemas/ProviderResponse"},{"type":"null"}],"description":"Information about the HTTP response(s) for this request."}},"type":"object","title":"HTTPRequestRun","description":"Record of an HTTP Request Block run as part of a policy execution."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KnownEntityIdKey":{"type":"string","enum":["cpf","cnpj","ssn","ein"],"title":"KnownEntityIdKey","description":"Policy executions and Features are about entities, which are identified by\nstring key-values. This enum holds known keys, for which there is special\nsupport, for example in the UI and when validating id values.\n\nSee the [project README](../../README.md) for the definition of Entity."},"ManualReviewError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/end/manual-review/missing-queue","http://api.vomdecision.com/error/graph/block/end/manual-review/invalid-priority-type","http://api.vomdecision.com/error/graph/block/end/manual-review/invalid-sla-type"],"title":"ManualReviewError","description":"Manual review configuration errors in end blocks."},"ManualReviewParams":{"properties":{"queue_id":{"type":"integer","title":"Queue Id"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"sla_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sla Minutes"},"assigned_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned To"}},"type":"object","required":["queue_id"],"title":"ManualReviewParams","description":"Evaluated manual review settings for case creation."},"ModelError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/model/missing-label","http://api.vomdecision.com/error/graph/block/model/invalid-model","http://api.vomdecision.com/error/graph/block/model/invalid-model-prompt-combination","http://api.vomdecision.com/error/graph/block/model/invalid-model/unsupported-opset","http://api.vomdecision.com/error/graph/block/model/invalid-model/unsupported-input-type","http://api.vomdecision.com/error/graph/block/model/invalid-model/unsupported-input-shape","http://api.vomdecision.com/error/graph/block/model/invalid-model/unsupported-output-type","http://api.vomdecision.com/error/graph/block/model/invalid-model/unsupported-output-shape","http://api.vomdecision.com/error/graph/block/model/invalid-model/no-variable","http://api.vomdecision.com/error/graph/block/model/gen-ai/prompt/empty","http://api.vomdecision.com/error/graph/block/model/gen-ai/prompt/undefined-variable","http://api.vomdecision.com/error/graph/block/model/gen-ai/output/empty","http://api.vomdecision.com/error/graph/block/model/gen-ai/output/name/invalid","http://api.vomdecision.com/error/graph/block/model/gen-ai/output/description/empty"],"title":"ModelError","description":"Model block configuration errors."},"NumericStats":{"properties":{"var_type":{"type":"string","const":"numeric","title":"Var Type","default":"numeric"},"count":{"type":"integer","title":"Count"},"sum":{"type":"number","title":"Sum"},"min":{"type":"number","title":"Min"},"mean":{"type":"number","title":"Mean"},"max":{"type":"number","title":"Max"},"std":{"type":"number","title":"Std"},"percentiles":{"additionalProperties":{"type":"number"},"type":"object","title":"Percentiles","description":"The percentiles that are computed for the numeric variable. The keys are the\npercentiles and the values are the values of the percentile."}},"type":"object","required":["count","sum","min","mean","max","std","percentiles"],"title":"NumericStats","description":"The statistics that are generated for numeric variables when a batch\nexecution is run."},"PolicyError":{"type":"string","enum":["http://api.vomdecision.com/error/policy/missing-default-version"],"title":"PolicyError","description":"Policy configuration errors, i.e. not execution."},"ProblemDetails":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP Status Code."},"type":{"anyOf":[{"$ref":"#/components/schemas/GenericError"},{"$ref":"#/components/schemas/PolicyError"},{"$ref":"#/components/schemas/VersionError"},{"$ref":"#/components/schemas/GraphError"},{"$ref":"#/components/schemas/ConditionalError"},{"$ref":"#/components/schemas/AssignmentError"},{"$ref":"#/components/schemas/TableError"},{"$ref":"#/components/schemas/ModelError"},{"$ref":"#/components/schemas/ReadDataError"},{"$ref":"#/components/schemas/WriteFeatureError"},{"$ref":"#/components/schemas/RunPolicyError"},{"$ref":"#/components/schemas/EndError"},{"$ref":"#/components/schemas/ManualReviewError"},{"$ref":"#/components/schemas/FormulaError"},{"$ref":"#/components/schemas/ExecutionError"},{"$ref":"#/components/schemas/ConnectorError"},{"$ref":"#/components/schemas/FeatureError"},{"$ref":"#/components/schemas/VaultError"}],"title":"Type","description":"A more detailed error code in the form of an URI starting with\n\"http://api.vomdecision.com/error\". Can be though of as \"what happened\"."},"element_type":{"anyOf":[{"type":"string","enum":["alert_thresholds/auto_close_minutes","alert_thresholds/closing_threshold","alert_thresholds/min_events","alert_thresholds/opening_threshold","block","block/ai_model","block/ai_model/file","block/ai_model/file/input","block/ai_model/file/output","block/ai_model/gen_ai","block/ai_model/gen_ai/output_variable","block/ai_model/gen_ai/output_variable/description","block/ai_model/gen_ai/output_variable/name","block/ai_model/gen_ai/output_variable/type","block/ai_model/gen_ai/prompt","block/ai_model/label","block/assignment/assignment/formula","block/assignment/assignment/variable","block/conditional/branch/condition","block/conditional/branch/label","block/conditional/else/label","block/end","block/end/manual_review_settings","block/end/manual_review_settings/priority","block/end/manual_review_settings/sla_minutes","block/end/output_assignment/formula","block/end/output_assignment/variable","block/end/result","block/http_request/body","block/http_request/extractor","block/http_request/extractor/json_path","block/http_request/method","block/http_request/status_matcher/condition_json_path","block/http_request/status_matcher/status_code","block/http_request/url","block/read_data/key_mapping","block/read_data/prefix","block/read_data/sources","block/run_policy","block/run_policy/input","block/run_policy/output","block/write_feature/entries","block/write_feature/entries/formula","block/write_feature/key_mapping","block/table/else/output","block/table/input_column","block/table/input_column/value","block/table/output_column","block/table/row","block/table/row/input_cell","block/table/row/input_cell/condition","block/table/row/output","feature_value","input","input/entity","input/variable","output/allowed_result","output/positive_outcome","output/variable","provider_settings/body","provider_settings/token_authentication/body","response_status_matcher/condition_json_path","response_status_matcher/status_code","response_extractor","response_extractor/suffix","response_extractor/json_path","token_extractor","token_extractor/json_extractor_path","token_response_status_matcher/condition_json_path","token_response_status_matcher/status_code"]},{"type":"null"}],"title":"Element Type","description":"Where the error happened in the operation's information architecture. If\nmissing the error is about the whole operation."},"index":{"$ref":"#/components/schemas/ProblemIndex","description":"If the error is about an element within a list, as specified in\n`element_type`, gives more information about where in the list the error\nhappened. It's a list to support hierarchical errors."},"where":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Where","description":"Where the error happened, as a friendly description. It's the human\nreadable counterpart to the machine readable `element_type` and `index`."},"title":{"type":"string","title":"Title","description":"Human readable, possibly localized, version of the type. Should be dev\nfriendly but does not need to necessarily be end-user friendly."},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail","description":"More detail about this specific error occurrence in human readable form and\npossibly localized. It should together with `title` and `detail` fully\ndescribe the problem. That is, \"{title}: {detail} at {where}\" should be\nreadable, complete and non-repetitive. For example, \"Function not defined:\nfun_name at fun_name(var1)\". Notice `detail` should contain no information\nabout where the error happened, like the name of the variable or element\nwith the error, as that should go into `where`."},"structured_detail":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Structured Detail","description":"A structured alternative to `detail`. Keys should be descriptive and values\nshould follow the same principles as `detail`. It should be used when the\nfrontend needs to show discrete fields about an error."},"inner_problems":{"items":{"$ref":"#/components/schemas/ProblemDetails"},"type":"array","title":"Inner Problems","description":"Some errors are composed of a set of more detailed error conditions. For\nexample the graph might fail to validate because of 5 problems in several of\nits blocks. This fields extends RFC7807 allowing us to represent such\ncomposite errors. For simplicity, the inner errors cannot be composites\nthemselves."}},"type":"object","required":["status","type","title"],"title":"ProblemDetails","description":"Models the Problem JSON object from https://www.rfc-editor.org/rfc/rfc7807."},"ProblemIndex":{"properties":{"variable":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Variable","description":"Index into `Graph.input_schema.variable` not the input variables of a\nparticular execution."},"output_variable":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Variable","description":"Index into `Graph.output_schema.variable`."},"entity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entity","description":"Index into `Graph.input_schema.entity_id_keys`."},"result":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Result","description":"Index into `Graph.output_schema.entity_id_keys`."},"block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Block","description":"Index into `Graph.blocks`."},"item_within_block":{"anyOf":[{"type":"integer"},{"type":"string","const":"else"},{"type":"null"}],"title":"Item Within Block","description":"Index into one of these, depending on block type:\n* `ConditionalBlock.branches`.\n* `AssignmentBlock.assignments`\n* `TableBlock.rows`, except that \"else\" means the else row was selected."},"input_column":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Column","description":"Index into `TableBlock.input_columns`."},"output_column":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Column","description":"Index into `TableBlock.output_column`."},"feature":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feature","description":"Index into `push_values`'s `feature_values` list."},"model_input":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Input","description":"Zero based index of an input of a model defined in\n`AiModelBlock.model_file`."},"model_output":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Output","description":"Zero based index of an output of a model defined in\n`AiModelBlock.model_file`."},"model_gen_ai_output_variable":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Gen Ai Output Variable","description":"Zero based index of an output variable of a GenAI model defined\nin `AiModelBlock.gen_ai.output_variables`."},"key_mapping":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Key Mapping","description":"Zero based index of a key mapping in `ReadDataBlock.key_mappings`."},"source":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source","description":"Zero based index of a source in `ReadDataBlock.sources`."},"input_mapping":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Mapping","description":"Zero based index of a `RunPolicyBlock.input_mapping`."},"output_mapping":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Mapping","description":"Zero based index of a `RunPolicyBlock.output_mapping`."},"text_column":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Text Column","description":"Column index within a formula text."},"text_line":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Text Line","description":"Line index within a formula text."},"text_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Text Length","description":"If we want to highlight a fragment of the formula text, e.g. the whole name\nof the non-defined function, `text_column` and `text_line` say where the\nerror starts nd this field says how many chars it extends into."},"response_status_matcher":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Status Matcher","description":"Index into `HTTPSettings.response_status_matchers`"},"token_response_status_matcher":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Token Response Status Matcher","description":"Index into `CustomTokenAuthentication.response_status_matchers`"},"response_extractor":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Extractor","description":"Index into `HTTPSettings.response_extractors`."},"connector_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connector Name","description":"Name of the connector that failed"},"feature_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feature Name","description":"Name of the feature that could not be read"}},"type":"object","title":"ProblemIndex","description":"Information about where in a list of elements the problem happened. Since\nthe same error can be about elements of multiples lists more than one index\ncan be set. For example, the error might be about how the first variable\nfrom the input schema is used on the second conditional of the third block\nof the graph. All int fields are zero based indexes."},"ProviderAttemptResponse-Input":{"properties":{"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code","description":"HTTP status code from the provider. If the provider never responded\n`failed_before_getting_response` will be set. If response error detectors\nchange a 200 into another error code, the resulting one will show up here."},"original_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Original Status","description":"Original HTTP status code returned by the provider before any matcher\nchanged `status_code`."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers","description":"HTTP headers received from the provider"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body","description":"Raw response body received from the provider"},"failed_before_getting_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed Before Getting Response","description":"Details on what failed before getting a response. None if the attempt was\nsuccessful."},"elapsed_secs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elapsed Secs","description":"Time from issuing the request until there was a response, or we concluded\nthe request failed (e.g. there was a timeout).\n\nIt's None only in the case of older data, recorded when the field did not\nexist."},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When the request was issued. None for data recorded before the field existed."}},"type":"object","title":"ProviderAttemptResponse","description":"Data about one attempt of contacting an external provider."},"ProviderAttemptResponse-Output":{"properties":{"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code","description":"HTTP status code from the provider. If the provider never responded\n`failed_before_getting_response` will be set. If response error detectors\nchange a 200 into another error code, the resulting one will show up here."},"original_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Original Status","description":"Original HTTP status code returned by the provider before any matcher\nchanged `status_code`."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers","description":"HTTP headers received from the provider"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body","description":"Raw response body received from the provider"},"failed_before_getting_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed Before Getting Response","description":"Details on what failed before getting a response. None if the attempt was\nsuccessful."},"elapsed_secs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elapsed Secs","description":"Time from issuing the request until there was a response, or we concluded\nthe request failed (e.g. there was a timeout).\n\nIt's None only in the case of older data, recorded when the field did not\nexist."},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At","description":"When the request was issued. None for data recorded before the field existed."},"body_parsed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Parsed","description":"Structured view of the XML response body serialized as JSON string.","readOnly":true}},"type":"object","required":["body_parsed"],"title":"ProviderAttemptResponse","description":"Data about one attempt of contacting an external provider."},"ProviderResponse":{"properties":{"elapsed_secs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elapsed Secs","description":"Time it took overall, including all attempts and any wait between them."},"attempts":{"items":{"$ref":"#/components/schemas/ProviderAttemptResponse-Input"},"type":"array","title":"Attempts","description":"One member for each time we tried to contact the provider. There can be\nmultiple because we may retry the request. The attempts are in the order\nthey were made. That means the last attempt is a success, if there ever was\none."}},"type":"object","required":["attempts"],"title":"ProviderResponse","description":"How an external provider responded to a request."},"ReadDataError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/read-variable/source/default-type-mismatch","http://api.vomdecision.com/error/graph/block/read-variable/source/existing-variable","http://api.vomdecision.com/error/graph/block/read-variable/invalid-prefix","http://api.vomdecision.com/error/graph/block/read-variable/source/invalid-variable-name","http://api.vomdecision.com/error/graph/block/read-variable/source/missing-source","http://api.vomdecision.com/error/graph/block/read-variable/no-source-defined","http://api.vomdecision.com/error/graph/block/read-variable/undefined-variable","http://api.vomdecision.com/error/graph/block/read-variable/type-mismatch"],"title":"ReadDataError","description":"Read Variable block configuration errors."},"RunPolicyError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/run-policy/policy/invalid","http://api.vomdecision.com/error/graph/block/run-policy/input/missing","http://api.vomdecision.com/error/graph/block/run-policy/input/invalid","http://api.vomdecision.com/error/graph/block/run-policy/input/invalid-reference","http://api.vomdecision.com/error/graph/block/run-policy/input/duplicated","http://api.vomdecision.com/error/graph/block/run-policy/input/type-mismatch","http://api.vomdecision.com/error/graph/block/run-policy/output/missing","http://api.vomdecision.com/error/graph/block/run-policy/output/already-defined","http://api.vomdecision.com/error/graph/block/run-policy/output/duplicated","http://api.vomdecision.com/error/graph/block/run-policy/output/invalid"],"title":"RunPolicyError","description":"Run Policy block configuration errors."},"StringStats":{"properties":{"var_type":{"type":"string","const":"string","title":"Var Type","default":"string"},"count":{"type":"integer","title":"Count"},"values_count":{"additionalProperties":{"type":"integer"},"type":"object","title":"Values Count","description":"The count of each value recorded for the string variable. The dict is keyed\nby the value and provides the count of that value.\n\nFor performances reasons, we only store them for \"output\" variables (i.e.,\nvariables that are not in the `InputSchema`). We do this because they are\nmore likely to be categorical hence have a limited range of values. The\nideal solution would be to support JSON Schema as variable type and store\nthe value counts only for variables that are ENUMS (categorical for sure)."}},"type":"object","required":["count","values_count"],"title":"StringStats","description":"The statistics that are generated for string variables when a batch\nexecution is run."},"TableError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/table/input-column/missing","http://api.vomdecision.com/error/graph/block/table/input-column/empty","http://api.vomdecision.com/error/graph/block/table/input-column/invalid","http://api.vomdecision.com/error/graph/block/table/row/missing","http://api.vomdecision.com/error/graph/block/table/row/input-cell/missing","http://api.vomdecision.com/error/graph/block/table/row/input-cell/invalid","http://api.vomdecision.com/error/graph/block/table/row/input-cell/condition/missing","http://api.vomdecision.com/error/graph/block/table/row/input-cell/condition/invalid","http://api.vomdecision.com/error/graph/block/table/row/output-cell/missing","http://api.vomdecision.com/error/graph/block/table/row/input-cell/type-mismatch","http://api.vomdecision.com/error/graph/block/table/row/output-cell/type-mismatch"],"title":"TableError","description":"Table block configuration errors."},"TableOutputIndex":{"properties":{"row":{"anyOf":[{"type":"integer"},{"type":"string","const":"else"}],"title":"Row"},"column":{"type":"integer","title":"Column"}},"type":"object","required":["row","column"],"title":"TableOutputIndex","description":"Indices into `TableBlock.rows[row].output[column]` or\n`TableBlock.else_output.values[column]` in case row is \"else\"."},"UploadDataResponse":{"properties":{"upload_to":{"type":"string","title":"Upload To","description":"The URL to upload the dataset to."}},"type":"object","required":["upload_to"],"title":"UploadDataResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VariableAccess":{"properties":{"name":{"type":"string","title":"Name"},"value":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"},{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Value","description":"None means the value accessed was the same one provided in the execution\ninput. This allows not recording large repeated value, making logs lighter."},"element":{"anyOf":[{"$ref":"#/components/schemas/ElementIndex"},{"type":"null"}],"description":"Element that the access was done for. Will be None in case the variable was\nread for the block as whole rather than for an element within it."}},"type":"object","required":["name"],"title":"VariableAccess","description":"Record of each Variable read as part of a Policy Execution."},"VaultError":{"type":"string","enum":["http://api.vomdecision.com/error/vault/internal-error","http://api.vomdecision.com/error/vault/unavailable","http://api.vomdecision.com/error/vault/unauthorized"],"title":"VaultError"},"VersionError":{"type":"string","enum":["http://api.vomdecision.com/error/policy-version/default-version-mismatch","http://api.vomdecision.com/error/policy-version/failing-scenario","http://api.vomdecision.com/error/policy-version/experiment-percentage/out-of-range","http://api.vomdecision.com/error/policy-version/missing-entity","http://api.vomdecision.com/error/policy-version/must-specify-formula","http://api.vomdecision.com/error/policy-version/unapproved-version","http://api.vomdecision.com/error/policy-version/unpublished-version","http://api.vomdecision.com/error/policy-version/update-published-version"],"title":"VersionError","description":"PolicyVersion configuration errors, i.e. not execution."},"WriteFeatureError":{"type":"string","enum":["http://api.vomdecision.com/error/graph/block/write-feature/missing-formula","http://api.vomdecision.com/error/graph/block/write-feature/missing-feature","http://api.vomdecision.com/error/graph/block/write-feature/no-entry-defined","http://api.vomdecision.com/error/graph/block/write-feature/undefined-variable","http://api.vomdecision.com/error/graph/block/write-feature/formula-type-mismatch"],"title":"WriteFeatureError","description":"Write Feature block configuration errors."}}}}