{"id":20471764,"url":"https://github.com/signiant/mediashuttle-system-to-person-flow-python","last_synced_at":"2026-04-20T06:33:55.390Z","repository":{"id":189110247,"uuid":"676454048","full_name":"Signiant/mediashuttle-system-to-person-flow-python","owner":"Signiant","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-14T13:21:59.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-05T13:49:01.130Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/Signiant.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}},"created_at":"2023-08-09T08:31:47.000Z","updated_at":"2024-09-08T00:59:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"b0f150a0-b55f-4dfa-8b4e-85321f2def65","html_url":"https://github.com/Signiant/mediashuttle-system-to-person-flow-python","commit_stats":null,"previous_names":["signiant/mediashuttle-system-to-person-flow-python"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Signiant/mediashuttle-system-to-person-flow-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Signiant%2Fmediashuttle-system-to-person-flow-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Signiant%2Fmediashuttle-system-to-person-flow-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Signiant%2Fmediashuttle-system-to-person-flow-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Signiant%2Fmediashuttle-system-to-person-flow-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Signiant","download_url":"https://codeload.github.com/Signiant/mediashuttle-system-to-person-flow-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Signiant%2Fmediashuttle-system-to-person-flow-python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32036498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"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":[],"created_at":"2024-11-15T14:17:11.319Z","updated_at":"2026-04-20T06:33:55.370Z","avatar_url":"https://github.com/Signiant.png","language":"Python","readme":"# System-to-Person Automation API\n\nMedia Shuttle’s System-to-Person API allows you to generate single use links that allow specified users to upload or download content using a Media Shuttle portal.\n\n## Getting Started\n\n### Generate the code with OpenAPI Codegen\n\n1. Follow these instructions to generate the code using OpenAPI Codegen:\n\n- Install OpenAPI Codegen by referring to the documentation found at [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator)\n-  Once installed, execute the following command.\n\n2. If you have the JAR file, execute the command below.\n```\njava -jar /path_to_open_api_generator_jar_file generate -i /path_to_yaml_file -g python -o ./output_path --global-property skipFormModel=false\n```\n\n### Note\nIf you encounter the following error while running the code generator:\n```\nException in thread \"main\" java.lang.RuntimeException: Could not generate model 'AzureBlobStorage'\nat org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:569)\nat org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:926)\n```\n- Please ensure that your system is equipped with the compatible Java 11 version for code generation.\n- The OpenAPI Generator is continuously maintained, and new versions are regularly released. We recommend checking the official OpenAPI Generator repository on  [GitHub](https://github.com/OpenAPITools/openapi-generator) for the most recent version and updated system requirements.\n\n\n\n### Project Execution\n\n1. Clone the code from the repository and import in the generated code folder.\n2. Add and install packages specified in the requirements file.\n``` \npip install -r requirements.txt\n```\n4. Configure all the fields defined in the [Configuration]() section\n5. After successfully installing the module and configuring the properties, execute the following commands:\n```sh\npython setup.py install --user\n```\n```sh\npython app.py\n```\n\n## Note\nIn case you come across any errors while running the command ``python app.py``, consider the following fixes:\n\n1. If you encounter following error for data classes  **ApiResponseFor200** and **ApiResponseForDefault**\n\n```\n    ]\n    ^\nSyntaxError: invalid syntax\n\n```\nFor data class **ApiResponseFor200**, update the file\n- `openapi_client/paths/portals_portal_id_subscriptions_subscription_id/delete.py`\n\nwith the following code\n\n```python\nSchemaFor200ResponseBodyApplicationJson = ResponseForPortalMember\n\n@dataclass\nclass ApiResponseFor200(api_client.ApiResponse):\n    response: urllib3.HTTPResponse\n    body: typing.Union[SchemaFor200ResponseBodyApplicationJson\n    ]\n    headers: schemas.Unset = schemas.unset\n```\n\nFor data class **ApiResponseForDefault**, update the files\n\n- `openapi_client/paths/portals_portal_id_packages_package_id/get.py`\n- `openapi_client/paths/portals_portal_id_packages_package_id_files/get.py`\n- `openapi_client/paths/portals_portal_id_packages_package_id_events/get.py`\n- `openapi_client/paths/portals_portal_id_packages_package_id_files/put.py`\n\nwith the following code\n\n ```python\n SchemaFor0ResponseBodyApplicationJson = Error\n \n@dataclass\nclass ApiResponseForDefault(api_client.ApiResponse):\n    response: urllib3.HTTPResponse\n    body: typing.Union[SchemaFor0ResponseBodyApplicationJson\n    ]\n    headers: schemas.Unset = schemas.unset\n    \n ```\n\n2. If you encounter the following error:\n```python\nException when calling PortalsApi-\u003e list portals: Invalid content_type returned. Content_type='application/json; charset=utf-8' was returned when only {'application/json'} are defined for status_code=200\n```\n\nupdate the files\n\n- `openapi_client/paths/portals_portal_id_packages_package_id_files/put.py`\n- `openapi_client/paths/portals/get.py`\n\nwith the following code for input **_response_for_200**\n\n```python\n_response_for_200 = api_client.OpenApiResponse(\n    response_cls=ApiResponseFor200,\n    content={\n        'application/json': api_client.MediaType(\n            schema=SchemaFor200ResponseBodyApplicationJson),\n        'application/json; charset=utf-8': api_client.MediaType(\n            schema=SchemaFor200ResponseBodyApplicationJson),\n    },\n)\n```\n\nupdate the files\n\n- `openapi_client/paths/portals_portal_id_packages_package_id_tokens/post.py`\n- `openapi_client/paths/portals_portal_id_packages/post.py`\n\nwith the following code for input **__response_for_201**\n\n```python\n_response_for_201 = api_client.OpenApiResponse(\n    response_cls=ApiResponseFor201,\n    content={\n        'application/json': api_client.MediaType(\n            schema=SchemaFor201ResponseBodyApplicationJson),\n        'application/json; charset=utf-8': api_client.MediaType(\n            schema=SchemaFor201ResponseBodyApplicationJson),\n    },\n)\n```\n\n3. If encounter the following error:\n\n```\nException when calling PortalsApi-\u003e list portals: Invalid value Share passed in to \u003cclass 'openapi_client.model.portal.Portal.MetaOapg.properties.type'\u003e, allowed_values=dict_keys(['send', 'share', 'submit'])\n```\n\n\nFix: Please update the file located at\n- `openapi_client/model/portal.py`\n\n```python\nclass MetaOapg:\n    enum_value_to_name = {\n        \"Send\": \"SEND\",\n        \"Share\": \"SHARE\",\n        \"Submit\": \"SUBMIT\",\n    }\n\n@schemas.classproperty\ndef SEND(cls):\n    return cls(\"Send\")\n\n@schemas.classproperty\ndef SHARE(cls):\n    return cls(\"Share\")\n\n@schemas.classproperty\ndef SUBMIT(cls):\n    return cls(\"Submit\")\n\n```\n\n## Configuration\nPlease add the following fields to the `config.yaml` file in your project:\n```yaml\ndeveloper:\n  key: #dev key\nportal:\n  url: #portal url\nwebhook:\n  url: #webhook url\ntokenUrl:\n  expiryDay: #expiry days\nbase:\n  path: # base path\nuser:\n  mail: #usermail\ndestination:\n  path:\nserver:\n  port: # server port : 8080\ntransferfiles:\n  files:\n    -\n      path: #filePath1\n      isDirectory: #true or false\n      size: #filesize\n```\n- `developer key`: Add your Media Shuttle API key. You can generate an API key from your IT Administration Console in the Developer menu.\n- `portal url`: Add the URL of the Media Shuttle portal.\n- `webhook url`: Add the URL of the webhook where events will be received.\n- `tokenUrl expiryDay`: Add the number of days for the token URL expiry.\n- `base path`: Add the Media Shuttle API base URL for API calls.\n- `user mail`: Add the email address where you will receive notifications of file transfers.\n- `server port`: Port on which application will run\n- `destination path`: Add the destination path if you want to receive files at a different location.\n- `transferfiles files`: Add the following details for each transfer file:\n    - `path`: Add the file path.\n    - `isDirectory`: Set to `true` or `false` based on whether it's a directory.\n    - `size`: Add the file size.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigniant%2Fmediashuttle-system-to-person-flow-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsigniant%2Fmediashuttle-system-to-person-flow-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigniant%2Fmediashuttle-system-to-person-flow-python/lists"}