{"id":19260324,"url":"https://github.com/mitre/emass_client","last_synced_at":"2025-04-21T16:31:39.973Z","repository":{"id":39705584,"uuid":"491160242","full_name":"mitre/emass_client","owner":"mitre","description":"The eMASS client repository maintains the Enterprise Mission Assurance Support Service (eMASS) Representational State Transfer (REST) Application Programming Interface (API) specification and executables.","archived":false,"fork":false,"pushed_at":"2025-03-18T14:03:40.000Z","size":68021,"stargazers_count":16,"open_issues_count":2,"forks_count":4,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-04-01T14:37:25.732Z","etag":null,"topics":["emass","emasser","mitre-saf","ruby","security-automation","typescript"],"latest_commit_sha":null,"homepage":"https://mitre.github.io/emass_client/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mitre.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":"2022-05-11T15:04:41.000Z","updated_at":"2025-03-18T02:55:10.000Z","dependencies_parsed_at":"2024-06-19T23:04:27.000Z","dependency_job_id":"84e1bc18-fda1-4e96-932f-31f5b6fe62c1","html_url":"https://github.com/mitre/emass_client","commit_stats":{"total_commits":117,"total_committers":3,"mean_commits":39.0,"dds":"0.11965811965811968","last_synced_commit":"e1c24e6dac8aade31c8ea55842dd207cf5f5f6d7"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Femass_client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Femass_client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Femass_client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitre%2Femass_client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitre","download_url":"https://codeload.github.com/mitre/emass_client/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250090868,"owners_count":21373267,"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","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":["emass","emasser","mitre-saf","ruby","security-automation","typescript"],"created_at":"2024-11-09T19:19:54.492Z","updated_at":"2025-04-21T16:31:34.962Z","avatar_url":"https://github.com/mitre.png","language":"Python","readme":"[![Generate OpenAPI Clients](https://github.com/mitre/emass_client/actions/workflows/generate-clients.yml/badge.svg)](https://github.com/mitre/emass_client/actions/workflows/generate-clients.yml) [![Generate eMASS Documentation](https://github.com/mitre/emass_client/actions/workflows/generate_docs.yml/badge.svg)](https://github.com/mitre/emass_client/actions/workflows/generate_docs.yml) [![Deploy to GitHub Pages](https://github.com/mitre/emass_client/actions/workflows/gh-pages.yml/badge.svg)](https://github.com/mitre/emass_client/actions/workflows/gh-pages.yml)\n\n![CodeQL Vulnerabilities and Errors](https://github.com/mitre/emass_client/actions/workflows/codeql-analysis.yml/badge.svg) ![Ruby Client Testing](https://github.com/mitre/emass_client/actions/workflows/test-ruby-client.yml/badge.svg) \n\n![GitHub Release Date](https://img.shields.io/github/release-date/mitre/emass_client?label=Release%20Date\u0026logo=github\u0026color=blue) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/mitre/emass_client?label=Release%20Version\u0026logo=github) ![Gem](https://img.shields.io/gem/v/emass_client?label=gem%20version\u0026logo=ruby\u0026logoColor=red) ![npm](https://img.shields.io/npm/v/@mitre/emass_client?label=npm%20version\u0026logo=npm) ![PyPI](https://img.shields.io/pypi/v/emass-client-api?label=pypi%20version\u0026logo=pypi\u0026logoColor=yellow)\n\n# eMASS Client\nThe eMASS client repository (```emass_client```) maintains the Enterprise Mission Assurance Support Service (eMASS) Representational State Transfer (REST) [Application Programming Interface (API) specifications](/docs/eMASS_API_Documentation.pdf) and executables. The executables packages currently provided are: RubyGem, TypeScript Node, and Python.\n\n***NOTE***: A CLI tool called [emasser](https://github.com/mitre/emasser), has been developed that makes use of the ```emass_client``` RubyGem. Additionally, the [SAF CLI](https://github.com/mitre/saf#emass-api-cli) implements the `emass_client` npm package.\n\n# Highlights\n## [eMASS API Specification](https://mitre.github.io/emass_client/docs/redoc/)\nThe eMASS API is documented in YAML and can be viewed utilizing a multitude of visualization tools. Included is a dependency-free (and nice looking) rendering tool for viewing the API specification. The documentation is automatically generated using a Continuos Integration (CI) action [redoc-cli](https://www.npmjs.com/package/redoc-cli) command line tool.\n\n\n## [eMASS API Viewer](https://mitre.github.io/emass_client/docs/renderer/)\nThis repository allows anyone to visualize and interact with the API’s resources without having any of the implementation logic in place, via [hosted](https://mitre.stoplight.io/docs/emasser/c48309f365cf1-enterprise-mission-assurance-support-service-e-mass) or local mock servers. Please reference [Developers Instruction](docs/developers.md) on how to setup a local mock server\n\n# eMASS API Clients Generation Process\nThe executable packages (APIs) generated are used to access eMASS data and functionality by external third-party developers, business partners, or internal departments.\n\nThe following ```emass_client``` executable packages are generated by this repository:\n- Ruby - The ruby package is hosted and available in the [RubyGems](https://rubygems.org/gems/emass_client). \n\n- Typescript - The typescript package is hosted and available in the [NpmRegistry](https://www.npmjs.com/package/@mitre/emass_client).\n  \n- Python - The python package is hosted and available in the [PyPIRegistry](https://pypi.org/manage/project/emass-client-api/releases/).\n\n### Making Changes to eMASS Clients\nChanges to the eMASS clients are made by modifying the eMASS API specification file `eMASSRestOpenApi.yaml`. Modification to this file triggers the clients' generation actions where all client packages are generated, and published to the appropriate repositories when the PR branch is [merged](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request) into the main branch.\n\nAfter either forking or creating a branch for the main repository update the code via a pull request (PR) or directly on the branch.\n\nThe proper process for making client code updates are as follows:\n\n- **Step 1** \n  Update the eMASS API specification file `eMASSRestOpenApi.yaml`\n\n- **Step 2**\n  Make the necessary changes (update the version field) to the clients generation configuration files:\n  - Ruby (src/openapi/templates/ruby/ruby-generator-config.json)\n  - Typescript(src/openapi/templates/typescript/typescript-generator-config.json)\n  - Python (src/openapi/templates/python/python-generator-config.json)\n  \n- **Step 3**\n  Push the content to the repository\n  \n- **Step 4**\n  Once all test pass merge the pull request\n\n\n### Other Programming Languages\nFor detail information on how-to generating eMASS clients for other programming languages reference [**Developers Instructions**](docs/developers.md)\n\n\n## Repository Architecture\nThe process provided by this repository is depicted by the architecture diagram below. In a nutshell, it hosts the eMAASS API specification, documentation, interactive visualization tools, and generates clients for the following languages: `ruby`,  `typescript`, and `python`. \n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"images/emass_client_architecture.jpg\" alt=\"Alt text\" title=\"Repository Architecture\"\u003e\n\u003c/div\u003e\n\n### Client Application\nThe ``emass_client`` executable packages can be included in other projects, or used to generate  CLI tools that require access to an eMASS instance as  demonstrated by the diagram below.\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"images/emass_client_applications.jpg\" alt=\"Alt text\" title=\"Client Architecture\"\u003e\n\u003c/div\u003e\n\n### NOTICE\n\n© 2020 The MITRE Corporation.\n\nApproved for Public Release; Distribution Unlimited. Case Number 18-3678.\n\n### NOTICE\n\nMITRE hereby grants express written permission to use, reproduce, distribute, modify, and otherwise leverage this software to the extent permitted by the licensed terms provided in the LICENSE.md file included with this project.\n\n### NOTICE\n\nThis software was produced for the U. S. Government under Contract Number HHSM-500-2012-00008I, and is subject to Federal Acquisition Regulation Clause 52.227-14, Rights in Data-General.\n\nNo other use other than that granted to the U. S. Government, or to those acting on behalf of the U. S. Government under that Clause is authorized without the express written permission of The MITRE Corporation.\n\nFor further information, please contact The MITRE Corporation, Contracts Management Office, 7515 Colshire Drive, McLean, VA  22102-7539, (703) 983-6000.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitre%2Femass_client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitre%2Femass_client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitre%2Femass_client/lists"}