{"id":13640426,"url":"https://github.com/openscoring/openscoring","last_synced_at":"2026-02-11T14:01:29.675Z","repository":{"id":7807919,"uuid":"9178484","full_name":"openscoring/openscoring","owner":"openscoring","description":"REST web service for the true real-time scoring (\u003c1 ms) of Scikit-Learn, R and Apache Spark models","archived":false,"fork":false,"pushed_at":"2026-02-02T20:58:15.000Z","size":927,"stargazers_count":589,"open_issues_count":3,"forks_count":172,"subscribers_count":33,"default_branch":"master","last_synced_at":"2026-02-03T10:47:29.203Z","etag":null,"topics":["apache-spark","api","lightgbm","pmml","r","real-time","scikit-learn","xgboost"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openscoring.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.txt","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-04-02T19:44:04.000Z","updated_at":"2026-02-02T20:58:20.000Z","dependencies_parsed_at":"2024-09-29T06:18:21.519Z","dependency_job_id":null,"html_url":"https://github.com/openscoring/openscoring","commit_stats":{"total_commits":600,"total_committers":1,"mean_commits":600.0,"dds":0.0,"last_synced_commit":"6f1cff4e22c20d1b7924c27765423dac449feecb"},"previous_names":["jpmml/openscoring"],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/openscoring/openscoring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openscoring%2Fopenscoring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openscoring%2Fopenscoring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openscoring%2Fopenscoring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openscoring%2Fopenscoring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openscoring","download_url":"https://codeload.github.com/openscoring/openscoring/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openscoring%2Fopenscoring/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29333905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T12:42:24.625Z","status":"ssl_error","status_checked_at":"2026-02-11T12:41:23.344Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-spark","api","lightgbm","pmml","r","real-time","scikit-learn","xgboost"],"created_at":"2024-08-02T01:01:11.028Z","updated_at":"2026-02-11T14:01:29.669Z","avatar_url":"https://github.com/openscoring.png","language":"Java","readme":"Openscoring [![Build Status](https://github.com/openscoring/openscoring/workflows/maven/badge.svg)](https://github.com/openscoring/openscoring/actions?query=workflow%3A%22maven%22)\n===========\n\nREST web service for scoring PMML models.\n\n# Table of Contents #\n\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n    + [Binary release](#binary-release)\n    + [Source code snapshot](#source-code-snapshot)\n- [Usage](#usage)\n    + [Server side](#server-side)\n        * [Advanced configuration](#advanced-configuration)\n        * [Logging](#logging)\n    + [Client side](#client-side)\n- [REST API](#rest-api)\n    + [Overview](#overview)\n    + [Model deployment](#model-deployment)\n        * [PUT /model/${id}](#put-modelid)\n    + [Model querying](#model-querying)\n        * [GET /model](#get-model)\n        * [GET /model/${id}](#get-modelid)\n        * [GET /model/${id}/pmml](#get-modelidpmml)\n    + [Model evaluation](#model-evaluation)\n        * [POST /model/${id}](#post-modelid)\n        * [POST /model/${id}/batch](#post-modelidbatch)\n        * [POST /model/${id}/csv](#post-modelidcsv)\n    + [Model undeployment](#model-undeployment)\n        * [DELETE /model/${id}](#delete-modelid)\n- [Documentation](#documentation)\n- [Support](#support)\n- [License](#license)\n- [Additional information](#additional-information)\n\n# Features #\n\n* Full support for PMML specification versions 3.0 through 4.4. The evaluation is handled by the [JPMML-Evaluator](https://github.com/jpmml/jpmml-evaluator) library.\n* Simple and powerful REST API:\n  * Model deployment and undeployment.\n  * Model evaluation in single prediction, batch prediction and CSV prediction modes.\n* High performance and high throughput:\n  * Sub-millisecond response times.\n  * Request and response compression using `gzip` and `deflate` encodings.\n  * Thread safe.\n* Open, extensible architecture for easy integration with proprietary systems and services:\n  * User authentication and authorization.\n\n# Prerequisites #\n\n* Java 11 or newer.\n\n# Installation #\n\n### Binary release\n\nOpenscoring client and server uber-JAR files are distributed via the [GitHub releases page](https://github.com/openscoring/openscoring/releases), and the Openscoring webapp WAR file is distributed via the Maven Central repository.\n\nThis README file corresponds to latest source code snapshot. In order to follow its instructions as closely as possible, it's recommended to download the latest binary release.\n\nThe current version is **2.2.1** (2 February, 2026):\n\n* [openscoring-client-executable-2.2.1.jar](https://github.com/openscoring/openscoring/releases/download/2.2.1/openscoring-client-executable-2.2.1.jar)\n* [openscoring-server-executable-2.2.1.jar](https://github.com/openscoring/openscoring/releases/download/2.2.1/openscoring-server-executable-2.2.1.jar)\n\n### Source code snapshot\n\nEnter the project root directory and build using [Apache Maven](https://maven.apache.org/):\n```\nmvn clean install\n```\n\nThe build produces two uber-JAR files and a WAR file:\n\n* `openscoring-client/target/openscoring-client-executable-2.2-SNAPSHOT.jar`\n* `openscoring-server/target/openscoring-server-executable-2.2-SNAPSHOT.jar`\n* `openscoring-webapp/target/openscoring-webapp-2.2-SNAPSHOT.war`\n\n# Usage #\n\nThe example PMML file `DecisionTreeIris.pmml` along with example JSON and CSV files can be found in the `openscoring-service/src/etc` directory.\n\n### Server side\n\nLaunch the executable uber-JAR file:\n```\njava -jar openscoring-server-executable-${version}.jar\n```\n\nBy default, the REST web service is started at [http://localhost:8080/openscoring](http://localhost:8080/openscoring/). The main class `org.openscoring.server.Main` accepts a number of configuration options for URI customization and other purposes. Please specify `--help` for more information.\n\n```\njava -jar openscoring-server-executable-${version}.jar --help\n```\n\n##### Advanced configuration\n\nCopy the sample Typesafe's Config configuration file `openscoring-server/application.conf.sample` to a new file `application.conf`, and customize its content to current needs. Use the `config.file` system property to impose changes on the JVM:\n```\njava -Dconfig.file=application.conf -jar openscoring-server-executable-${version}.jar\n```\n\nThe local configuration overrides the default configuration that is defined in the reference REST web service configuration file `openscoring-service/src/main/reference.conf`. For example, the following local configuration would selectively override the list-valued `networkSecurityContextFilter.adminAddresses` property (treats any local or remote IP address as an admin IP address):\n```\nnetworkSecurityContextFilter {\n\tadminAddresses = [\"*\"]\n}\n```\n\n##### Logging\n\nCopy the sample Java Logging API configuration file `openscoring-server/logging.properties.sample` to a new file `logging.properties`, and customize its content to current needs. Use the `java.util.logging.config.file` system property to impose changes on the JVM:\n```\njava -Djava.util.logging.config.file=logging.properties -jar target/openscoring-server-executable-${version}.jar\n```\n\n### Client side\n\n##### Java\n\nReplay the life cycle of a sample `DecisionTreeIris` model (in \"REST API\", see below) by launching the following Java application classes from the uber-JAR file:\n```\njava -cp openscoring-client-executable-${version}.jar org.openscoring.client.Deployer --model http://localhost:8080/openscoring/model/DecisionTreeIris --file DecisionTreeIris.pmml\n\njava -cp openscoring-client-executable-${version}.jar org.openscoring.client.Evaluator --model http://localhost:8080/openscoring/model/DecisionTreeIris -XSepal_Length=5.1 -XSepal_Width=3.5 -XPetal_Length=1.4 -XPetal_Width=0.2\n\njava -cp openscoring-client-executable-${version}.jar org.openscoring.client.CsvEvaluator --model http://localhost:8080/openscoring/model/DecisionTreeIris --input input.csv --output output.csv\n\njava -cp openscoring-client-executable-${version}.jar org.openscoring.client.Undeployer --model http://localhost:8080/openscoring/model/DecisionTreeIris\n```\n\nThe deployment and undeployment of models can be automated by launching the `org.openscoring.client.DirectoryDeployer` Java application class from the uber-JAR file, which listens for PMML file addition and removal events on the specified directory (\"PMML directory watchdog\"):\n```\njava -cp openscoring-client-executable-${version}.jar org.openscoring.client.DirectoryDeployer --model-collection http://localhost:8080/openscoring/model --dir pmml\n```\n\n##### Python\n\nSee the [Openscoring-Python](https://github.com/openscoring/openscoring-python) project.\n\n##### R\n\nSee the [Openscoring-R](https://github.com/openscoring/openscoring-r) project.\n\n# REST API #\n\n### Overview\n\nModel REST API endpoints:\n\n| HTTP method | Endpoint | Required role(s) | Description |\n| ----------- | -------- | ---------------- | ----------- |\n| GET | /model | - | Get the summaries of all models |\n| PUT | /model/${id} | admin | Deploy a model |\n| GET | /model/${id} | - | Get the summary of a model |\n| GET | /model/${id}/pmml | admin | Download a model as a PMML document |\n| POST | /model/${id} | - | Evaluate data in \"single prediction\" mode |\n| POST | /model/${id}/batch | - | Evaluate data in \"batch prediction\" mode |\n| POST | /model/${id}/csv | - | Evaluate data in \"CSV prediction\" mode |\n| DELETE | /model/${id} | admin | Undeploy a model |\n\nBy default, the \"admin\" role is granted to all HTTP requests that originate from the local network address.\n\nIn case of an error (ie. response status codes 4XX or 5XX), the response body is a JSON serialized form of an `org.openscoring.common.SimpleResponse` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/SimpleResponse.java) object.\n\nJava clients may use the following idiom to check if an operation succeeded or failed:\n```java\nModelResponse response = ...;\n\n// The error condition is encoded by initializing the \"message\" field and leaving all other fields uninitialized\nString message = response.getMessage();\nif(message != null){\n\tthrow new RuntimeException(message);\n}\n\n// Proceed as usual\n```\n\n### Model deployment\n\n##### PUT /model/${id}\n\nCreates or updates a model.\n\nThe request body is a PMML document (indicated by content-type header `text/xml` or `application/xml`).\n\nThe response body is a JSON serialized form of an `org.openscoring.common.ModelResponse` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/ModelResponse.java) object.\n\nResponse status codes:\n* 200 OK. The model was updated.\n* 201 Created. A new model was created.\n* 400 Bad Request. The deployment failed permanently. The request body is not a valid and/or supported PMML document.\n* 403 Forbidden. The acting user does not have an \"admin\" role.\n* 500 Internal Server Error. The deployment failed temporarily.\n\nSample cURL invocation:\n```\ncurl -X PUT --data-binary @DecisionTreeIris.pmml -H \"Content-type: text/xml\" http://localhost:8080/openscoring/model/DecisionTreeIris\n```\n\nThe same, using the `gzip` encoding:\n```\ncurl -X PUT --data-binary @DecisionTreeIris.pmml.gz -H \"Content-encoding: gzip\" -H \"Content-type: text/xml\" http://localhost:8080/openscoring/model/DecisionTreeIris\n```\n\n### Model querying\n\n##### GET /model\n\nGets the summaries of all models.\n\nThe response body is a JSON serialized form of an `org.openscoring.common.BatchModelResponse` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/BatchModelResponse.java) object.\n\nResponse status codes:\n* 200 OK. The model collection was queried.\n\nSample cURL invocation:\n```\ncurl -X GET http://localhost:8080/openscoring/model\n```\n\n##### GET /model/${id}\n\nGets the summary of a model.\n\nThe response body is a JSON serialized form of an `org.openscoring.common.ModelResponse` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/ModelResponse.java) object.\n\nResponse status codes:\n* 200 OK. The model was queried.\n* 404 Not Found. The requested model was not found.\n\nSample cURL invocation:\n```\ncurl -X GET http://localhost:8080/openscoring/model/DecisionTreeIris\n```\n\nSample response:\n```json\n{\n\t\"id\" : \"DecisionTreeIris\",\n\t\"miningFunction\" : \"classification\",\n\t\"summary\" : \"Tree model\",\n\t\"properties\" : {\n\t\t\"created.timestamp\" : \"2015-03-17T12:41:35.933+0000\",\n\t\t\"accessed.timestamp\" : \"2015-03-21T09:35:58.582+0000\",\n\t\t\"file.size\" : 4306,\n\t\t\"file.checksum\" : \"e92855ed6575b75b10cc376f6a7df151d24b1793f1a034f53d9128c0aac9bb07\"\n\t},\n\t\"schema\" : {\n\t\t\"inputFields\" : [\n\t\t\t{\n\t\t\t\t\"id\" : \"Sepal_Length\",\n\t\t\t\t\"name\" : \"Sepal length in cm\",\n\t\t\t\t\"dataType\" : \"double\",\n\t\t\t\t\"opType\" : \"continuous\",\n\t\t\t\t\"values\" : [ \"[4.3, 7.9]\" ]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\" : \"Sepal_Width\",\n\t\t\t\t\"name\" : \"Sepal width in cm\",\n\t\t\t\t\"dataType\" : \"double\",\n\t\t\t\t\"opType\" : \"continuous\",\n\t\t\t\t\"values\" : [ \"[2.0, 4.4]\" ]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\" : \"Petal_Length\",\n\t\t\t\t\"name\" : \"Petal length in cm\",\n\t\t\t\t\"dataType\" : \"double\",\n\t\t\t\t\"opType\" : \"continuous\",\n\t\t\t\t\"values\" : [ \"[1.0, 6.9]\" ]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\" : \"Petal_Width\",\n\t\t\t\t\"name\" : \"Petal width in cm\",\n\t\t\t\t\"dataType\" : \"double\",\n\t\t\t\t\"opType\" : \"continuous\",\n\t\t\t\t\"values\" : [ \"[0.1, 2.5]\" ]\n\t\t\t}\n\t\t],\n\t\t\"targetFields\" : [\n\t\t\t{\n\t\t\t\t\"id\" : \"Species\",\n\t\t\t\t\"dataType\" : \"string\",\n\t\t\t\t\"opType\" : \"categorical\",\n\t\t\t\t\"values\" : [ \"setosa\", \"versicolor\", \"virginica\" ]\n\t\t\t}\n\t\t],\n\t\t\"outputFields\" : [\n\t\t\t{\n\t\t\t\t\"id\" : \"Probability_setosa\",\n\t\t\t\t\"dataType\" : \"double\",\n\t\t\t\t\"opType\" : \"continuous\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\" : \"Probability_versicolor\",\n\t\t\t\t\"dataType\" : \"double\",\n\t\t\t\t\"opType\" : \"continuous\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\" : \"Probability_virginica\",\n\t\t\t\t\"dataType\" : \"double\",\n\t\t\t\t\"opType\" : \"continuous\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\" : \"Node_Id\",\n\t\t\t\t\"dataType\" : \"string\",\n\t\t\t\t\"opType\" : \"categorical\"\n\t\t\t}\n\t\t]\n\t}\n}\n```\n\nField definitions are retrieved from the [MiningSchema](http://www.dmg.org/v4-2-1/MiningSchema.html) and [Output](http://www.dmg.org/v4-2-1/Output.html) elements of the PMML document. The input and group-by fields relate to the `arguments` attribute of the evaluation request, whereas the target and output fields relate to the `result` attribute of the evaluation response (see below).\n\n##### GET /model/${id}/pmml\n\nDownloads a model.\n\nThe response body is a PMML document.\n\nResponse status codes:\n* 200 OK. The model was downloaded.\n* 403 Forbidden. The acting user does not have an \"admin\" role.\n* 404 Not Found. The requested model was not found.\n\nSample cURL invocation:\n```\ncurl -X GET http://localhost:8080/openscoring/model/DecisionTreeIris/pmml\n```\n\n### Model evaluation\n\n##### POST /model/${id}\n\nEvaluates data in \"single prediction\" mode.\n\nThe request body is a JSON serialized form of an `org.openscoring.common.EvaluationRequest` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/EvaluationRequest.java) object.\n\nThe response body is a JSON serialized form of an `org.openscoring.common.EvaluationResponse` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/EvaluationResponse.java) object.\n\nResponse status codes:\n* 200 OK. The evaluation was successful.\n* 400 Bad Request. The evaluation failed permanently due to missing or invalid input data.\n* 404 Not Found. The requested model was not found.\n* 500 Internal Server Error. The evaluation failed temporarily.\n\nSample cURL invocation:\n```\ncurl -X POST --data-binary @EvaluationRequest.json -H \"Content-type: application/json\" http://localhost:8080/openscoring/model/DecisionTreeIris\n```\n\nSample request:\n```json\n{\n\t\"id\" : \"record-001\",\n\t\"arguments\" : {\n\t\t\"Sepal_Length\" : 5.1,\n\t\t\"Sepal_Width\" : 3.5,\n\t\t\"Petal_Length\" : 1.4,\n\t\t\"Petal_Width\" : 0.2\n\t}\n}\n```\n\nSample response:\n```json\n{\n\t\"id\" : \"record-001\",\n\t\"results\" : {\n\t\t\"Species\" : \"setosa\",\n\t\t\"Probability_setosa\" : 1.0,\n\t\t\"Probability_versicolor\" : 0.0,\n\t\t\"Probability_virginica\" : 0.0,\n\t\t\"Node_Id\" : \"2\"\n\t}\n}\n```\n\n##### POST /model/${id}/batch\n\nEvaluates data in \"batch prediction\" mode.\n\nThe request body is a JSON serialized form of an `org.openscoring.common.BatchEvaluationRequest` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/BatchEvaluationRequest.java) object.\n\nThe response body is a JSON serialized form of an `org.openscoring.common.BatchEvaluationResponse` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/BatchEvaluationResponse.java) object.\n\nResponse status codes:\n* 200 OK. The evaluation was successful.\n* 400 Bad Request. The evaluation failed permanently due to missing or invalid input data.\n* 404 Not Found. The requested model was not found.\n* 500 Internal Server Error. The evaluation failed temporarily.\n\nSample cURL invocation:\n```\ncurl -X POST --data-binary @BatchEvaluationRequest.json -H \"Content-type: application/json\" http://localhost:8080/openscoring/model/DecisionTreeIris/batch\n```\n\nThe evaluation is performed at \"record\" isolation level. If the evaluation of some `org.openscoring.common.EvaluationRequest` object fails, then the corresponding `org.openscoring.common.EvaluationResponse` object encodes the error condition (see above).\n\n##### POST /model/${id}/csv\n\nEvaluates data in \"CSV prediction\" mode.\n\nThe request body is a CSV document (indicated by content-type header `text/plain`). The data table must contain a data column for every input and group-by field. The ordering of data columns is not significant, because they are mapped to fields by name.\n\nThe CSV reader component detects the CSV dialect by probing `,`, `;` and `\\t` as CSV delimiter characters. This detection functionality can be suppressed by supplying the value of the CSV delimiter character using the `delimiterChar` query parameter.\n\nThe response body is a CSV document. The data table contains a data column for every target and output field.\n\nThe first data column can be employed for row identification purposes. It will be copied over from the request data table to the response data table if its name equals to \"Id\" (the comparison is case insensitive) and the number of rows did not change during the evaluation.\n\nResponse status codes:\n* 200 OK. The evaluation was successful.\n* 400 Bad request. The evaluation failed permanently. The request body is not a valid and/or supported CSV document, or it contains cells with missing or invalid input data.\n* 404 Not Found. The requested model was not found.\n* 500 Internal Server Error. The evaluation failed temporarily.\n\nSample cURL invocation:\n```\ncurl -X POST --data-binary @input.csv -H \"Content-type: text/plain; charset=UTF-8\" http://localhost:8080/openscoring/model/DecisionTreeIris/csv \u003e output.csv\n```\n\nThe same, using the `gzip` encoding:\n```\ncurl -X POST --data-binary @input.csv.gz -H \"Content-encoding: gzip\" -H \"Content-type: text/plain; charset=UTF-8\" -H \"Accept-encoding: gzip\" http://localhost:8080/openscoring/model/DecisionTreeIris/csv \u003e output.csv.gz\n```\n\nSample request:\n```\nId,Sepal_Length,Sepal_Width,Petal_Length,Petal_Width\nrecord-001,5.1,3.5,1.4,0.2\nrecord-002,7,3.2,4.7,1.4\nrecord-003,6.3,3.3,6,2.5\n```\n\nSample response:\n```\nId,Species,Probability_setosa,Probability_versicolor,Probability_virginica,Node_Id\nrecord-001,setosa,1.0,0.0,0.0,2\nrecord-002,versicolor,0.0,0.9074074074074074,0.09259259259259259,6\nrecord-003,virginica,0.0,0.021739130434782608,0.9782608695652174,7\n```\n\nThe evaluation is performed at \"all-records-or-nothing\" isolation level. If the evaluation of some row fails, then the whole CSV document fails.\n\n### Model undeployment\n\n##### DELETE /model/${id}\n\nDeletes a model.\n\nThe response body is a JSON serialized form of an `org.openscoring.common.SimpleResponse` [(source)](https://github.com/openscoring/openscoring/blob/master/openscoring-common/src/main/java/org/openscoring/common/SimpleResponse.java) object.\n\nResponse status codes:\n* 200 OK. The model was deleted.\n* 403 Forbidden. The acting user does not have an \"admin\" role.\n* 404 Not Found. The requested model was not found.\n* 500 Internal Server Error. The undeployment failed temporarily.\n\nSample cURL invocation:\n```\ncurl -X DELETE http://localhost:8080/openscoring/model/DecisionTreeIris\n```\n\nAn HTTP PUT or DELETE method can be masked as an HTTP POST method by using the [HTTP method override mechanism](https://jersey.java.net/apidocs/latest/jersey/org/glassfish/jersey/server/filter/HttpMethodOverrideFilter.html).\n\nSample cURL invocation that employs the `X-HTTP-Method-Override` request header:\n```\ncurl -X POST -H \"X-HTTP-Method-Override: DELETE\" http://localhost:8080/openscoring/model/DecisionTreeIris\n```\n\nSample cURL invocation that employs the `_method` query parameter:\n```\ncurl -X POST http://localhost:8080/openscoring/model/DecisionTreeIris?_method=DELETE\n```\n\n# Documentation #\n\n* [Deploying Apache Spark ML pipeline models on Openscoring REST web service](https://openscoring.io/blog/2020/02/16/deploying_sparkml_pipeline_openscoring_rest/)\n* [Using Apache Spark ML pipeline models for real-time prediction: the Openscoring REST web service approach](https://openscoring.io/blog/2016/07/04/sparkml_realtime_prediction_rest_approach/)\n* [Applying ML models to database data: the REST web service approach\"](https://openscoring.io/blog/2015/01/30/evaluating_database_data/)\n\n# Support #\n\nLimited public support is available via the [JPMML mailing list](https://groups.google.com/forum/#!forum/jpmml).\n\n# License #\n\nOpenscoring is licensed under the terms and conditions of the [GNU Affero General Public License, Version 3.0](https://www.gnu.org/licenses/agpl-3.0.html).\nFor a quick summary of your rights (\"Can\") and obligations (\"Cannot\" and \"Must\") under AGPLv3, please refer to [TLDRLegal](https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)).\n\nIf you would like to use Openscoring in a proprietary software project, then it is possible to enter into a licensing agreement which makes it available under the terms and conditions of the [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause) instead.\n\n# Additional information #\n\nOpenscoring is developed and maintained by Openscoring Ltd, Estonia.\n\nInterested in using [Java PMML API](https://github.com/jpmml) or [Openscoring REST API](https://github.com/openscoring) software in your company? Please contact [info@openscoring.io](mailto:info@openscoring.io)\n","funding_links":[],"categories":["Model Serving and Monitoring","Model Deployment and Orchestration Frameworks","Deployment and Serving","Main Contents","Software","人工智能"],"sub_categories":["Model Deployment Frameworks","Deploying models","自然语言处理"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenscoring%2Fopenscoring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenscoring%2Fopenscoring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenscoring%2Fopenscoring/lists"}