{"id":19976521,"url":"https://github.com/erossini/simpleapi","last_synced_at":"2026-05-12T11:31:50.679Z","repository":{"id":150093145,"uuid":"390527746","full_name":"erossini/SimpleApi","owner":"erossini","description":"Given a new green field project, the requirements are that are two different payloads, A and B that need to be exposed to our customers via the internet.  An audit log is also required for every request that is received. Given this has to be done quickly and cheaply to prove some value. How would you go about designing this system?","archived":false,"fork":false,"pushed_at":"2021-07-29T10:16:35.000Z","size":52,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-01T19:12:53.526Z","etag":null,"topics":["aspnet-core","aspnet-web-api","azure","azure-functions","logicapps","webapi-core"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erossini.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"FUNDING.yml","license":"LICENSE","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},"funding":{"github":"erossini"}},"created_at":"2021-07-28T22:37:56.000Z","updated_at":"2023-04-06T23:46:18.000Z","dependencies_parsed_at":"2023-06-05T08:00:30.799Z","dependency_job_id":null,"html_url":"https://github.com/erossini/SimpleApi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/erossini/SimpleApi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erossini%2FSimpleApi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erossini%2FSimpleApi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erossini%2FSimpleApi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erossini%2FSimpleApi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erossini","download_url":"https://codeload.github.com/erossini/SimpleApi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erossini%2FSimpleApi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32937179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-12T09:19:52.626Z","status":"ssl_error","status_checked_at":"2026-05-12T09:17:33.438Z","response_time":102,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["aspnet-core","aspnet-web-api","azure","azure-functions","logicapps","webapi-core"],"created_at":"2024-11-13T03:24:11.760Z","updated_at":"2026-05-12T11:31:50.663Z","avatar_url":"https://github.com/erossini.png","language":"C#","funding_links":["https://github.com/sponsors/erossini"],"categories":[],"sub_categories":[],"readme":"# SimpleApi\nGiven a new green field project, the requirements are that are two different payloads, A and B that need to be exposed to our customers via the internet. An audit log is also required for every request that is received. Given this has to be done quickly and cheaply to prove some value. How would you go about designing this system?\n\nThe solution is split in 4 different implementation:\n- Logic App Classic (`LogicAppClassic`)\n- Logic App (New version 2021) (`azuks-mcp-vaq-log-d1`)\n- Azure Function (`SimpleAzureFunction`)\n- WebApi\n  - Domain (`SimpleApi.Domain`)†\n  - Persistence (`SimpleApi.Persistence` and `SimpleApi.Persistence.Interface`)\n  - Api (`SimpleApi` and `SimpleApi.App`)\n\n† Domain is a .NET Standard project to be used in the WebApi project and in the Azure Function\n\n![Solution in Visual Studio](https://user-images.githubusercontent.com/9497415/127474718-4898c1ba-15ff-42d1-90e8-a324b5f7b83f.png)\n\n## Architecture and security\nThe nature of the project and the deploy environment impact on the architecture. In the projects you have different approaches. **Logic Apps** are build in **Azure** and the basic security is to use a key in the URL. However, it is possible to put in front of them an **Azure API Manager** that provides a security layer and integration with **Azure Active Directory** and **OpenId** (such as **IdentityServer4**).\n\nThe Domain project has only the model across the solution and, for this reason, is build with **.NET Standard**. This project is used as dependencies in the Azure Function and the API.\n\n### WebApi\nThe project is divided into the following layers:\n- Domain\n- Infrastructure\n- Persistence\n- Specs/Tests\n\n### Architecture for Logic Apps\n\u003cimg width=\"756\" alt=\"LogicApps\" src=\"https://user-images.githubusercontent.com/9497415/127405581-a9fe4a05-4944-4ced-9b11-617792488e30.png\"\u003e\n\n### Basic architecture\n\u003cimg width=\"424\" alt=\"Basic\" src=\"https://user-images.githubusercontent.com/9497415/127405786-cf42bf72-bd32-44eb-8b4c-72bb82327471.png\"\u003e\n\n## Screenshot\n\n### Azure Function\n![Azure Function output](https://user-images.githubusercontent.com/9497415/127470592-c529c9db-4c78-416f-8f6a-3e35875a8722.png)\n\n### Swagger for the WebApi\n![image](https://user-images.githubusercontent.com/9497415/127469874-cd7a1090-d79d-45a5-8aec-c742f00fa385.png)\n\n### Logic App Classic\n![LogicApp Classic Screenshot from Azure portal](https://user-images.githubusercontent.com/9497415/127470090-f2bceae5-e038-4724-8e32-4c514a074218.png)\n\n### Logic App in Visual Studio\n![LogicApp in VisualStudio 2019](https://user-images.githubusercontent.com/9497415/127470322-d24fe22b-83a1-4425-bc39-b757b3a5d286.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferossini%2Fsimpleapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferossini%2Fsimpleapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferossini%2Fsimpleapi/lists"}