{"id":16119563,"url":"https://github.com/stephenott/stix-validator","last_synced_at":"2025-08-14T19:22:45.169Z","repository":{"id":148176410,"uuid":"177023705","full_name":"StephenOTT/STIX-Validator","owner":"StephenOTT","description":"STIX Validator http server for checking the JSON conformance to the STIX spec","archived":false,"fork":false,"pushed_at":"2019-03-21T23:14:31.000Z","size":6,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T10:19:59.101Z","etag":null,"topics":["cybersecurity","stix","stix2"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StephenOTT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2019-03-21T21:05:31.000Z","updated_at":"2019-05-22T03:47:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"e40a918d-d6cb-4a41-9e9a-d08133110958","html_url":"https://github.com/StephenOTT/STIX-Validator","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/StephenOTT/STIX-Validator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StephenOTT%2FSTIX-Validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StephenOTT%2FSTIX-Validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StephenOTT%2FSTIX-Validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StephenOTT%2FSTIX-Validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StephenOTT","download_url":"https://codeload.github.com/StephenOTT/STIX-Validator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StephenOTT%2FSTIX-Validator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270470021,"owners_count":24589277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cybersecurity","stix","stix2"],"created_at":"2024-10-09T20:54:27.822Z","updated_at":"2025-08-14T19:22:45.149Z","avatar_url":"https://github.com/StephenOTT.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# STIX-Validator\nSTIX Validator http server for checking the JSON conformance to the STIX spec\n\nCurrently supported schema: STIX 2.0\n\n# Deploy\n\n`java -jar stix-validator-0.5.0.jar`\n\nbase url: `localhost:8080`\n\n\n# Example\n\nPOST `localhost:8080/api/validation/validation/sdo/attack-pattern`\n\nJSON Body:\n\n```json\n{\n  \"type\": \"attack-pattern\",\n  \"id\": \"attack-pattern--17e6110c-0f51-4d91-8c1c-417d3f886bda\",\n  \"created_by_ref\": \"identity--826cf0f0-2105-4cf3-a56a-06998d17b1ec\",\n  \"created\": \"2019-03-13T21:41:01.373Z\",\n  \"modified\": \"2019-03-13T21:41:01.374Z\",\n  \"revoked\": true,\n  \"labels\": [\n    \"111\",\n    \"crabbing\",\n    \"metricized\",\n    \"potentates\",\n    \"cresylic\",\n    \"ultrasonic\"\n  ],\n  \"object_marking_refs\": [\n    \"marking-definition--4805e1e6-f9c8-476c-bae3-1fa8b3a89197\",\n    \"marking-definition--3966fea2-f4a3-4eac-8cb8-c37be13e7fe5\",\n    \"marking-definition--2301e050-08c1-4d68-abe1-372a9c9bf0af\"\n  ],\n  \"granular_markings\": [\n    {\n      \"marking_ref\": \"marking-definition--a4cb9815-d20e-41d7-a729-e2f3d432144f\",\n      \"selectors\": [\n        \"tithe\"\n      ]\n    },\n    {\n      \"marking_ref\": \"marking-definition--d15d48de-abc7-4c3e-a3ba-bad2198478c4\",\n      \"selectors\": [\n        \"cozily\",\n        \"atremble\",\n        \"twaddle\",\n        \"moreish\",\n        \"cruciferous\",\n        \"recommence\",\n        \"bluntly\",\n        \"scudded\",\n        \"quiescent\"\n      ]\n    },\n    {\n      \"marking_ref\": \"marking-definition--1a6676db-d3f9-403f-8975-3ba1f8f983a6\",\n      \"selectors\": [\n        \"adagio\",\n        \"teff\",\n        \"eburnation\",\n        \"sousaphones\",\n        \"whisks\"\n      ]\n    },\n    {\n      \"marking_ref\": \"marking-definition--ad10add9-9008-45c7-b40b-0ccb27bb9c27\",\n      \"selectors\": [\n        \"neuk\",\n        \"reuses\",\n        \"squat\"\n      ]\n    }\n  ],\n  \"description\": \"quicksilver nobbut lame subahs heathfowl slightly bountifulness vitellines creepies custom both boldly darkly unwooded\",\n  \"x_breakfasts\": 848823,\n  \"xx_gats\": \"respondent persistently trephining anodizes washiest untimely jibe\"\n}\n```\n\nSee that `xx_gats` property which should be `x_gats` and the `name` property is missing, which is a required field for a Attack-Pattern.\n\nThe result is:\n\nStatus: 422 Unprocessable Entity\n\nBody:\n\n```json\n{\n    \"result\": \"invalid\",\n    \"errors\": [\n        {\n            \"type\": \"attack-pattern\",\n            \"id\": \"attack-pattern--17e6110c-0f51-4d91-8c1c-417d3f886bda\",\n            \"path\": \"name\",\n            \"value\": null,\n            \"message\": \"must not be blank\"\n        },\n        {\n            \"type\": \"attack-pattern\",\n            \"id\": \"attack-pattern--17e6110c-0f51-4d91-8c1c-417d3f886bda\",\n            \"path\": \"customProperties\u003cK\u003e[xx_gats].\u003cmap key\u003e\",\n            \"value\": \"xx_gats\",\n            \"message\": \"StartsWith violation: string must start with value: x_, but provided value: xx_gats\"\n        }\n    ]\n}\n```\n\nIf the result is valid, we get:\n\nStatus: 200 OK\n\n```json\n{\n    \"result\": \"valid\"\n}\n```\n\n# API\n\nAll Bundleable Objects (SDO, SRO, Data Marking's Marking Definition) and a Bundle itself can be validated through the REST API:\n\nFirst load will be slower as it is warming up in the JVM.\n\n\n# Supported Endpoints:\n\n## Bundle\n\nPOST `/api/validation/bundle`\n\n## Bundleable Objects\n\nA generic endpoint that supports the validation of all bundleable objects (SDO/Stix Domain objects, Data Markings)\n\nPOST `/api/validation/bundleable-object`\n\n## SDO / Stix Domain Objects\n\n\n### Attack-Pattern\n\nPOST `/api/validation/sdo/attack-pattern`\n\n### Campaign\n\nPOST `/api/validation/sdo/campaign`\n\n### Course-of-Action\n\nPOST `/api/validation/sdo/course-of-action`\n\n### Indicator\n\nPOST `/api/validation/sdo/indicator`\n\n### Intrusion-Set\n\nPOST `/api/validation/sdo/intrusion-set`\n\n### Malware\n\nPOST `/api/validation/sdo/malware`\n\n### Observed-Data\n\nPOST `/api/validation/sdo/observed-data`\n\n### Report\n\nPOST `/api/validation/sdo/report`\n\n### Threat-Actor\n\nPOST `/api/validation/sdo/threat-actor`\n\n### Tool\n\nPOST `/api/validation/sdo/tool`\n\n### Vulnerability\n\nPOST `/api/validation/sdo/vulnerability`\n\n## SRO / Stix Relationship Objects\n\n### Relationship\n\nPOST `/api/validation/sro/relationship`\n\n### Sighting\n\nPOST `/api/validation/sro/sighting`\n\n## Data Marking\n\n### Marking Definition\n\nPOST `/api/validation/data-marking/marking-definition`\n\n\n# Build\n\n`mvn clean package`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephenott%2Fstix-validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephenott%2Fstix-validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephenott%2Fstix-validator/lists"}