├── .github └── workflows │ └── master_app-web-dev-doc-prod.yml ├── .gitignore ├── HelloAsso.Api.Doc.sln ├── HelloAsso.Api.Doc.sln.DotSettings ├── HelloAsso.Api.Doc ├── Controllers │ └── V3Controller.cs ├── FormulaireDon-demo │ ├── .gitignore │ ├── README.md │ ├── css │ │ ├── bootstrap-grid.css │ │ ├── bootstrap-grid.css.map │ │ ├── bootstrap-grid.min.css │ │ ├── bootstrap-grid.min.css.map │ │ ├── bootstrap-reboot.css │ │ ├── bootstrap-reboot.css.map │ │ ├── bootstrap-reboot.min.css │ │ ├── bootstrap-reboot.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map │ │ └── main.css │ ├── img │ │ ├── favicon.ico │ │ └── helloasso-logo.png │ ├── index.html │ └── js │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.js.map │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.js │ │ ├── bootstrap.js.map │ │ ├── bootstrap.min.js │ │ ├── bootstrap.min.js.map │ │ └── main.js ├── HelloAsso.Api.Doc.csproj ├── Models │ └── ErrorViewModel.cs ├── Program.cs ├── Startup.cs ├── Views │ ├── V3 │ │ ├── Description.cshtml │ │ ├── Format.cshtml │ │ ├── Index.cshtml │ │ ├── Notifications.cshtml │ │ ├── Public.cshtml │ │ ├── Resources.cshtml │ │ ├── Responses.cshtml │ │ └── Shared │ │ │ ├── _Header.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _Sidebar.cshtml │ └── _ViewImports.cshtml ├── appsettings.Development.json ├── appsettings.json └── wwwroot │ ├── BingSiteAuth.xml │ ├── assets │ ├── css │ │ ├── v1 │ │ │ ├── smoothness │ │ │ │ ├── images │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ └── ui-icons_cd0a0a_256x240.png │ │ │ │ └── jquery-ui-1.8.14.custom.css │ │ │ └── style.css │ │ ├── v2 │ │ │ ├── api-doc.min.css │ │ │ ├── hellobase │ │ │ │ └── helloasso-template.min.css │ │ │ └── vendors │ │ │ │ └── bootstrap.min.css │ │ └── v3 │ │ │ ├── base │ │ │ ├── _base.scss │ │ │ ├── _color.scss │ │ │ ├── _config.scss │ │ │ ├── _normalize.scss │ │ │ └── _typography.scss │ │ │ ├── components │ │ │ ├── _alert.scss │ │ │ ├── _animation.scss │ │ │ ├── _button.scss │ │ │ ├── _icon.scss │ │ │ ├── _list.scss │ │ │ ├── _media.scss │ │ │ └── _table.scss │ │ │ ├── layout │ │ │ ├── _article.scss │ │ │ ├── _footer.scss │ │ │ ├── _grid.scss │ │ │ ├── _header.scss │ │ │ ├── _navigation.scss │ │ │ └── _sidebar.scss │ │ │ ├── main.min.css │ │ │ ├── main.scss │ │ │ ├── pages │ │ │ └── _home.scss │ │ │ ├── themes │ │ │ ├── _blue.scss │ │ │ └── _night-mode.scss │ │ │ └── vendors │ │ │ └── _prism.scss │ ├── images │ │ ├── v1 │ │ │ ├── ButterflyEffect.png │ │ │ ├── api-gears.png │ │ │ ├── api-help.png │ │ │ ├── api-search.png │ │ │ ├── api-secure.png │ │ │ ├── coeur.png │ │ │ ├── logo-carenews.jpg │ │ │ ├── logo-humano-games.jpg │ │ │ ├── logo-pages-jaunes.jpg │ │ │ ├── logo-sfr-large.png │ │ │ ├── logo-wesignit.png │ │ │ └── téléchargement.png │ │ ├── v2 │ │ │ ├── helloasso-footer-presse-bfm.png │ │ │ ├── helloasso-footer-presse-france-2.png │ │ │ ├── helloasso-footer-presse-france-info.png │ │ │ ├── helloasso-footer-presse-la-tribune.png │ │ │ ├── helloasso-footer-presse-le-monde.png │ │ │ ├── helloasso-footer-presse-les-echos.png │ │ │ ├── helloasso-lemonway-grey.svg │ │ │ ├── helloasso-logo-gris.png │ │ │ └── helloasso-logo.png │ │ └── v3 │ │ │ └── logo.svg │ └── js │ │ ├── v1 │ │ └── jquery-ui-1.8.14.custom.min.js │ │ └── v3 │ │ ├── date.js │ │ ├── date.min.js │ │ ├── main.js │ │ └── main.min.js │ ├── favicon.ico │ ├── google4c21cab80d83f9c1.html │ ├── gulpfile.js │ ├── package.json │ └── yarn.lock ├── HelloAsso.Api.Samples ├── HelloAsso.Api.Samples.csproj ├── app.config ├── curl │ ├── actions.sh │ ├── campaigns.sh │ ├── organizations.sh │ └── payments.sh ├── go │ ├── actions.go │ ├── campaigns.go │ ├── organizations.go │ └── payments.go ├── nodejs │ └── README.md └── php │ ├── helloasso_stat.php │ └── helloasso_stat_total.php └── README.md /.github/workflows/master_app-web-dev-doc-prod.yml: -------------------------------------------------------------------------------- 1 | # Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy 2 | # More GitHub Actions for Azure: https://github.com/Azure/actions 3 | 4 | name: Build and deploy ASP.Net Core app to Azure Web App - app-web-dev-doc-prod 5 | 6 | on: 7 | push: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | build-and-deploy: 13 | runs-on: windows-latest 14 | 15 | steps: 16 | - uses: actions/checkout@master 17 | 18 | - name: Set up .NET Core 19 | uses: actions/setup-dotnet@v1 20 | with: 21 | dotnet-version: '2.1.804' 22 | 23 | - name: Build with dotnet 24 | run: dotnet build --configuration Release 25 | 26 | - name: dotnet publish 27 | run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp 28 | 29 | - name: Deploy to Azure Web App 30 | uses: azure/webapps-deploy@v2 31 | with: 32 | app-name: 'app-web-dev-doc-prod' 33 | slot-name: 'production' 34 | publish-profile: ${{ secrets.AzureAppService_PublishProfile_e8167ed039db408fb322a9e2dace8c66 }} 35 | package: ${{env.DOTNET_ROOT}}/myapp -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | *.DS_Store 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | bld/ 24 | [Bb]in/ 25 | [Oo]bj/ 26 | [Ll]og/ 27 | 28 | # Visual Studio 2015 cache/options directory 29 | .vs/ 30 | # Uncomment if you have tasks that create the project's static files in wwwroot 31 | #wwwroot/ 32 | 33 | # MSTest test Results 34 | [Tt]est[Rr]esult*/ 35 | [Bb]uild[Ll]og.* 36 | 37 | # NUNIT 38 | *.VisualState.xml 39 | TestResult.xml 40 | 41 | # Build Results of an ATL Project 42 | [Dd]ebugPS/ 43 | [Rr]eleasePS/ 44 | dlldata.c 45 | 46 | # .NET Core 47 | project.lock.json 48 | project.fragment.lock.json 49 | artifacts/ 50 | **/Properties/launchSettings.json 51 | 52 | *_i.c 53 | *_p.c 54 | *_i.h 55 | *.ilk 56 | *.meta 57 | *.obj 58 | *.pch 59 | *.pdb 60 | *.pgc 61 | *.pgd 62 | *.rsp 63 | *.sbr 64 | *.tlb 65 | *.tli 66 | *.tlh 67 | *.tmp 68 | *.tmp_proj 69 | *.log 70 | *.vspscc 71 | *.vssscc 72 | .builds 73 | *.pidb 74 | *.svclog 75 | *.scc 76 | 77 | # Chutzpah Test files 78 | _Chutzpah* 79 | 80 | # Visual C++ cache files 81 | ipch/ 82 | *.aps 83 | *.ncb 84 | *.opendb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | *.VC.db 89 | *.VC.VC.opendb 90 | 91 | # Visual Studio profiler 92 | *.psess 93 | *.vsp 94 | *.vspx 95 | *.sap 96 | 97 | # TFS 2012 Local Workspace 98 | $tf/ 99 | 100 | # Guidance Automation Toolkit 101 | *.gpState 102 | 103 | # ReSharper is a .NET coding add-in 104 | _ReSharper*/ 105 | *.[Rr]e[Ss]harper 106 | *.DotSettings.user 107 | 108 | # JustCode is a .NET coding add-in 109 | .JustCode 110 | 111 | # TeamCity is a build add-in 112 | _TeamCity* 113 | 114 | # DotCover is a Code Coverage Tool 115 | *.dotCover 116 | 117 | # Visual Studio code coverage results 118 | *.coverage 119 | *.coveragexml 120 | 121 | # NCrunch 122 | _NCrunch_* 123 | .*crunch*.local.xml 124 | nCrunchTemp_* 125 | 126 | # MightyMoose 127 | *.mm.* 128 | AutoTest.Net/ 129 | 130 | # Web workbench (sass) 131 | .sass-cache/ 132 | 133 | # Installshield output folder 134 | [Ee]xpress/ 135 | 136 | # DocProject is a documentation generator add-in 137 | DocProject/buildhelp/ 138 | DocProject/Help/*.HxT 139 | DocProject/Help/*.HxC 140 | DocProject/Help/*.hhc 141 | DocProject/Help/*.hhk 142 | DocProject/Help/*.hhp 143 | DocProject/Help/Html2 144 | DocProject/Help/html 145 | 146 | # Click-Once directory 147 | publish/ 148 | 149 | # Publish Web Output 150 | *.[Pp]ublish.xml 151 | *.azurePubxml 152 | # TODO: Comment the next line if you want to checkin your web deploy settings 153 | # but database connection strings (with potential passwords) will be unencrypted 154 | *.pubxml 155 | *.publishproj 156 | 157 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 158 | # checkin your Azure Web App publish settings, but sensitive information contained 159 | # in these scripts will be unencrypted 160 | PublishScripts/ 161 | 162 | # NuGet Packages 163 | *.nupkg 164 | # The packages folder can be ignored because of Package Restore 165 | **/packages/* 166 | # except build/, which is used as an MSBuild target. 167 | !**/packages/build/ 168 | # Uncomment if necessary however generally it will be regenerated when needed 169 | #!**/packages/repositories.config 170 | # NuGet v3's project.json files produces more ignorable files 171 | *.nuget.props 172 | *.nuget.targets 173 | 174 | # Microsoft Azure Build Output 175 | csx/ 176 | *.build.csdef 177 | 178 | # Microsoft Azure Emulator 179 | ecf/ 180 | rcf/ 181 | 182 | # Windows Store app package directories and files 183 | AppPackages/ 184 | BundleArtifacts/ 185 | Package.StoreAssociation.xml 186 | _pkginfo.txt 187 | 188 | # Visual Studio cache files 189 | # files ending in .cache can be ignored 190 | *.[Cc]ache 191 | # but keep track of directories ending in .cache 192 | !*.[Cc]ache/ 193 | 194 | # Others 195 | ClientBin/ 196 | ~$* 197 | *~ 198 | *.dbmdl 199 | *.dbproj.schemaview 200 | *.jfm 201 | *.pfx 202 | *.publishsettings 203 | orleans.codegen.cs 204 | 205 | # Since there are multiple workflows, uncomment next line to ignore bower_components 206 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 207 | #bower_components/ 208 | 209 | # RIA/Silverlight projects 210 | Generated_Code/ 211 | 212 | # Backup & report files from converting an old project file 213 | # to a newer Visual Studio version. Backup files are not needed, 214 | # because we have git ;-) 215 | _UpgradeReport_Files/ 216 | Backup*/ 217 | UpgradeLog*.XML 218 | UpgradeLog*.htm 219 | 220 | # SQL Server files 221 | *.mdf 222 | *.ldf 223 | *.ndf 224 | 225 | # Business Intelligence projects 226 | *.rdl.data 227 | *.bim.layout 228 | *.bim_*.settings 229 | 230 | # Microsoft Fakes 231 | FakesAssemblies/ 232 | 233 | # GhostDoc plugin setting file 234 | *.GhostDoc.xml 235 | 236 | # Node.js Tools for Visual Studio 237 | .ntvs_analysis.dat 238 | node_modules/ 239 | 240 | # Typescript v1 declaration files 241 | typings/ 242 | 243 | # Visual Studio 6 build log 244 | *.plg 245 | 246 | # Visual Studio 6 workspace options file 247 | *.opt 248 | 249 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 250 | *.vbw 251 | 252 | # Visual Studio LightSwitch build output 253 | **/*.HTMLClient/GeneratedArtifacts 254 | **/*.DesktopClient/GeneratedArtifacts 255 | **/*.DesktopClient/ModelManifest.xml 256 | **/*.Server/GeneratedArtifacts 257 | **/*.Server/ModelManifest.xml 258 | _Pvt_Extensions 259 | 260 | # Paket dependency manager 261 | .paket/paket.exe 262 | paket-files/ 263 | 264 | # FAKE - F# Make 265 | .fake/ 266 | 267 | # JetBrains Rider 268 | .idea/ 269 | *.sln.iml 270 | 271 | # CodeRush 272 | .cr/ 273 | 274 | # Python Tools for Visual Studio (PTVS) 275 | __pycache__/ 276 | *.pyc 277 | 278 | # Cake - Uncomment if you are using it 279 | # tools/** 280 | # !tools/packages.config 281 | 282 | # Telerik's JustMock configuration file 283 | *.jmconfig 284 | 285 | # BizTalk build output 286 | *.btp.cs 287 | *.btm.cs 288 | *.odx.cs 289 | *.xsd.cs 290 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2026 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloAsso.Api.Doc", "HelloAsso.Api.Doc\HelloAsso.Api.Doc.csproj", "{D2AD9952-00EB-4F9B-A563-BA38E519D838}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloAsso.Api.Samples", "HelloAsso.Api.Samples\HelloAsso.Api.Samples.csproj", "{867CB265-545C-4B18-93DC-40C4AFA18AD3}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {D2AD9952-00EB-4F9B-A563-BA38E519D838}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {D2AD9952-00EB-4F9B-A563-BA38E519D838}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {D2AD9952-00EB-4F9B-A563-BA38E519D838}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {D2AD9952-00EB-4F9B-A563-BA38E519D838}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {867CB265-545C-4B18-93DC-40C4AFA18AD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {867CB265-545C-4B18-93DC-40C4AFA18AD3}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {867CB265-545C-4B18-93DC-40C4AFA18AD3}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {867CB265-545C-4B18-93DC-40C4AFA18AD3}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {D092D96F-4039-43BD-90D8-69D40C23ED8A} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | DO_NOT_SHOW 3 | DO_NOT_SHOW 4 | SUGGESTION 5 | <Policy Inspect="True" Prefix="" Suffix="" Style="AA_BB" /> 6 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 7 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 8 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 9 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 10 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 11 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 12 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 13 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 14 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 15 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 16 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 17 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 18 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 19 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 20 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 21 | <Policy Inspect="True" Prefix="I" Suffix="" Style="AaBb" /> 22 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 23 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 24 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 25 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 26 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 27 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 28 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 29 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 30 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 31 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 32 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 33 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 34 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 35 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 36 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 37 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 38 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 39 | <Policy Inspect="True" Prefix="T" Suffix="" Style="AaBb" /> 40 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 41 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 42 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 43 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 44 | <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> 45 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 46 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 47 | C:\Users\eddy\AppData\Local\JetBrains\Transient\ReSharperPlatformVs15\v11_4c471217\SolutionCaches 48 | LIVE_MONITOR 49 | LIVE_MONITOR 50 | DO_NOTHING 51 | LIVE_MONITOR 52 | LIVE_MONITOR 53 | LIVE_MONITOR 54 | LIVE_MONITOR 55 | LIVE_MONITOR 56 | LIVE_MONITOR 57 | LIVE_MONITOR 58 | LIVE_MONITOR 59 | DO_NOTHING 60 | LIVE_MONITOR -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Controllers/V3Controller.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace HelloAsso.Api.Doc.Controllers 4 | { 5 | public class V3Controller : Controller 6 | { 7 | public IActionResult Index() 8 | { 9 | ReadCookie(); 10 | return View(); 11 | } 12 | 13 | public IActionResult Description() 14 | { 15 | ReadCookie(); 16 | return View(); 17 | } 18 | 19 | public IActionResult Format() 20 | { 21 | ReadCookie(); 22 | return View(); 23 | } 24 | 25 | public IActionResult Notifications() 26 | { 27 | ReadCookie(); 28 | return View(); 29 | } 30 | 31 | public IActionResult Public() 32 | { 33 | ReadCookie(); 34 | return View(); 35 | } 36 | 37 | public IActionResult Resources() 38 | { 39 | ReadCookie(); 40 | return View(); 41 | } 42 | 43 | public IActionResult Responses() 44 | { 45 | ReadCookie(); 46 | return View(); 47 | } 48 | 49 | private void ReadCookie() 50 | { 51 | var cookie = Request.Cookies["themeSaver"] ?? "theme-default"; 52 | this.ViewBag.Theme = cookie; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/.gitignore: -------------------------------------------------------------------------------- 1 | # Perso 2 | *.DS_Store 3 | *.idea 4 | 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | 24 | # nyc test coverage 25 | .nyc_output 26 | 27 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 28 | .grunt 29 | 30 | # Bower dependency directory (https://bower.io/) 31 | bower_components 32 | 33 | # node-waf configuration 34 | .lock-wscript 35 | 36 | # Compiled binary addons (https://nodejs.org/api/addons.html) 37 | build/Release 38 | 39 | # Dependency directories 40 | node_modules/ 41 | jspm_packages/ 42 | 43 | # TypeScript v1 declaration files 44 | typings/ 45 | 46 | # Optional npm cache directory 47 | .npm 48 | 49 | # Optional eslint cache 50 | .eslintcache 51 | 52 | # Optional REPL history 53 | .node_repl_history 54 | 55 | # Output of 'npm pack' 56 | *.tgz 57 | 58 | # Yarn Integrity file 59 | .yarn-integrity 60 | 61 | # dotenv environment variables file 62 | .env 63 | 64 | # parcel-bundler cache (https://parceljs.org/) 65 | .cache 66 | 67 | # next.js build output 68 | .next 69 | 70 | # nuxt.js build output 71 | .nuxt 72 | 73 | # vuepress build output 74 | .vuepress/dist 75 | 76 | # Serverless directories 77 | .serverless 78 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/README.md: -------------------------------------------------------------------------------- 1 | # HelloAsso Formulaire via Redirect + URL Params - Demo 2 | 3 | Remplir l'URL de votre formulaire dans le fichier `./js/main.js` 4 | 5 | Puis pour mettre en place un petit serveur web en se plaçant localement à la racine du fichier. 6 | 7 | - serve locally with node: 8 | ``` 9 | npx simple-server 10 | ``` 11 | 12 | - serve locally with python: 13 | ``` 14 | $ python -m SimpleHTTPServer 15 | ``` 16 | @Gil && @Paul d'HelloAsso. -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.1.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2018 The Bootstrap Authors 4 | * Copyright 2011-2018 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | *, 9 | *::before, 10 | *::after { 11 | box-sizing: border-box; 12 | } 13 | 14 | html { 15 | font-family: sans-serif; 16 | line-height: 1.15; 17 | -webkit-text-size-adjust: 100%; 18 | -ms-text-size-adjust: 100%; 19 | -ms-overflow-style: scrollbar; 20 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 21 | } 22 | 23 | @-ms-viewport { 24 | width: device-width; 25 | } 26 | 27 | article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { 28 | display: block; 29 | } 30 | 31 | body { 32 | margin: 0; 33 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 34 | font-size: 1rem; 35 | font-weight: 400; 36 | line-height: 1.5; 37 | color: #212529; 38 | text-align: left; 39 | background-color: #fff; 40 | } 41 | 42 | [tabindex="-1"]:focus { 43 | outline: 0 !important; 44 | } 45 | 46 | hr { 47 | box-sizing: content-box; 48 | height: 0; 49 | overflow: visible; 50 | } 51 | 52 | h1, h2, h3, h4, h5, h6 { 53 | margin-top: 0; 54 | margin-bottom: 0.5rem; 55 | } 56 | 57 | p { 58 | margin-top: 0; 59 | margin-bottom: 1rem; 60 | } 61 | 62 | abbr[title], 63 | abbr[data-original-title] { 64 | text-decoration: underline; 65 | -webkit-text-decoration: underline dotted; 66 | text-decoration: underline dotted; 67 | cursor: help; 68 | border-bottom: 0; 69 | } 70 | 71 | address { 72 | margin-bottom: 1rem; 73 | font-style: normal; 74 | line-height: inherit; 75 | } 76 | 77 | ol, 78 | ul, 79 | dl { 80 | margin-top: 0; 81 | margin-bottom: 1rem; 82 | } 83 | 84 | ol ol, 85 | ul ul, 86 | ol ul, 87 | ul ol { 88 | margin-bottom: 0; 89 | } 90 | 91 | dt { 92 | font-weight: 700; 93 | } 94 | 95 | dd { 96 | margin-bottom: .5rem; 97 | margin-left: 0; 98 | } 99 | 100 | blockquote { 101 | margin: 0 0 1rem; 102 | } 103 | 104 | dfn { 105 | font-style: italic; 106 | } 107 | 108 | b, 109 | strong { 110 | font-weight: bolder; 111 | } 112 | 113 | small { 114 | font-size: 80%; 115 | } 116 | 117 | sub, 118 | sup { 119 | position: relative; 120 | font-size: 75%; 121 | line-height: 0; 122 | vertical-align: baseline; 123 | } 124 | 125 | sub { 126 | bottom: -.25em; 127 | } 128 | 129 | sup { 130 | top: -.5em; 131 | } 132 | 133 | a { 134 | color: #007bff; 135 | text-decoration: none; 136 | background-color: transparent; 137 | -webkit-text-decoration-skip: objects; 138 | } 139 | 140 | a:hover { 141 | color: #0056b3; 142 | text-decoration: underline; 143 | } 144 | 145 | a:not([href]):not([tabindex]) { 146 | color: inherit; 147 | text-decoration: none; 148 | } 149 | 150 | a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { 151 | color: inherit; 152 | text-decoration: none; 153 | } 154 | 155 | a:not([href]):not([tabindex]):focus { 156 | outline: 0; 157 | } 158 | 159 | pre, 160 | code, 161 | kbd, 162 | samp { 163 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 164 | font-size: 1em; 165 | } 166 | 167 | pre { 168 | margin-top: 0; 169 | margin-bottom: 1rem; 170 | overflow: auto; 171 | -ms-overflow-style: scrollbar; 172 | } 173 | 174 | figure { 175 | margin: 0 0 1rem; 176 | } 177 | 178 | img { 179 | vertical-align: middle; 180 | border-style: none; 181 | } 182 | 183 | svg { 184 | overflow: hidden; 185 | vertical-align: middle; 186 | } 187 | 188 | table { 189 | border-collapse: collapse; 190 | } 191 | 192 | caption { 193 | padding-top: 0.75rem; 194 | padding-bottom: 0.75rem; 195 | color: #6c757d; 196 | text-align: left; 197 | caption-side: bottom; 198 | } 199 | 200 | th { 201 | text-align: inherit; 202 | } 203 | 204 | label { 205 | display: inline-block; 206 | margin-bottom: 0.5rem; 207 | } 208 | 209 | button { 210 | border-radius: 0; 211 | } 212 | 213 | button:focus { 214 | outline: 1px dotted; 215 | outline: 5px auto -webkit-focus-ring-color; 216 | } 217 | 218 | input, 219 | button, 220 | select, 221 | optgroup, 222 | textarea { 223 | margin: 0; 224 | font-family: inherit; 225 | font-size: inherit; 226 | line-height: inherit; 227 | } 228 | 229 | button, 230 | input { 231 | overflow: visible; 232 | } 233 | 234 | button, 235 | select { 236 | text-transform: none; 237 | } 238 | 239 | button, 240 | html [type="button"], 241 | [type="reset"], 242 | [type="submit"] { 243 | -webkit-appearance: button; 244 | } 245 | 246 | button::-moz-focus-inner, 247 | [type="button"]::-moz-focus-inner, 248 | [type="reset"]::-moz-focus-inner, 249 | [type="submit"]::-moz-focus-inner { 250 | padding: 0; 251 | border-style: none; 252 | } 253 | 254 | input[type="radio"], 255 | input[type="checkbox"] { 256 | box-sizing: border-box; 257 | padding: 0; 258 | } 259 | 260 | input[type="date"], 261 | input[type="time"], 262 | input[type="datetime-local"], 263 | input[type="month"] { 264 | -webkit-appearance: listbox; 265 | } 266 | 267 | textarea { 268 | overflow: auto; 269 | resize: vertical; 270 | } 271 | 272 | fieldset { 273 | min-width: 0; 274 | padding: 0; 275 | margin: 0; 276 | border: 0; 277 | } 278 | 279 | legend { 280 | display: block; 281 | width: 100%; 282 | max-width: 100%; 283 | padding: 0; 284 | margin-bottom: .5rem; 285 | font-size: 1.5rem; 286 | line-height: inherit; 287 | color: inherit; 288 | white-space: normal; 289 | } 290 | 291 | progress { 292 | vertical-align: baseline; 293 | } 294 | 295 | [type="number"]::-webkit-inner-spin-button, 296 | [type="number"]::-webkit-outer-spin-button { 297 | height: auto; 298 | } 299 | 300 | [type="search"] { 301 | outline-offset: -2px; 302 | -webkit-appearance: none; 303 | } 304 | 305 | [type="search"]::-webkit-search-cancel-button, 306 | [type="search"]::-webkit-search-decoration { 307 | -webkit-appearance: none; 308 | } 309 | 310 | ::-webkit-file-upload-button { 311 | font: inherit; 312 | -webkit-appearance: button; 313 | } 314 | 315 | output { 316 | display: inline-block; 317 | } 318 | 319 | summary { 320 | display: list-item; 321 | cursor: pointer; 322 | } 323 | 324 | template { 325 | display: none; 326 | } 327 | 328 | [hidden] { 329 | display: none !important; 330 | } 331 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.1.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2018 The Bootstrap Authors 4 | * Copyright 2011-2018 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/css/main.css: -------------------------------------------------------------------------------- 1 | .payment-form-wrapper { 2 | margin-bottom: 100px; 3 | } 4 | 5 | button.payment, 6 | button.payment:hover, 7 | button.payment:focus { 8 | background: rgb(99, 143, 52); 9 | } 10 | 11 | body { 12 | background-color: #ecf0f1 !important 13 | } 14 | 15 | h1 { 16 | margin-top: 20px; 17 | margin-bottom: 60px; 18 | } 19 | 20 | .form-control{ 21 | color: #0a0a0a; 22 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/FormulaireDon-demo/img/favicon.ico -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/img/helloasso-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/FormulaireDon-demo/img/helloasso-logo.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | HelloAsso API 9 | 10 | 11 |
12 |
13 |
14 |
15 |

Formulaire custom avec

16 | 17 |
18 | 19 | 20 |
21 | 22 |
23 |
24 | 27 | 30 |
31 |
32 | 33 |
34 | 35 | 36 |
37 | 38 |
39 | 40 | 41 |
42 | 43 |
44 | 45 | 46 |
47 | 48 |
49 | 50 | 51 |
52 | 53 |
54 | 55 | 56 |
57 | 58 |
59 | 60 | 61 |
62 | 63 |
64 | 65 | 66 |
67 | 68 |
69 | 70 | 76 |
77 | 78 |
79 | 80 | 81 |
82 | 83 |
84 |
85 |
86 |
87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/FormulaireDon-demo/js/main.js: -------------------------------------------------------------------------------- 1 | const fields = [ 2 | 'a', 'm', 'ln', 'fn', 's', 'e', 'ad', 'z', 'ci', 'co', 'custom_ref' 3 | ]; 4 | 5 | // A REMPLIR !!!! 6 | const baseUrl = 'https://www.helloasso-dev.com/associations/test-gil/formulaires/2'; 7 | 8 | const mapFields = (form) => { 9 | return fields.reduce((acc, key) => { 10 | const value = form[key].value; 11 | if (value) { 12 | const updated = Object.assign({}, acc); 13 | updated[key] = value; 14 | return updated; 15 | } 16 | return acc; 17 | }, {}); 18 | }; 19 | 20 | const makeQuery = (fields) => { 21 | return Object.entries(fields).reduce((acc, [key, val]) => { 22 | return `${acc}${key}=${encodeURIComponent(val)}&` 23 | }, '?'); 24 | }; 25 | 26 | const redirect = (query) => { 27 | window.location.replace(`${baseUrl}${query}`); 28 | return false; 29 | }; 30 | 31 | const onSubmit = (form) => { 32 | const fields = mapFields(form); 33 | const query = `${makeQuery(fields)}ft=0`; 34 | console.log(query); 35 | 36 | return redirect(query); 37 | }; -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/HelloAsso.Api.Doc.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | <_ContentIncludedByDefault Remove="Views\V1\Cgu.cshtml" /> 22 | <_ContentIncludedByDefault Remove="Views\V1\Doc.cshtml" /> 23 | <_ContentIncludedByDefault Remove="Views\V1\Index.cshtml" /> 24 | <_ContentIncludedByDefault Remove="Views\V1\Shared\_Layout.cshtml" /> 25 | <_ContentIncludedByDefault Remove="Views\V2\Index.cshtml" /> 26 | <_ContentIncludedByDefault Remove="Views\V2\Shared\_Footer.cshtml" /> 27 | <_ContentIncludedByDefault Remove="Views\V2\Shared\_Header.cshtml" /> 28 | <_ContentIncludedByDefault Remove="Views\V2\Shared\_Layout.cshtml" /> 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace HelloAsso.Api.Doc.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace HelloAsso.Api.Doc 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | BuildWebHost(args).Run(); 11 | } 12 | 13 | public static IWebHost BuildWebHost(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup() 16 | .Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Startup.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | using Microsoft.AspNetCore.Hosting; 3 | using Microsoft.Extensions.Configuration; 4 | using Microsoft.Extensions.DependencyInjection; 5 | 6 | namespace HelloAsso.Api.Doc 7 | { 8 | public class Startup 9 | { 10 | public Startup(IConfiguration configuration) 11 | { 12 | Configuration = configuration; 13 | } 14 | 15 | public IConfiguration Configuration { get; } 16 | 17 | // This method gets called by the runtime. Use this method to add services to the container. 18 | public void ConfigureServices(IServiceCollection services) 19 | { 20 | services.AddMvc(); 21 | } 22 | 23 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 24 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) 25 | { 26 | if (env.IsDevelopment()) 27 | { 28 | app.UseBrowserLink(); 29 | app.UseDeveloperExceptionPage(); 30 | } 31 | else 32 | { 33 | app.UseExceptionHandler("/Home/Error"); 34 | } 35 | 36 | app.UseStaticFiles(); 37 | 38 | app.UseMvc(routes => 39 | { 40 | routes.MapRoute( 41 | name: "default", 42 | template: "{controller=V3}/{action=Index}/{id?}"); 43 | }); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Description.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/V3/Shared/_Layout.cshtml"; 3 | } 4 | 5 | @Html.Partial("Shared/_Header") 6 | 7 |
8 |
9 |
10 |

Sommaire

11 | 19 |
20 |
21 |

Définitions

22 |
23 |

Application

24 |

Une application est un compte API ouvert pour vous par HelloAsso, vous permettant de réaliser des opérations d’API sur les organismes enregistrés dessus.

25 |
26 |
27 |

Organisme

28 |

Un compte associatif ou une fondation inscrit-e sur HelloAsso.

29 |
30 |
31 |

Action

32 |

Une action d’un contributeur sur la plateforme HelloAsso, susceptible de remonter dans votre application, à condition que celle-ci ait été effectuée sur un des organismes affiliés à celle-ci.
Exemples : un don, une adhésion, une inscription à une billetterie.

33 |
34 |
35 |

Paiement

36 |

Un paiement est une transaction monétique réalisée sur HelloAsso, au profit d’une campagne. Un paiement est toujours associé à une ou plusieurs actions. Sur une billetterie, les internautes peuvent par exemple inscrire plusieurs personnes en même temps, et/ou laisser un don en plus de leurs inscriptions. Ceci engendrerait donc la création d’un paiement associé à une ou plusieurs actions d’inscription, et le cas échéant, d’une action de don.

37 |
38 |
39 |

Campagne

40 |

Une campagne est une page créée par un organisme sur HelloAsso, permettant de présenter un projet de financement participatif, un formulaire d’adhésion ou une billetterie en ligne. Les contributeurs peuvent réaliser des actions sur une campagne : réaliser un don (unique ou mensuel), s’inscrire, adhérer.

41 |
42 |
43 |
44 |

Présentation générale

45 |
46 |

L’ensemble des interfaces HelloAsso sont exposées au travers d’une API accessible sur le domaine api.helloasso.com. Celle-ci est structurée suivant les principes REST : les ressources sont exposées sous forme d’url sur lesquelles des appels HTTP GET permettent de récupérer les données concernées.

47 |

HelloAsso ouvre pour ses partenaires des comptes d’application sur son API, il est nécessaire d’envoyer votre demande de clé via le formulaire de contact HelloAsso. Des données d’authentification seront fournies par HelloAsso. Celles-ci vous permettront d’accéder aux ressources privées associées à votre application. Ces données d’authentification doivent être intégrées dans l’en-tête de tous les appels, via le champ Authorization. Tous les appels apis auront donc la forme :

48 |
49 | 
50 | <VERB> https://api.helloasso.com/v3/chemin
51 | Header :
52 | Authorization : Basic <chaine de connexion>
53 | 
54 | 
55 |
56 |
57 |

La chaîne de connexion est l’encodage base64 de la chaîne « username:password », ainsi que spécifié dans le standard Basic access authentication :

58 |

59 | https://en.wikipedia.org/wiki/Basic_access_authentication 60 |

61 |
62 |
63 |

Les ressources sont nommées de façon explicite et sont arrangées selon la typologie suivante.

64 |
    65 |
  • organization : un organisme enregistré sur votre application.
  • 66 |
  • campaign : une campagne enregistrée sur votre application.
  • 67 |
  • action : un don, une adhésion ou une inscription réalisée sur une campagne.
  • 68 |
  • payment : un paiement réalisé sur une campagne, correspond à une ou plusieurs actions.
  • 69 |
70 |
71 |
72 |

Tous les appels en lecture sont réalisés via une requête http GET. Toutes les requêtes doivent être réalisées en https.

73 |
74 |
75 |
76 | 86 |
87 | 88 | 89 | 90 |
91 | Retour 92 |
-------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Format.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/V3/Shared/_Layout.cshtml"; 3 | } 4 | 5 | @Html.Partial("Shared/_Header") 6 | 7 |
8 |
9 |
10 |

Sommaire

11 | 25 |
26 |
27 |

Encodage

28 |
29 |

Les données échangées à travers l’API HelloAsso, qu’elles soient passées en paramètres, ou retournées dans les réponses, respectent les normes suivantes :

30 |
    31 |
  • chaine de caractères : l’encodage utilisé est l’UTF-8
  • 32 |
  • dates : les dates sont représentées sous forme de timestamp au format ISO 8601. Le 12 mai 2015 est ainsi représenté par la chaine 2015-05-12T12:12:33
  • 33 |
  • format du contenu de la réponse : JSON
  • 34 |
35 |
36 |
37 |
38 |

Gestion des erreurs

39 |
40 |

Un code HTTP indique si l’appel a été correctement traité. Si ce code est différent de 200, cela signifie qu’un problème a été rencontré.

41 |

En particulier, voici les différents codes d’erreur HTTP qui sont susceptibles d’être retournés :

42 |
43 |
44 |

400 : Bad Request

45 |

L’url de l’appel est incorrect. Ce code correspond généralement à une valeur de paramètre incorrecte ou inexistante.

46 |
47 |
48 |

401 : Unauthorized

49 |

Les informations d’authentification sont incorrectes ou absentes.

50 |
51 |
52 |

404 : Not Found

53 |

L’appel a été correctement interprété et exécuté, mais la ressource demandée n’a pas été trouvée. En règle générale, cela indique que l’identifiant passé en paramètre est incorrect.

54 |
55 |
56 |

405 : Method Not Allowed

57 |

L’url de l’appel est correct, mais la méthode utilisée n’est pas supportée par cette ressource. Par exemple, un appel GET a été réalisé sur une ressource ne pouvant être accédée qu’avec la méthode POST.

58 |
59 |
60 |

426 : Update Required

61 |

L’appel a été correctement interprété, mais non exécuté. Ce code est retourné si l’appel est effectué dans un protocole non-sécurisé.

62 |
63 |
64 |

500 : Internal Server Error

65 |

Une erreur de traitement a été rencontrée par les serveurs HelloAsso. Dans ce cas, le problème doit être remonté à notre équipe afin que nous puissions en déterminer l’origine et, le cas échéant, appliquer un correctif.

66 |
67 |
68 |

503 : Service Unavailable

69 |

Ce code de retour indique que les serveurs HelloAsso sont surchargés. Dans ce cas de figure, l’appel doit être réitéré après le délai indiqué dans le champs d’en-tête Retry-After de la réponse.

70 |
71 |
72 |

Outre le code de réponse HTTP, les appels en erreur retournent une réponse contenant plus d’informations sur l’erreur rencontrée. Ces informations apparaissent sous deux formats. Le premier est un message à destination humaine, donnant une indication sur la possible origine du problème. Par exemple, si l’erreur provient d’un paramètre malformé, cela sera indiqué dans le message, avec le nom du paramètre en question.

73 |

Le deuxième format est un code d’erreur HelloAsso en notation reverse-domain, pouvant donc être automatiquement traité afin de mettre en place différents scénarios de réponses.

74 |

Voici les différents codes de réponses susceptibles d’être retournés :

75 |
76 |
77 |

com.helloasso.api.InvalidResource

78 |

La ressource demandée n’existe pas. La raison en est probablement une url malformée.

79 |

com.helloasso.api.MissingParameter

80 |

L’accès à la ressource nécessite un paramètre qui n’a pas été fourni. Le message indique alors le paramètre concerné.

81 |

com.helloasso.api.InvalidParameter

82 |

Un des paramètres fournis n’est pas au format attendu. Le message indique alors le paramètre concerné.

83 |

com.helloasso.api.InvalidIdentifier

84 |

Un paramètre d’identifiant a été fourni, ne correspondant à aucune donnée enregistrée sur l’application.

85 |

com.helloasso.api.NonSecureConnection

86 |

L’appel a été réalisé en HTTP, sur une ressource imposant le protocole HTTPS.

87 |

com.helloasso.api.ServiceUnavailable

88 |

La ressource est actuellement indisponible pour cause de maintenance. Le message indique alors la nature de la maintenance et le temps d’attente estimé avant que la ressource soit à nouveau disponible.

89 |

com.helloasso.api.ServerError

90 |

Une erreur s’est produite lors du traitement de la demande.

91 |
92 |
93 |
94 |

Format des chemins d’accès aux ressources

95 |
96 |

Le format canonique des urls d’accès aux ressources est le suivant :

97 |
 98 | 
 99 | <VERB> api.helloasso.com/<version>/<type>[/<id|slug>].<format>[?parameters]
100 | 
101 | 
102 |
103 |
104 |

[version] est l’identifiant de version de l’API utilisée. Celui-ci sera valorisé à v3. Les futures mises à jour importantes de l’API engendreront systématiquement un changement de numéro de version.

105 |

[type] est le type de ressource demandée. Celui-ci peut prendre différentes valeurs :

106 |
    107 |
  • 108 | organizations 109 |
  • 110 |
  • 111 | campaigns 112 |
  • 113 |
  • 114 | actions 115 |
  • 116 |
  • 117 | payments 118 |
  • 119 |
120 |

[id] est l’identifiant unique de la ressource demandée. Celui-ci est normalement récupéré par un autre appel à l’API, ou fourni en retour d’un appel de création d’une nouvelle ressource.

121 |

[format] est le format de sérialisation souhaitée. Le format par défaut est le JSON, mais d’autres formats de sérialisation pourront être mis en place à l’avenir.

122 |

[parameters] est la chaine des paramètres optionnels attendu par la ressource demandée. Celle-ci se présente sous forme de query string d’url standard.

123 |
124 |
125 |
126 |

Format des réponses et pagination

127 |
128 |

Si l’appel à une resource est correcte, la réponse contient une representation JSON de la resource demandée. Les representations JSON des différentes ressources sont documentées dans le chapitre “Type de réponses”.

129 |

Certains appels retournent une collection de ressources. Dans ce cas, le format de la réponse est le suivant :

130 |
131 | 
132 | {
133 | 	"resources": [
134 | 	    {
135 | 	    // Representation JSON du type de resource demandée
136 | 	    }
137 | 	    …
138 | 	],
139 | 	"pagination": {
140 | 	    "page": "int",
141 | 	    "max_page": "int",
142 | 	    "result_per_page": "int"
143 | 	}
144 | }
145 | 
146 | 
147 |
148 |
149 |
150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 162 | 163 | 164 | 165 | 168 | 169 | 170 | 171 | 174 | 175 | 176 | 177 | 180 | 181 | 182 | 183 |
ÉlémentDescription
160 | ressources 161 | Un tableau contenant les représentations JSON des ressources demandées
166 | pagination.page 167 | La page courante de la collection retournée
172 | pagination.max_page 173 | Le nombre de pages disponibles pour cette collection
178 | pagination.result_per_page 179 | Le nombre de résultat par page
184 |
185 |
186 |
187 |
188 | 198 |
199 | 200 | 201 |
202 | Retour 203 |
204 | 205 | @**@ -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/V3/Shared/_Layout.cshtml"; 3 | } 4 | 5 |
6 |
7 |

Documentation de l’API HelloAsso

8 |

Retrouvez ici toutes les spécifications de l’API HelloAsso v3.

9 |

Dernière version stable : v3.3.1

10 |
11 |
12 | 13 |
14 | 34 |
35 | 36 | 44 | 45 | 57 | 58 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Notifications.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/V3/Shared/_Layout.cshtml"; 3 | } 4 | 5 | @Html.Partial("Shared/_Header") 6 | 7 |
8 |
9 |
10 |

Sommaire

11 | 22 |
23 |
24 |

Généralités

25 |
26 |

HelloAsso peut vous envoyer des notifications lors de différents événements liés aux organismes et campagnes enregistrés sur votre application.

27 |

Les notifications sont réalisées via des requêtes sous format URLEncoded et en POST sur les urls que vous aurez définies pour chacun des types de notification décrits dans ce chapitre.

28 |

Pour demander à intégrer votre URL de callback merci de nous faire la demande par mail ou sur notre formulaire.

29 |

Nous prendrons en charge votre demande rapidement.

30 |

HelloAsso envoie sur chaque notification les paramètres décrits dans les sections suivantes.

31 |
32 |
33 |
34 |

Nouveau paiement

35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 50 | 51 | 52 | 53 | 54 | 57 | 58 | 59 | 60 | 61 | 64 | 65 | 66 | 67 | 68 | 71 | 72 | 73 | 74 | 75 | 78 | 79 | 80 | 81 | 82 | 85 | 86 | 87 | 88 | 89 | 92 | 93 | 94 | 95 | 96 | 99 | 100 | 101 | 102 | 103 | 106 | 107 | 108 | 109 | 110 | 113 | 114 | 115 | 116 | 117 |
ParamètreDescriptionFormat
48 | id 49 | L’identifiant du paiementstring
55 | date 56 | La datestring
62 | amount 63 | Le montant du paiementdecimal
69 | type 70 | Type de paiement paiementstring
76 | url 77 | L’url de la campagne sur laquelle a été effectué le paiementstring
83 | payer_first_name 84 | Le prénom du payeurstring
90 | payer_last_name 91 | Le nom du payeurstring
97 | url_receipt 98 | L’url du reçustring
104 | url_tax_receipt 105 | L’url du reçu fiscalstring
111 | action_id 112 | Action ID à requeter pour les infos complémentairesstring
118 |
119 |
120 |
121 |
122 |

Création/édition de campagne

123 |
124 |
125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 138 | 139 | 140 | 141 | 142 | 145 | 146 | 147 | 148 | 149 | 152 | 153 | 154 | 155 | 156 | 159 | 160 | 161 | 162 | 163 | 166 | 167 | 168 | 169 | 170 |
ParamètreDescriptionFormat
136 | id 137 | L’identifiant de la campagnestring
143 | date 144 | La date de création ou modificationdate
150 | url 151 | L’url de la campagnestring
157 | notification_type 158 | Type de notificationEDITION | CREATION
164 | type 165 | Type de la campagneEVENT | FORM | FUNDRAISER | MEMBERSHIP | FUNDRAISER_PEER_TO_PEER
171 |
172 |
173 |
174 |
175 | 185 |
186 | 187 | 188 |
189 | Retour 190 |
-------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Public.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/V3/Shared/_Layout.cshtml"; 3 | } 4 | 5 | @Html.Partial("Shared/_Header") 6 | 7 |
8 |
9 |
10 |

Liste des campagnes d’une association par son slug

11 |
12 |

Requête

13 |
 14 | 
 15 | GET https://api.helloasso.com/v3/public/organizations/{slug}/campaigns.json[?type=<EVENT|FORM|FUNDRAISER|MEMBERSHIP>&page=<page>&results_per_page=<results_per_page>]
 16 | 
 17 | 
18 |
19 |
20 |

Paramètres

21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | 41 | 44 | 45 | 46 | 47 | 48 | 49 | 52 | 53 | 54 | 55 | 56 | 57 | 60 | 61 | 62 | 63 | 64 | 65 |
ParamètreDescriptionRequisFormat
34 | slug 35 | Le slug de l’organisme détenteur des campagnesOuistring
42 | type 43 | Le type de campagnes à récupérerNonEVENT|FORM|FUNDRAISER |MEMBERSHIP
50 | page 51 | Page qu’on veut retourner (1 par défaut)Nonint
58 | results_per_page 59 | Nombre de résultats par page (20 par défaut)Nonint
66 |
67 |

Réponse : Une collection des campagnes basiques.

68 |
 69 | 
 70 | {
 71 | 	"resources": [
 72 | 		{
 73 | 			"name": "string",
 74 | 			"slug": "string",
 75 | 			"type": "string",
 76 | 			"url": "string",
 77 | 			"url_widget": "string",
 78 | 			"url_bouton": "string",
 79 | 			"name_organism": "string",
 80 | 			"slug_organism": "string"
 81 | 		}
 82 | 		…
 83 | 	]
 84 | }
 85 | 
 86 | 
87 |
88 |
89 |
90 |
91 |
92 |

Liste des campagnes d’une association par son id

93 |
94 |

Requête

95 |
 96 | 
 97 | GET https://api.helloasso.com/v3/public/organizations/campaigns.json?organism_id=<organism_id>[&type=<EVENT|FORM|FUNDRAISER|MEMBERSHIP>&page=<page>&results_per_page=<results_per_page>]
 98 | 
 99 | 
100 |
101 |
102 |

Paramètres

103 |
104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 118 | 119 | 120 | 121 | 122 | 123 | 126 | 127 | 128 | 129 | 130 | 131 | 134 | 135 | 136 | 137 | 138 | 139 | 142 | 143 | 144 | 145 | 146 | 147 |
ParamètreDescriptionRequisFormat
116 | organism_id 117 | L’id de l’organisme détenteur des campagnesOuistring
124 | type 125 | Le type de campagnes à récupérerNonEVENT|FORM|FUNDRAISER |MEMBERSHIP
132 | page 133 | Page qu’on veut retourner (1 par défaut)Nonint
140 | results_per_page 141 | Nombre de résultats par page (20 par défaut)Nonint
148 |
149 |

Réponse : Une collection des campagnes basiques.

150 |
151 | 
152 | {
153 | 	"name": "string",
154 | 	"slug": "string",
155 |     "type": "string",
156 |     "url": "string",
157 |     "url_widget": "string",
158 |     "url_bouton": "string",
159 |     "name_organism": "string",
160 | 	"slug_organism": "string"
161 | }
162 | 
163 | 
164 |
165 |
166 |
167 | 177 |
178 | 179 | 180 |
181 | Retour 182 |
-------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Shared/_Header.cshtml: -------------------------------------------------------------------------------- 1 | 
2 |
3 |

4 |
5 |
-------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | API HelloAsso - Documentation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 33 | 34 | 35 | 36 | @Html.Partial("Shared/_Sidebar") 37 | 38 |
39 | 40 | @RenderBody() 41 | 42 |
43 |
44 |

© @DateTime.Today.Year HelloAsso - Tous droits réservés.

45 |
46 |
47 |
48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/V3/Shared/_Sidebar.cshtml: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using HelloAsso.Api.Doc 2 | @using HelloAsso.Api.Doc.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/BingSiteAuth.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | F70B4895D941149AD63F005E3DB3CD1D 4 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v1/smoothness/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v2/api-doc.min.css: -------------------------------------------------------------------------------- 1 | .menu{width:20%;margin:3rem 0;}.menu a{display:block;}.doc{margin-bottom:3rem;}.url{border:solid 2px #7cb342;padding:20px;margin-bottom:20px;}table{margin:20px 0;}table th{color:#7cb342;font-weight:bold;text-align:center;padding:10px;border:solid 1px #b0bec5;}table td{border:solid 1px #b0bec5;padding:10px;}.result{display:none;} -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v2/vendors/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.5 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | /*! 7 | * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=e5bc1febf22c3605d0a1) 8 | * Config saved to config.json and https://gist.github.com/e5bc1febf22c3605d0a1 9 | */ 10 | /*! 11 | * Bootstrap v3.3.5 (http://getbootstrap.com) 12 | * Copyright 2011-2015 Twitter, Inc. 13 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 14 | */ 15 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ 16 | html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media(min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media(min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media(min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}@media(max-width:575px){.col{width:100%}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed} -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/base/_base.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | *, 4 | *::before, 5 | *::after { 6 | box-sizing: inherit; 7 | } 8 | 9 | html { 10 | height: 100%; 11 | font-family: $font-family; 12 | font-size: 62.5%; 13 | color: $color-text; 14 | line-height: $line-height-base; 15 | box-sizing: border-box; 16 | } 17 | 18 | body { 19 | margin: 0; 20 | font-size: 1.4rem; 21 | background-color: $background-color-body; 22 | 23 | @media (min-width: $tablet) { 24 | font-size: 1.6rem; 25 | } 26 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/base/_color.scss: -------------------------------------------------------------------------------- 1 | // Base 2 | 3 | $mint: #49D38A; 4 | $dream: #9EBCF9; 5 | 6 | // Others (Texts, backgrounds, borders...) 7 | 8 | $air: #F4F6FA; 9 | $pearl: #E9E9F0; 10 | $silver: #D1D6DE; 11 | $flint: #BEBED7; 12 | $storm: #777D9C; 13 | $midnight: #2E2F5E; 14 | 15 | $dust: #9A9DA8; 16 | 17 | // States 18 | 19 | $emerald: #51BD7C; 20 | $sapphire: #54C0FC; 21 | $gold: #FF9D66; 22 | $ruby: #F45554; -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/base/_config.scss: -------------------------------------------------------------------------------- 1 | // Media Queries 2 | $largedesktop: 1200px !default; 3 | $smalldesktop: 992px !default; 4 | $tablet: 768px !default; 5 | $largephone: 480px !default; 6 | $smallphone: 320px !default; 7 | 8 | // Typography 9 | $font-family: "Open Sans", "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif !default; 10 | 11 | // Line height 12 | $line-height-base: 1.5 !default; 13 | $line-height-heading: 1.2 !default; 14 | 15 | // Base color 16 | $color-primary: $mint !default; 17 | 18 | // Font Colors 19 | $color-text: $midnight !default; 20 | $color-text-light: $storm !default; 21 | 22 | // Background Colors 23 | $background-color-body: $air !default; 24 | 25 | // Borders 26 | $border-color: $silver !default; 27 | $border-base: 1px solid $border-color !default; 28 | 29 | // States 30 | $color-success: $emerald; 31 | $color-info: $sapphire; 32 | $color-warning: $gold; 33 | $color-danger: $ruby; 34 | 35 | // States (disabled) 36 | $disabled-color-text: $storm !default; 37 | $disabled-color-background: $silver !default; 38 | 39 | // Focus 40 | $focus-outline-color: transparentize($color-primary, .25) !default; 41 | $focus-outline-width: 1px !default; 42 | $focus-outline: $focus-outline-width solid $focus-outline-color !default; 43 | $focus-outline-offset: 1px !default; 44 | 45 | // Other Sizes 46 | $border-radius-base: 5px !default; 47 | 48 | $spacing-base: 2em !default; 49 | $spacing-small: $spacing-base / 2 !default; 50 | $spacing-large: $spacing-base * 2 !default; 51 | 52 | // Animations 53 | $animation-duration: 250ms !default; 54 | $animation-timing: cubic-bezier(.65, 0, .45, 1) !default; -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/base/_normalize.scss: -------------------------------------------------------------------------------- 1 | // ============================================================================= 2 | // Normalize.scss based on Nicolas Gallagher and Jonathan Neal's 3 | // normalize.css v2.1.3 | MIT License | git.io/normalize 4 | // ============================================================================= 5 | 6 | // ============================================================================= 7 | // Normalize.scss settings 8 | // ============================================================================= 9 | 10 | 11 | // Set to true if you want to add support for IE6 and IE7 12 | // Notice: setting to true might render some elements 13 | // slightly differently than when set to false 14 | $legacy_support_for_ie: false !default; // Used also in Compass 15 | 16 | 17 | // Set the default font family here so you don't have to override it later 18 | $normalized_font_family: sans-serif !default; 19 | 20 | $normalize_headings: true !default; 21 | 22 | $h1_font_size: 2em !default; 23 | $h2_font_size: 1.5em !default; 24 | $h3_font_size: 1.17em !default; 25 | $h4_font_size: 1em !default; 26 | $h5_font_size: 0.83em !default; 27 | $h6_font_size: 0.75em !default; 28 | 29 | $h1_margin: 0.67em 0 !default; 30 | $h2_margin: 0.83em 0 !default; 31 | $h3_margin: 1em 0 !default; 32 | $h4_margin: 1.33em 0 !default; 33 | $h5_margin: 1.67em 0 !default; 34 | $h6_margin: 2.33em 0 !default; 35 | 36 | $background: #fff !default; 37 | $color: #000 !default; 38 | 39 | // ============================================================================= 40 | // HTML5 display definitions 41 | // ============================================================================= 42 | 43 | // Corrects block display not defined in IE6/7/8/9 & FF3 44 | 45 | article, 46 | aside, 47 | details, 48 | figcaption, 49 | figure, 50 | footer, 51 | header, 52 | hgroup, 53 | nav, 54 | section, 55 | summary { 56 | display: block; 57 | } 58 | 59 | // Corrects inline-block display not defined in IE6/7/8/9 & FF3 60 | 61 | audio, 62 | canvas, 63 | video { 64 | display: inline-block; 65 | @if $legacy_support_for_ie { 66 | *display: inline; 67 | *zoom: 1; 68 | } 69 | } 70 | 71 | // 1. Prevents modern browsers from displaying 'audio' without controls 72 | // 2. Remove excess height in iOS5 devices 73 | 74 | audio:not([controls]) { 75 | display: none; // 1 76 | height: 0; // 2 77 | } 78 | 79 | // 80 | // Address `[hidden]` styling not present in IE 8/9. 81 | // Hide the `template` element in IE, Safari, and Firefox < 22. 82 | // 83 | 84 | [hidden], template { 85 | display: none; 86 | } 87 | 88 | // ============================================================================= 89 | // Base 90 | // ============================================================================= 91 | 92 | // 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units 93 | // http://clagnut.com/blog/348/#c790 94 | // 2. Prevents iOS text size adjust after orientation change, without disabling user zoom 95 | // www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ 96 | 97 | html { 98 | @if $legacy_support_for_ie { 99 | font-size: 100%; // 1 100 | } 101 | background: $background; 102 | color: $color; 103 | -webkit-text-size-adjust: 100%; // 2 104 | -ms-text-size-adjust: 100%; // 2 105 | } 106 | 107 | // Addresses font-family inconsistency between 'textarea' and other form elements. 108 | 109 | html, 110 | button, 111 | input, 112 | select, 113 | textarea { 114 | font-family: $normalized_font_family; 115 | } 116 | 117 | // Addresses margins handled incorrectly in IE6/7 118 | 119 | body { 120 | margin: 0; 121 | } 122 | 123 | // ============================================================================= 124 | // Links 125 | // ============================================================================= 126 | 127 | // 1. Remove the gray background color from active links in IE 10. 128 | // 2. Addresses outline displayed oddly in Chrome 129 | // 3. Improves readability when focused and also mouse hovered in all browsers 130 | // people.opera.com/patrickl/experiments/keyboard/test 131 | 132 | a { 133 | // 1 134 | 135 | background: transparent; 136 | 137 | // 2 138 | 139 | &:focus { 140 | outline: thin dotted; 141 | } 142 | 143 | // 3 144 | 145 | &:hover, 146 | &:active { 147 | outline: 0; 148 | } 149 | } 150 | 151 | // ============================================================================= 152 | // Typography 153 | // ============================================================================= 154 | 155 | // Addresses font sizes and margins set differently in IE6/7 156 | // Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 157 | 158 | @if $normalize_headings == true { 159 | h1 { 160 | font-size: $h1_font_size; 161 | margin: $h1_margin; 162 | } 163 | 164 | h2 { 165 | font-size: $h2_font_size; 166 | margin: $h2_margin; 167 | } 168 | 169 | h3 { 170 | font-size: $h3_font_size; 171 | margin: $h3_margin; 172 | } 173 | 174 | h4 { 175 | font-size: $h4_font_size; 176 | margin: $h4_margin; 177 | } 178 | 179 | h5 { 180 | font-size: $h5_font_size; 181 | margin: $h5_margin; 182 | } 183 | 184 | h6 { 185 | font-size: $h6_font_size; 186 | margin: $h6_margin; 187 | } 188 | } 189 | 190 | // Addresses styling not present in IE 8/9, S5, Chrome 191 | 192 | abbr[title] { 193 | border-bottom: 1px dotted; 194 | } 195 | 196 | // Addresses style set to 'bolder' in FF3+, S4/5, Chrome 197 | 198 | b, 199 | strong { 200 | font-weight: bold; 201 | } 202 | 203 | @if $legacy_support_for_ie { 204 | blockquote { 205 | margin: 1em 40px; 206 | } 207 | } 208 | 209 | // Addresses styling not present in S5, Chrome 210 | 211 | dfn { 212 | font-style: italic; 213 | } 214 | 215 | // Addresses styling not present in IE6/7/8/9 216 | 217 | mark { 218 | background: #ff0; 219 | color: #000; 220 | } 221 | 222 | // Addresses margins set differently in IE6/7 223 | @if $legacy_support_for_ie { 224 | p, 225 | pre { 226 | margin: 1em 0; 227 | } 228 | } 229 | 230 | // Corrects font family set oddly in IE6, S4/5, Chrome 231 | // en.wikipedia.org/wiki/User:Davidgothberg/Test59 232 | 233 | code, 234 | kbd, 235 | pre, 236 | samp { 237 | font-family: monospace, serif; 238 | @if $legacy_support_for_ie { 239 | _font-family: 'courier new', monospace; 240 | } 241 | font-size: 1em; 242 | } 243 | 244 | // Improves readability of pre-formatted text in all browsers 245 | 246 | pre { 247 | white-space: pre; 248 | white-space: pre-wrap; 249 | word-wrap: break-word; 250 | } 251 | 252 | // Set consistent quote types. 253 | 254 | q { 255 | quotes: "\201C" "\201D" "\2018" "\2019"; 256 | } 257 | 258 | // 1. Addresses CSS quotes not supported in IE6/7 259 | // 2. Addresses quote property not supported in S4 260 | 261 | // 1 262 | @if $legacy_support_for_ie { 263 | q { 264 | quotes: none; 265 | } 266 | } 267 | 268 | // 2 269 | q { 270 | &:before, 271 | &:after { 272 | content: ''; 273 | content: none; 274 | } 275 | } 276 | 277 | // Address inconsistent and variable font size in all browsers. 278 | 279 | small { 280 | font-size: 80%; 281 | } 282 | 283 | // Prevents sub and sup affecting line-height in all browsers 284 | // gist.github.com/413930 285 | 286 | sub, 287 | sup { 288 | font-size: 75%; 289 | line-height: 0; 290 | position: relative; 291 | vertical-align: baseline; 292 | } 293 | 294 | sup { 295 | top: -0.5em; 296 | } 297 | 298 | sub { 299 | bottom: -0.25em; 300 | } 301 | 302 | // ============================================================================= 303 | // Lists 304 | // ============================================================================= 305 | 306 | // Addresses margins set differently in IE6/7 307 | @if $legacy_support_for_ie { 308 | dl, 309 | menu, 310 | ol, 311 | ul { 312 | margin: 1em 0; 313 | } 314 | } 315 | 316 | @if $legacy_support_for_ie { 317 | dd { 318 | margin: 0 0 0 40px; 319 | } 320 | } 321 | 322 | // Addresses paddings set differently in IE6/7 323 | @if $legacy_support_for_ie { 324 | menu, 325 | ol, 326 | ul { 327 | padding: 0 0 0 40px; 328 | } 329 | } 330 | 331 | // Corrects list images handled incorrectly in IE7 332 | 333 | nav { 334 | ul, 335 | ol { 336 | @if $legacy_support_for_ie { 337 | list-style-image: none; 338 | } 339 | } 340 | } 341 | 342 | // ============================================================================= 343 | // Embedded content 344 | // ============================================================================= 345 | 346 | // 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 347 | // 2. Improves image quality when scaled in IE7 348 | // code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ 349 | 350 | img { 351 | border: 0; // 1 352 | @if $legacy_support_for_ie { 353 | -ms-interpolation-mode: bicubic; // 2 354 | } 355 | } 356 | 357 | // Corrects overflow displayed oddly in IE9 358 | 359 | svg:not(:root) { 360 | overflow: hidden; 361 | } 362 | 363 | // ============================================================================= 364 | // Figures 365 | // ============================================================================= 366 | 367 | // Addresses margin not present in IE6/7/8/9, S5, O11 368 | 369 | figure { 370 | margin: 0; 371 | } 372 | 373 | // ============================================================================= 374 | // Forms 375 | // ============================================================================= 376 | 377 | // Corrects margin displayed oddly in IE6/7 378 | @if $legacy_support_for_ie { 379 | form { 380 | margin: 0; 381 | } 382 | } 383 | 384 | // Define consistent border, margin, and padding 385 | 386 | fieldset { 387 | border: 1px solid #c0c0c0; 388 | margin: 0 2px; 389 | padding: 0.35em 0.625em 0.75em; 390 | } 391 | 392 | // 1. Corrects color not being inherited in IE6/7/8/9 393 | // 2. Remove padding so people aren't caught out if they zero out fieldsets. 394 | // 3. Corrects text not wrapping in FF3 395 | // 4. Corrects alignment displayed oddly in IE6/7 396 | 397 | legend { 398 | border: 0; // 1 399 | padding: 0; // 2 400 | white-space: normal; // 3 401 | @if $legacy_support_for_ie { 402 | *margin-left: -7px; // 4 403 | } 404 | } 405 | 406 | // 1. Correct font family not being inherited in all browsers. 407 | // 2. Corrects font size not being inherited in all browsers 408 | // 3. Addresses margins set differently in IE6/7, FF3+, S5, Chrome 409 | // 4. Improves appearance and consistency in all browsers 410 | 411 | button, 412 | input, 413 | select, 414 | textarea { 415 | font-family: inherit; // 1 416 | font-size: 100%; // 2 417 | margin: 0; // 3 418 | vertical-align: baseline; // 4 419 | @if $legacy_support_for_ie { 420 | *vertical-align: middle; // 4 421 | } 422 | } 423 | 424 | // Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet 425 | 426 | button, input { 427 | line-height: normal; 428 | } 429 | 430 | // Address inconsistent `text-transform` inheritance for `button` and `select`. 431 | // All other form control elements do not inherit `text-transform` values. 432 | // Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. 433 | // Correct `select` style inheritance in Firefox 4+ and Opera. 434 | 435 | button, 436 | select { 437 | text-transform: none; 438 | } 439 | 440 | // 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 441 | // and `video` controls 442 | // 2. Corrects inability to style clickable 'input' types in iOS 443 | // 3. Improves usability and consistency of cursor style between image-type 444 | // 'input' and others 445 | // 4. Removes inner spacing in IE7 without affecting normal text inputs 446 | // Known issue: inner spacing remains in IE6 447 | 448 | button, 449 | html input[type="button"], // 1 450 | input[type="reset"], 451 | input[type="submit"] { 452 | -webkit-appearance: button; // 2 453 | cursor: pointer; // 3 454 | @if $legacy_support_for_ie { 455 | *overflow: visible; // 4 456 | } 457 | } 458 | 459 | // Re-set default cursor for disabled elements 460 | 461 | button[disabled], 462 | input[disabled] { 463 | cursor: default; 464 | } 465 | 466 | // Removes inner padding and border in FF3+ 467 | // www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ 468 | 469 | button, input { 470 | &::-moz-focus-inner { 471 | border: 0; 472 | padding: 0; 473 | } 474 | } 475 | 476 | // 1. Removes default vertical scrollbar in IE6/7/8/9 477 | // 2. Improves readability and alignment in all browsers 478 | 479 | textarea { 480 | overflow: auto; // 1 481 | vertical-align: top; // 2 482 | } 483 | 484 | // ============================================================================= 485 | // Tables 486 | // ============================================================================= 487 | 488 | // Remove most spacing between table cells 489 | 490 | table { 491 | border-collapse: collapse; 492 | border-spacing: 0; 493 | } 494 | 495 | input { 496 | // 1. Addresses appearance set to searchfield in S5, Chrome 497 | // 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) 498 | &[type="search"] { 499 | -webkit-appearance: textfield; // 1 500 | -moz-box-sizing: content-box; 501 | -webkit-box-sizing: content-box; // 2 502 | box-sizing: content-box; 503 | 504 | // Remove inner padding and search cancel button in Safari 5 and Chrome 505 | // on OS X. 506 | &::-webkit-search-cancel-button, 507 | &::-webkit-search-decoration { 508 | -webkit-appearance: none; 509 | } 510 | } 511 | 512 | // 1. Address box sizing set to `content-box` in IE 8/9/10. 513 | // 2. Remove excess padding in IE 8/9/10. 514 | // 3. Removes excess padding in IE7 515 | // Known issue: excess padding remains in IE6 516 | &[type="checkbox"], 517 | &[type="radio"] { 518 | box-sizing: border-box; // 1 519 | padding: 0; // 2 520 | @if $legacy_support_for_ie { 521 | *height: 13px; // 3 522 | *width: 13px; // 3 523 | } 524 | } 525 | } 526 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/base/_typography.scss: -------------------------------------------------------------------------------- 1 | h1, 2 | h2, 3 | h3, 4 | h4, 5 | h5, 6 | h6 { 7 | font-family: $font-family; 8 | line-height: $line-height-heading; 9 | margin: 0 0 $spacing-small; 10 | } 11 | 12 | h1 { 13 | font-size: 3rem; 14 | 15 | @media (min-width: $largephone) { 16 | font-size: 3.6rem; 17 | } 18 | 19 | @media (min-width: $tablet) { 20 | font-size: 4.2rem; 21 | } 22 | } 23 | 24 | h2 { 25 | font-size: 2.4rem; 26 | font-weight: 600; 27 | 28 | @media (min-width: $tablet) { 29 | font-size: 3.4rem; 30 | } 31 | } 32 | 33 | h3 { 34 | font-size: 2rem; 35 | font-weight: 400; 36 | 37 | @media (min-width: $tablet) { 38 | font-size: 2.4rem; 39 | } 40 | } 41 | 42 | h4 { 43 | font-size: 1.8rem; 44 | 45 | @media (min-width: $tablet) { 46 | font-size: 2rem; 47 | } 48 | } 49 | 50 | h5 { 51 | font-size: 1.6rem; 52 | 53 | @media (min-width: $tablet) { 54 | font-size: 1.8rem; 55 | } 56 | } 57 | 58 | p { 59 | margin: 0 0 $spacing-small; 60 | } 61 | 62 | a { 63 | color: $color-primary; 64 | text-decoration: none; 65 | transition: color $animation-duration $animation-timing; 66 | 67 | &:hover { 68 | text-decoration: underline; 69 | } 70 | 71 | &:focus { 72 | outline: none; 73 | text-decoration: none; 74 | } 75 | 76 | &.link-block { 77 | display: block; 78 | white-space: nowrap; 79 | text-overflow: ellipsis; 80 | overflow: hidden; 81 | } 82 | } 83 | 84 | hr { 85 | border-top: 0; 86 | border-right: 0; 87 | border-bottom: $border-base; 88 | border-left: 0; 89 | margin: $spacing-base 0; 90 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_alert.scss: -------------------------------------------------------------------------------- 1 | // Alerts - defaults 2 | 3 | .alert { 4 | display: flex; 5 | align-items: center; 6 | margin-bottom: 1em; 7 | padding: .75em 1em; 8 | color: #fff; 9 | font-size: 1.3rem; 10 | font-weight: 600; 11 | border-radius: $border-radius-base; 12 | 13 | @media (min-width: $largephone) { 14 | font-size: 1.4rem; 15 | } 16 | 17 | > * { 18 | flex: 0 0 auto; 19 | } 20 | 21 | svg { 22 | margin: 0 1.25em 0 .25em; 23 | font-size: 1.4rem; 24 | 25 | @media (min-width: $largephone) { 26 | font-size: 1.6rem; 27 | } 28 | } 29 | 30 | h1, .h1, h2, .h2, h3, .h3 { 31 | margin-bottom: .5em; 32 | } 33 | 34 | a { 35 | font-weight: 700; 36 | 37 | &:hover, 38 | &:focus, 39 | &:active { 40 | text-decoration: underline; 41 | } 42 | } 43 | } 44 | 45 | .alert-success { 46 | background-color: $color-success; 47 | } 48 | 49 | .alert-info { 50 | background-color: $color-info; 51 | } 52 | 53 | .alert-warning { 54 | background-color: $color-warning; 55 | } 56 | 57 | .alert-danger { 58 | background-color: $color-danger; 59 | } 60 | 61 | // Alerts - Text 62 | 63 | .message { 64 | display: block; 65 | font-weight: 600; 66 | text-decoration: none; 67 | } 68 | 69 | .message-success, 70 | .success { 71 | color: $color-success; 72 | } 73 | 74 | .message-info, 75 | .info { 76 | color: $color-info; 77 | } 78 | 79 | .message-warning, 80 | .success { 81 | color: $color-warning; 82 | } 83 | 84 | .message-danger, 85 | .danger { 86 | color: $color-danger; 87 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_animation.scss: -------------------------------------------------------------------------------- 1 | %fill { 2 | position: relative; 3 | overflow: hidden; 4 | 5 | &:hover { 6 | &:before { 7 | transform: translate3d(0, 0, 0); 8 | } 9 | } 10 | 11 | &:before { 12 | position: absolute; 13 | z-index: 0; 14 | content: ''; 15 | top: 0; 16 | width: 100%; 17 | height: 100%; 18 | background-color: $color-primary; 19 | transition: all $animation-duration $animation-timing; 20 | } 21 | } 22 | 23 | .fill-to-left { 24 | @extend %fill; 25 | 26 | &:before { 27 | right: 0; 28 | transform: translate3d(100%, 0, 0); 29 | } 30 | } 31 | 32 | .fill-to-right { 33 | @extend %fill; 34 | 35 | &:before { 36 | left: 0; 37 | transform: translate3d(-100%, 0, 0); 38 | } 39 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_button.scss: -------------------------------------------------------------------------------- 1 | .btn { 2 | cursor: pointer; 3 | appearance: none; 4 | display: inline-block; 5 | margin: .6rem 0; 6 | padding: .6rem 1.2rem; 7 | font-size: 1.3rem; 8 | font-weight: 600; 9 | line-height: 1; 10 | text-align: center; 11 | text-decoration: none; 12 | -webkit-font-smoothing: antialiased; 13 | border: none; 14 | border-radius: $border-radius-base; 15 | user-select: none; 16 | vertical-align: middle; 17 | white-space: nowrap; 18 | transition: all $animation-duration $animation-timing; 19 | 20 | @media (min-width: $largephone) { 21 | padding: 1rem 2rem; 22 | font-size: 1.5rem; 23 | } 24 | 25 | &:hover, 26 | &:focus, 27 | &:active { 28 | color: #fff; 29 | outline: none; 30 | text-decoration: none; 31 | } 32 | 33 | &.disabled, 34 | &:disabled { 35 | pointer-events: none; 36 | cursor: default; 37 | color: $disabled-color-text; 38 | background-color: $disabled-color-background; 39 | } 40 | 41 | i { 42 | transition: none; 43 | } 44 | } 45 | 46 | // Gros boutons 47 | 48 | .btn-lg { 49 | padding: 1.5rem 2rem; 50 | font-size: 1.5rem; 51 | 52 | @media (min-width: $largephone) { 53 | padding: 2rem 4rem; 54 | font-size: 2rem; 55 | } 56 | } 57 | 58 | // Defaults 59 | 60 | .btn-primary { 61 | color: #fff; 62 | background-color: $color-primary; 63 | 64 | &:hover { 65 | background-color: darken($color-primary, 5%); 66 | } 67 | } 68 | 69 | .btn-secondary { 70 | color: $color-primary; 71 | box-shadow: inset 0 0 0 .2rem $color-primary; 72 | 73 | &:hover { 74 | color: #fff; 75 | background-color: darken($color-primary, 5%); 76 | box-shadow: inset 0 0 0 .2rem darken($color-primary, 5%); 77 | } 78 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_icon.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_icon.scss -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_list.scss: -------------------------------------------------------------------------------- 1 | ul, 2 | ol { 3 | list-style-type: none; 4 | margin: 0; 5 | padding: 0; 6 | 7 | &.list-styled { 8 | margin: 0 0 1em; 9 | 10 | li { 11 | position: relative; 12 | padding-left: 2rem; 13 | 14 | &:before { 15 | position: absolute; 16 | content: '-'; 17 | left: 0; 18 | } 19 | } 20 | } 21 | } 22 | 23 | dl { 24 | margin: 0; 25 | } 26 | 27 | dt { 28 | font-weight: 600; 29 | margin: 0; 30 | } 31 | 32 | dd { 33 | margin: 0; 34 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_media.scss: -------------------------------------------------------------------------------- 1 | figure { 2 | margin: 0; 3 | } 4 | 5 | img, 6 | picture { 7 | margin: 0; 8 | max-width: 100%; 9 | } 10 | 11 | .logo-wrapper { 12 | a { 13 | color: $color-text; 14 | text-decoration: none; 15 | 16 | &:before { 17 | display: none; 18 | } 19 | } 20 | } 21 | 22 | .logo { 23 | max-width: 18rem; 24 | 25 | @media (min-width: $largephone) { 26 | max-width: 20rem; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/components/_table.scss: -------------------------------------------------------------------------------- 1 | .table-wrapper { 2 | position: relative; 3 | width: 100%; 4 | max-width: 100%; 5 | margin: $spacing-base 0; 6 | overflow-x: auto; 7 | } 8 | 9 | table { 10 | width: 100%; 11 | text-align: left; 12 | border-collapse: collapse; 13 | } 14 | 15 | thead { 16 | line-height: $line-height-heading; 17 | vertical-align: bottom; 18 | 19 | th, 20 | td { 21 | font-weight: 600; 22 | color: #fff; 23 | background-color: $color-primary; 24 | } 25 | 26 | th { 27 | &:first-of-type { 28 | border-radius: $border-radius-base 0 0 $border-radius-base; 29 | } 30 | &:last-of-type { 31 | border-radius: 0 $border-radius-base $border-radius-base 0; 32 | } 33 | } 34 | } 35 | 36 | tbody { 37 | vertical-align: top; 38 | 39 | tr:nth-of-type(even) { 40 | background-color: #fff; 41 | } 42 | } 43 | 44 | th, 45 | td { 46 | padding: $spacing-small; 47 | white-space: nowrap; 48 | text-overflow: ellipsis; 49 | overflow: hidden; 50 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/layout/_article.scss: -------------------------------------------------------------------------------- 1 | article { 2 | + article { 3 | margin-top: 2.5rem; 4 | 5 | @media (min-width: $tablet) { 6 | margin-top: 5rem; 7 | } 8 | 9 | h2 { 10 | border-top: .2rem solid $border-color; 11 | } 12 | } 13 | 14 | section { 15 | + section { 16 | margin-top: 2em; 17 | } 18 | } 19 | 20 | h2 { 21 | padding-top: 2rem; 22 | 23 | @media (min-width: $tablet) { 24 | padding-top: 4rem; 25 | } 26 | } 27 | 28 | h3, 29 | h4 { 30 | white-space: nowrap; 31 | text-overflow: ellipsis; 32 | overflow: hidden; 33 | } 34 | 35 | h4 { 36 | margin: 0 0 .75em; 37 | } 38 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/layout/_footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | padding: 1em 0; 3 | 4 | @media (min-width: $tablet) { 5 | padding: 2.5rem 0; 6 | } 7 | 8 | p { 9 | margin: 0; 10 | color: $color-text-light; 11 | font-size: 1.2rem; 12 | 13 | @media (min-width: $tablet) { 14 | font-size: 1.4rem; 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/layout/_grid.scss: -------------------------------------------------------------------------------- 1 | // Conteneurs 2 | 3 | .wrapper { 4 | min-height: 100vh; 5 | 6 | @media (min-width: $smalldesktop) { 7 | padding-left: 30rem; 8 | } 9 | } 10 | 11 | .main { 12 | margin-top: 2.5rem; 13 | 14 | @media (min-width: $tablet) { 15 | margin-top: 5rem; 16 | } 17 | } 18 | 19 | .container { 20 | margin: 0 auto; 21 | padding: 0 1.5rem; 22 | 23 | @media (min-width: $tablet) { 24 | width: 85%; 25 | padding: 0; 26 | } 27 | 28 | @media (min-width: $smalldesktop) { 29 | width: 75%; 30 | } 31 | } 32 | 33 | // Alignement 34 | 35 | .center { 36 | margin: 0 auto; 37 | text-align: center; 38 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/layout/_header.scss: -------------------------------------------------------------------------------- 1 | header { 2 | padding: 6.5rem 0 1rem; 3 | color: #fff; 4 | background-color: $color-primary; 5 | 6 | @media (min-width: $smalldesktop) { 7 | padding: 5rem 0; 8 | } 9 | 10 | h1 { 11 | margin: 0; 12 | } 13 | 14 | h2 { 15 | font-weight: 300; 16 | color: rgba(255, 255, 255, .5); 17 | } 18 | 19 | .version-number { 20 | margin: 0; 21 | padding-top: 1rem; 22 | color: #fff; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/layout/_navigation.scss: -------------------------------------------------------------------------------- 1 | .github-corner { 2 | &:hover { 3 | .octo-arm { 4 | animation: none; 5 | 6 | @media (min-width: $largephone) { 7 | animation: octocat-wave 560ms ease-in-out; 8 | } 9 | } 10 | } 11 | 12 | i { 13 | color: $color-primary; 14 | fill: #fff; 15 | 16 | @media (min-width: $largephone) { 17 | width: 6.4rem; 18 | height: 6.4rem; 19 | } 20 | 21 | @media (min-width: $largedesktop) { 22 | width: 8rem; 23 | height: 8rem; 24 | } 25 | } 26 | } 27 | 28 | @keyframes octocat-wave { 29 | 0%, 100% { 30 | transform: rotate(0); 31 | } 32 | 33 | 20%, 60% { 34 | transform: rotate(-25deg); 35 | } 36 | 37 | 40%, 80% { 38 | transform: rotate(10deg); 39 | } 40 | } 41 | 42 | .open-menu { 43 | position: fixed; 44 | top: 1.5rem; 45 | left: 1.5rem; 46 | min-width: 4rem; 47 | min-height: 4rem; 48 | padding: .5rem 1rem; 49 | color: $color-primary; 50 | font-size: 2rem; 51 | text-align: center; 52 | background-color: rgba(255, 255, 255, .75); 53 | border-radius: $border-radius-base; 54 | 55 | @media (min-width: $smalldesktop) { 56 | display: none; 57 | } 58 | 59 | &:hover { 60 | cursor: pointer; 61 | } 62 | } 63 | 64 | .summary { 65 | position: relative; 66 | padding: 0 0 2.5rem; 67 | 68 | @media (min-width: $tablet) { 69 | padding: 0 0 5rem; 70 | } 71 | 72 | h4 { 73 | position: relative; 74 | padding: 0 0 1rem; 75 | color: $color-text-light; 76 | font-weight: 400; 77 | 78 | @media (min-width: $tablet) { 79 | padding: .5em 0 1rem; 80 | } 81 | 82 | &:after { 83 | position: absolute; 84 | content: ''; 85 | bottom: 0; 86 | left: 0; 87 | width: 33.33%; 88 | height: .2rem; 89 | background-color: $color-primary; 90 | 91 | @media (min-width: $tablet) { 92 | width: 25%; 93 | } 94 | } 95 | } 96 | 97 | li { 98 | position: relative; 99 | padding-left: 2rem; 100 | line-height: 2em; 101 | 102 | &:hover { 103 | &:before { 104 | opacity: 1; 105 | } 106 | } 107 | 108 | &:before { 109 | position: absolute; 110 | content: ''; 111 | top: 50%; 112 | left: 0; 113 | width: .5rem; 114 | height: .5rem; 115 | background-color: $color-primary; 116 | border-radius: 5px; 117 | opacity: 0; 118 | transform: translateY(-50%); 119 | } 120 | } 121 | 122 | a { 123 | color: $color-text; 124 | font-size: 2rem; 125 | font-weight: 600; 126 | 127 | &:hover { 128 | text-decoration: none; 129 | } 130 | } 131 | } 132 | 133 | .back-to-top { 134 | position: fixed; 135 | top: 50%; 136 | display: none; 137 | border-radius: $border-radius-base; 138 | color: $color-text-light; 139 | background-color: transparent; 140 | transition: all $animation-duration $animation-timing; 141 | transform: translateY(-50%); 142 | 143 | @media (min-width: $tablet) { 144 | right: .5rem; 145 | width: 5rem; 146 | height: 5rem; 147 | display: block; 148 | padding: .5rem; 149 | font-size: 1.1rem; 150 | } 151 | 152 | @media (min-width: $smalldesktop) { 153 | right: 1rem; 154 | width: 7rem; 155 | height: 7rem; 156 | padding: 1rem; 157 | font-size: 1.3rem; 158 | } 159 | 160 | &:hover { 161 | color: #fff; 162 | background-color: darken($color-primary, 5%); 163 | text-decoration: none; 164 | } 165 | 166 | i { 167 | font-size: 2rem; 168 | 169 | @media (min-width: $smalldesktop) { 170 | font-size: 2.6rem; 171 | } 172 | } 173 | } 174 | 175 | .page-switch { 176 | display: flex; 177 | justify-content: center; 178 | padding-top: 4rem; 179 | 180 | @media (min-width: $tablet) { 181 | padding-top: 8rem; 182 | } 183 | 184 | a { 185 | flex: 1 1 auto; 186 | display: flex; 187 | justify-content: center; 188 | flex-direction: row; 189 | align-items: center; 190 | position: relative; 191 | width: 100%; 192 | padding: 1.5rem 0; 193 | font-size: 2.4rem; 194 | font-weight: 600; 195 | color: $color-text; 196 | transition: all $animation-duration $animation-timing; 197 | 198 | @media (min-width: $tablet) { 199 | padding: 2.5rem 0; 200 | font-size: 2rem; 201 | } 202 | 203 | &:hover { 204 | color: #fff; 205 | text-decoration: none; 206 | } 207 | 208 | &:first-of-type { 209 | i { 210 | margin-right: 1em; 211 | } 212 | } 213 | 214 | &:last-of-type { 215 | i { 216 | margin-left: 1em; 217 | } 218 | } 219 | 220 | i, 221 | span { 222 | position: relative; 223 | z-index: 5; 224 | } 225 | 226 | span { 227 | display: none; 228 | 229 | @media (min-width: $tablet) { 230 | display: inline-block; 231 | } 232 | } 233 | } 234 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/layout/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | position: fixed; 3 | z-index: 999; 4 | top: 0; 5 | bottom: 0; 6 | left: 0; 7 | right: 0; 8 | width: 25rem; 9 | background: #fff; 10 | box-shadow: 0 0 2rem 0 rgba(46, 47, 94, .05); 11 | overflow-x: hidden; 12 | overflow-y: auto; 13 | backface-visibility: hidden; 14 | will-change: transform; 15 | transform: translateX(-30rem); 16 | transition: all $animation-duration $animation-timing; 17 | 18 | @media (min-width: $largephone) { 19 | width: 30rem; 20 | } 21 | 22 | @media (min-width: $smalldesktop) { 23 | transform: translateX(0); 24 | } 25 | 26 | &.open { 27 | transform: translateX(0); 28 | box-shadow: 0 2px 3px 0 rgba(46, 47, 94, .25), 0 0 0 9999px rgba(46, 47, 94, .5); 29 | } 30 | 31 | .sidebar-wrapper { 32 | position: absolute; 33 | top: 0; 34 | bottom: 0; 35 | left: 0; 36 | right: 0; 37 | } 38 | 39 | > div { 40 | position: relative; 41 | min-height: 100%; 42 | padding-bottom: 8rem; 43 | box-sizing: border-box; 44 | 45 | @media (min-width: $largephone) { 46 | padding-bottom: 10rem; 47 | } 48 | } 49 | 50 | .logo-wrapper { 51 | padding: 2rem 2rem 0; 52 | 53 | @media (min-width: $largephone) { 54 | padding: 3rem 2rem 1rem; 55 | } 56 | } 57 | 58 | .version-number { 59 | color: $color-text-light; 60 | } 61 | 62 | .sidebar-nav { 63 | padding-bottom: 4rem; 64 | 65 | a { 66 | position: relative; 67 | padding: .8rem 1.5rem; 68 | display: block; 69 | font-size: 1.3rem; 70 | font-weight: 600; 71 | color: $color-text; 72 | 73 | @media (min-width: $largephone) { 74 | padding: 1rem 2rem; 75 | font-size: 1.4rem; 76 | } 77 | 78 | &:hover { 79 | text-decoration: none; 80 | 81 | &:before { 82 | opacity: .1; 83 | } 84 | } 85 | 86 | &.current { 87 | color: $color-primary; 88 | } 89 | 90 | &:before { 91 | position: absolute; 92 | z-index: 0; 93 | content: ''; 94 | top: 0; 95 | left: 0; 96 | width: 100%; 97 | height: 100%; 98 | background-color: $color-primary; 99 | opacity: 0; 100 | } 101 | } 102 | 103 | i { 104 | margin-left: .25em; 105 | } 106 | } 107 | 108 | .collapsible { 109 | display: none; 110 | 111 | &.collapsed { 112 | display: block; 113 | } 114 | 115 | a { 116 | padding: .8rem 1.5rem .8rem 3rem; 117 | font-weight: 400; 118 | 119 | @media (min-width: $largephone) { 120 | padding: 1rem 2rem 1rem 4rem; 121 | } 122 | } 123 | } 124 | 125 | .theme-selector { 126 | position: absolute; 127 | bottom: 0; 128 | width: 100%; 129 | padding: 2rem; 130 | color: $color-text-light; 131 | font-size: 1.3rem; 132 | 133 | @media (min-width: $largephone) { 134 | padding: 1.5rem; 135 | font-size: 1.4rem; 136 | } 137 | } 138 | 139 | .themes { 140 | display: flex; 141 | align-items: center; 142 | padding-top: 1rem; 143 | } 144 | 145 | .theme { 146 | position: relative; 147 | flex: 1 1 auto; 148 | width: 2.4rem; 149 | max-width: 2.4rem; 150 | height: 2.4rem; 151 | max-height: 2.4rem; 152 | margin-right: 2em; 153 | border-radius: 50%; 154 | cursor: pointer; 155 | 156 | @media (min-width: $largephone) { 157 | width: 2.8rem; 158 | max-width: 2.8rem; 159 | height: 2.8rem; 160 | max-height: 2.8rem; 161 | } 162 | 163 | &.theme-active, 164 | &:hover { 165 | &:before { 166 | opacity: 1; 167 | } 168 | } 169 | 170 | &.theme-active { 171 | cursor: default; 172 | pointer-events: none; 173 | } 174 | 175 | &:before { 176 | position: absolute; 177 | content: ''; 178 | top: 50%; 179 | left: 50%; 180 | width: 3.4rem; 181 | max-width: 3.4rem; 182 | height: 3.4rem; 183 | max-height: 3.4rem; 184 | border: .2rem solid $border-color; 185 | border-radius: 50%; 186 | opacity: 0; 187 | transform: translate3d(-50%, -50%, 0); 188 | 189 | @media (min-width: $largephone) { 190 | width: 4rem; 191 | max-width: 4rem; 192 | height: 4rem; 193 | max-height: 4rem; 194 | } 195 | } 196 | } 197 | 198 | li[class^="theme-"] { 199 | @extend .theme; 200 | } 201 | 202 | .theme-default { 203 | background-color: $mint; 204 | 205 | &.theme-active:before { 206 | border-color: $mint; 207 | } 208 | } 209 | 210 | .theme-blue { 211 | background-color: $dream; 212 | 213 | &.theme-active:before { 214 | border-color: $dream; 215 | } 216 | } 217 | 218 | .theme-night-mode { 219 | background-color: $midnight; 220 | 221 | &.theme-active:before { 222 | border-color: $midnight; 223 | } 224 | } 225 | } 226 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/main.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | // Base 4 | 5 | @import "base/normalize"; 6 | @import "base/color"; 7 | @import "base/config"; 8 | @import "base/base"; 9 | @import "base/typography"; 10 | 11 | // Components 12 | @import "components/alert"; 13 | @import "components/animation"; 14 | @import "components/button"; 15 | @import "components/icon"; 16 | @import "components/list"; 17 | @import "components/media"; 18 | @import "components/table"; 19 | 20 | // Layout 21 | @import "layout/grid"; 22 | @import "layout/header"; 23 | @import "layout/footer"; 24 | @import "layout/sidebar"; 25 | @import "layout/article"; 26 | @import "layout/navigation"; 27 | 28 | // Themes 29 | @import "themes/blue"; 30 | @import "themes/night-mode"; 31 | 32 | // Pages 33 | @import "pages/home"; 34 | 35 | // Vendors 36 | 37 | @import "vendors/prism"; -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/pages/_home.scss: -------------------------------------------------------------------------------- 1 | .list { 2 | width: 100%; 3 | display: flex; 4 | flex-wrap: wrap; 5 | flex-direction: column; 6 | margin: 1em 0; 7 | 8 | @media (min-width: $largephone) { 9 | flex-direction: row; 10 | margin: 3rem 0; 11 | } 12 | 13 | @media (min-width: $largedesktop) { 14 | margin: 10rem 0; 15 | } 16 | 17 | > .list-item { 18 | width: 100%; 19 | display: flex; 20 | 21 | @media (min-width: $largephone) { 22 | width: 50%; 23 | } 24 | 25 | &:hover { 26 | text-decoration: none; 27 | } 28 | 29 | &:nth-of-type(1) { 30 | order: 2; 31 | padding-bottom: 1em; 32 | 33 | @media (min-width: $largephone) { 34 | order: 1; 35 | padding: 0 1em 0 0; 36 | } 37 | 38 | @media (min-width: $largedesktop) { 39 | padding: 0 1em 0 5rem; 40 | } 41 | } 42 | 43 | &:nth-of-type(2) { 44 | order: 1; 45 | padding-bottom: 1em; 46 | 47 | @media (min-width: $largephone) { 48 | order: 2; 49 | padding: 0 0 0 1em; 50 | } 51 | 52 | @media (min-width: $largedesktop) { 53 | order: 2; 54 | padding: 0 5rem 0 1em; 55 | } 56 | } 57 | } 58 | } 59 | 60 | .list-content { 61 | width: 100%; 62 | display: flex; 63 | flex-direction: column; 64 | justify-content: center; 65 | align-items: center; 66 | padding: 2rem; 67 | color: $color-text; 68 | text-align: center; 69 | background-color: #fff; 70 | border-radius: $border-radius-base; 71 | box-shadow: 0 .5rem 2rem 0 rgba(46, 47, 94, .05); 72 | transition: all $animation-duration $animation-timing; 73 | 74 | @media (min-width: $largephone) { 75 | padding: 3rem; 76 | } 77 | 78 | @media (min-width: $largedesktop) { 79 | padding: 5rem; 80 | flex-direction: column; 81 | } 82 | 83 | &:hover { 84 | box-shadow: 0 .5rem 3rem 0 rgba(46, 47, 94, .15); 85 | transform: translateY(-.3rem); 86 | } 87 | 88 | &.list-content-key { 89 | span { 90 | color: $color-primary; 91 | background-color: transparent; 92 | box-shadow: inset 0 0 0 .2rem $color-primary; 93 | } 94 | } 95 | 96 | span { 97 | min-width: 4.8rem; 98 | width: 4.8rem; 99 | height: 4.8rem; 100 | display: flex; 101 | justify-content: center; 102 | align-items: center; 103 | margin-bottom: 1.5rem; 104 | color: #fff; 105 | font-size: 2rem; 106 | background-color: $color-primary; 107 | border-radius: 100%; 108 | transition: all $animation-duration $animation-timing; 109 | 110 | @media (min-width: $largephone) { 111 | min-width: 5.6rem; 112 | width: 5.6rem; 113 | height: 5.6rem; 114 | margin-bottom: 2rem; 115 | font-size: 2.4rem; 116 | } 117 | 118 | @media (min-width: $largedesktop) { 119 | min-width: 6.4rem; 120 | width: 6.4rem; 121 | height: 6.4rem; 122 | margin-bottom: 3rem; 123 | } 124 | } 125 | 126 | h3 { 127 | margin: 0; 128 | font-weight: 600; 129 | 130 | i { 131 | margin-left: .5em; 132 | } 133 | } 134 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/themes/_blue.scss: -------------------------------------------------------------------------------- 1 | .theme-blue { 2 | p > a, 3 | section li > a, 4 | .btn-secondary, 5 | .github-corner svg, 6 | .menu, 7 | .open-menu, 8 | .sidebar a.current, 9 | .list-content.list-content-key span { 10 | color: $dream; 11 | } 12 | 13 | .btn-secondary:hover { 14 | color: #fff; 15 | } 16 | 17 | header, 18 | .btn-primary, 19 | .fill:before, 20 | .fill-to-left:before, 21 | .fill-to-right:before, 22 | .sidebar-nav a:before, 23 | .summary h4:after, 24 | .summary li:before, 25 | thead td, 26 | thead th, 27 | .list-content span, 28 | .page-switch a:before, 29 | .back-to-top:hover, 30 | .back-to-top:focus, 31 | .back-to-top:active { 32 | background-color: $dream; 33 | } 34 | 35 | .btn-primary:hover, 36 | .btn-secondary:hover { 37 | background-color: darken($dream, 5%); 38 | } 39 | 40 | .btn-secondary, 41 | .list-content.list-content-key span { 42 | box-shadow: inset 0 0 0 .2rem $dream; 43 | } 44 | 45 | .btn-secondary:hover { 46 | box-shadow: inset 0 0 0 .2rem darken($dream, 5%); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/themes/_night-mode.scss: -------------------------------------------------------------------------------- 1 | .theme-night-mode { 2 | color: #fff; 3 | background-color: $midnight; 4 | 5 | p > a, 6 | section li > a, 7 | .btn-primary:hover, 8 | .btn-primary:focus, 9 | .btn-primary:active, 10 | .btn-secondary, 11 | .btn-secondary:hover, 12 | .btn-secondary:focus, 13 | .btn-secondary:active, 14 | .summary a, 15 | .summary h4, 16 | article h2, 17 | .page-switch a, 18 | .back-to-top, 19 | footer p { 20 | color: #fff; 21 | } 22 | 23 | .github-corner svg, 24 | .menu, 25 | .open-menu, 26 | .sidebar .sidebar-nav a, 27 | .sidebar a.current, 28 | .list-content h3, 29 | .list-content.list-content-key span { 30 | color: $midnight; 31 | } 32 | 33 | header, 34 | .btn-primary:hover, 35 | .btn-primary:focus, 36 | .btn-primary:active, 37 | .btn-secondary:hover, 38 | .btn-secondary:focus, 39 | .btn-secondary:active, 40 | .fill:before, 41 | .fill-to-left:before, 42 | .fill-to-right:before, 43 | .sidebar-nav a:before, 44 | thead td, 45 | thead th, 46 | tbody tr:nth-of-type(even), 47 | .list-content span, 48 | .page-switch a:before, 49 | .back-to-top:hover, 50 | .back-to-top:focus, 51 | .back-to-top:active { 52 | background-color: darken($midnight, 5%); 53 | } 54 | 55 | thead tr { 56 | background-color: darken($midnight, 10%); 57 | } 58 | 59 | .sidebar, 60 | .summary h4:after, 61 | .summary li:before { 62 | background-color: #fff; 63 | } 64 | 65 | .btn-primary { 66 | color: $midnight; 67 | background-color: #fff; 68 | } 69 | 70 | .btn-secondary { 71 | box-shadow: inset 0 0 0 .2rem #fff; 72 | } 73 | 74 | .btn-secondary:hover { 75 | box-shadow: inset 0 0 0 .2rem darken($midnight, 5%); 76 | } 77 | 78 | .list-content.list-content-key span { 79 | box-shadow: inset 0 0 0 .2rem $midnight; 80 | } 81 | 82 | .sidebar .sidebar-nav a.current { 83 | font-weight: 700; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/css/v3/vendors/_prism.scss: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.13.0 2 | http://prismjs.com/download.html#themes=prism&languages=markup+clike+json */ 3 | /** 4 | * prism.js default theme for JavaScript, CSS and HTML 5 | * Based on dabblet (http://dabblet.com) 6 | * @author Lea Verou 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | color: $color-text; 12 | text-shadow: 0 1px white; 13 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | word-wrap: normal; 19 | line-height: 1.5; 20 | background: none; 21 | border-radius: $border-radius-base; 22 | 23 | -moz-tab-size: 4; 24 | -o-tab-size: 4; 25 | tab-size: 4; 26 | 27 | -webkit-hyphens: none; 28 | -moz-hyphens: none; 29 | -ms-hyphens: none; 30 | hyphens: none; 31 | } 32 | 33 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 34 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 35 | text-shadow: none; 36 | background: #b3d4fc; 37 | } 38 | 39 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 40 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 41 | text-shadow: none; 42 | background: #b3d4fc; 43 | } 44 | 45 | @media print { 46 | code[class*="language-"], 47 | pre[class*="language-"] { 48 | text-shadow: none; 49 | } 50 | } 51 | 52 | /* Code blocks */ 53 | pre[class*="language-"] { 54 | padding: 0 1.5em; 55 | margin-bottom: 1em; 56 | overflow: auto; 57 | } 58 | 59 | :not(pre) > code[class*="language-"], 60 | pre[class*="language-"] { 61 | background: #fff; 62 | box-shadow: 0 .5rem 2rem 0 rgba(46, 47, 94, .05); 63 | } 64 | 65 | /* Inline code */ 66 | :not(pre) > code[class*="language-"] { 67 | padding: .1em; 68 | border-radius: .3em; 69 | white-space: normal; 70 | } 71 | 72 | .token.comment, 73 | .token.prolog, 74 | .token.doctype, 75 | .token.cdata { 76 | color: slategray; 77 | } 78 | 79 | .token.punctuation { 80 | color: #999; 81 | } 82 | 83 | .namespace { 84 | opacity: .7; 85 | } 86 | 87 | .token.property, 88 | .token.tag, 89 | .token.boolean, 90 | .token.number, 91 | .token.constant, 92 | .token.symbol, 93 | .token.deleted { 94 | color: #905; 95 | } 96 | 97 | .token.selector, 98 | .token.attr-name, 99 | .token.string, 100 | .token.char, 101 | .token.builtin, 102 | .token.inserted { 103 | color: #690; 104 | } 105 | 106 | .token.operator, 107 | .token.entity, 108 | .token.url, 109 | .language-css .token.string, 110 | .style .token.string { 111 | color: #9a6e3a; 112 | background: hsla(0, 0%, 100%, .5); 113 | } 114 | 115 | .token.atrule, 116 | .token.attr-value, 117 | .token.keyword { 118 | color: #07a; 119 | } 120 | 121 | .token.function, 122 | .token.class-name { 123 | color: #DD4A68; 124 | } 125 | 126 | .token.regex, 127 | .token.important, 128 | .token.variable { 129 | color: #e90; 130 | } 131 | 132 | .token.important, 133 | .token.bold { 134 | font-weight: bold; 135 | } 136 | .token.italic { 137 | font-style: italic; 138 | } 139 | 140 | .token.entity { 141 | cursor: help; 142 | } 143 | 144 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/ButterflyEffect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/ButterflyEffect.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-gears.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-gears.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-help.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-search.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-secure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/api-secure.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/coeur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/coeur.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-carenews.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-carenews.jpg -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-humano-games.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-humano-games.jpg -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-pages-jaunes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-pages-jaunes.jpg -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-sfr-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-sfr-large.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-wesignit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/logo-wesignit.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v1/téléchargement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v1/téléchargement.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-bfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-bfm.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-france-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-france-2.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-france-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-france-info.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-la-tribune.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-la-tribune.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-le-monde.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-le-monde.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-les-echos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-footer-presse-les-echos.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-lemonway-grey.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 45 | 46 | 47 | 48 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 66 | 67 | 68 | 69 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 87 | 88 | 89 | 90 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 107 | 108 | 109 | 110 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 127 | 128 | 129 | 130 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 147 | 148 | 149 | 150 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 173 | 174 | 175 | 176 | 177 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-logo-gris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-logo-gris.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HelloAsso/HelloAsso.Api.Doc/6cb936cd33f0ab7beb8b6cbb15abbc446f198e48/HelloAsso.Api.Doc/wwwroot/assets/images/v2/helloasso-logo.png -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/images/v3/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/js/v3/date.js: -------------------------------------------------------------------------------- 1 | function dynamicDate() { 2 | var date = new Date(); 3 | var pad = '00'; 4 | 5 | var year = date.getFullYear(); 6 | var month = date.getMonth(); 7 | var monthIso = (date.getMonth() + 1) + ''; 8 | monthIso = pad.substring(0, pad.length - monthIso.length) + monthIso; 9 | var months = new Array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'); 10 | var day = date.getDate(); 11 | if (day == 1) { 12 | day = day + 'er'; 13 | } 14 | var dayIso = date.getDate() + ''; 15 | dayIso = pad.substring(0, pad.length - dayIso.length) + dayIso; 16 | var hour = date.getHours() + ''; 17 | hour = pad.substring(0, pad.length - hour.length) + hour; 18 | var minutes = date.getMinutes() + ''; 19 | minutes = pad.substring(0, pad.length - minutes.length) + minutes; 20 | var seconds = date.getSeconds() + ''; 21 | seconds = pad.substring(0, pad.length - seconds.length) + seconds; 22 | 23 | var fullDate = day + ' ' + months[month] + ' ' + year + ' à ' + hour + 'h' + minutes; 24 | document.querySelector('.full-date').innerHTML = fullDate; 25 | 26 | var apiDate = year + '-' + monthIso + '-' + dayIso + 'T' + hour + ':' + minutes + ':' + seconds; 27 | document.querySelector('.api-date').innerHTML = apiDate; 28 | } 29 | 30 | function initDate() { 31 | dynamicDate(); 32 | }; 33 | 34 | window.onload = initDate(); 35 | window.setInterval(function () { 36 | initDate(); 37 | }, 1000); -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/js/v3/date.min.js: -------------------------------------------------------------------------------- 1 | function dynamicDate(){var e=new Date,t="00",n=e.getFullYear(),r=e.getMonth(),a=e.getMonth()+1+"";a=t.substring(0,t.length-a.length)+a;var i=new Array("janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"),g=e.getDate();1==g&&(g+="er");var l=e.getDate()+"";l=t.substring(0,t.length-l.length)+l;var o=e.getHours()+"";o=t.substring(0,t.length-o.length)+o;var u=e.getMinutes()+"";u=t.substring(0,t.length-u.length)+u;var s=e.getSeconds()+"";s=t.substring(0,t.length-s.length)+s;var h=g+" "+i[r]+" "+n+" à "+o+"h"+u;document.querySelector(".full-date").innerHTML=h;var v=n+"-"+a+"-"+l+"T"+o+":"+u+":"+s;document.querySelector(".api-date").innerHTML=v}function initDate(){dynamicDate()}window.onload=initDate(),window.setInterval(function(){initDate()},1e3); -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/js/v3/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | (function Api() { 4 | 5 | // Noms des pages à afficher 6 | var pageNames = { 7 | "index": "Introduction", 8 | "description": "Description de l'API HelloAsso", 9 | "format": "Format des échanges", 10 | "responses": "Types des réponses", 11 | "resources": "Ressources", 12 | "notifications": "Notifications", 13 | "public": "API publique" 14 | } 15 | 16 | // Applique le nom de la page courante au header 17 | var refreshPageName = function() { 18 | var url = document.location.pathname; 19 | var urlSplit = url.substring(url.lastIndexOf('/') + 1); 20 | var pageTitle = document.querySelector('[data-content="title"]'); 21 | 22 | if (pageTitle) { 23 | pageTitle.innerHTML = pageNames[urlSplit]; 24 | } 25 | } 26 | 27 | // Surligne la page courante dans la sidebar 28 | var highlightCurrentPage = function() { 29 | var url = document.location.pathname; 30 | var urlSplit = url.substring(url.lastIndexOf('/') + 1); 31 | var pageLinks = document.querySelectorAll('[data-link="' + urlSplit + '"]'); 32 | 33 | // Déplie le submenu au clic sur un lien de la sidebar 34 | for (var i = 0; i < pageLinks.length; i++) { 35 | var pageLink = pageLinks[i]; 36 | var currentLink = pageLink.querySelector('a'); 37 | var currentSubmenu = pageLink.querySelector('.collapsible'); 38 | 39 | window.api.addClass(currentLink, 'current'); 40 | window.api.addClass(currentSubmenu, 'collapsed'); 41 | } 42 | } 43 | 44 | this.addClass = function(element, className) { 45 | if (element == null) { 46 | return; 47 | } 48 | 49 | if (element.getAttribute('class') == null) { 50 | element.setAttribute('class', className); 51 | } else { 52 | var classes = element.getAttribute('class').split(" "); 53 | 54 | if (classes.indexOf(className) == -1) { 55 | element.setAttribute('class', element.getAttribute('class') + " " + className); 56 | } 57 | } 58 | } 59 | 60 | // Ajoute une classe sur un élément cible 61 | this.addClassWithAttribute = function(el) { 62 | var currentAddClass = el.getAttribute('data-addclass'); 63 | var currentAddClassTarget = el.getAttribute('data-target'); 64 | var target = document.querySelector(currentAddClassTarget); 65 | 66 | window.api.addClass(target, currentAddClass); 67 | } 68 | 69 | this.removeClass = function(element, className) { 70 | if (element == null) { 71 | return; 72 | } 73 | 74 | if (element.getAttribute('class') != null) { 75 | var classLeft = element.getAttribute('class').replace(className, ''); 76 | element.setAttribute('class', classLeft); 77 | } 78 | } 79 | 80 | // Alterner un état sur un élément via une classe 81 | this.toggleClass = function(element, className) { 82 | if (element == null) { 83 | return; 84 | } 85 | 86 | var classes = element.getAttribute('class').split(" "); 87 | 88 | if (classes.indexOf(className) == -1) { 89 | window.api.addClass(element, className); 90 | } else { 91 | window.api.removeClass(element, className); 92 | } 93 | } 94 | 95 | // Tester si le parent ou son enfant comporte une classe 96 | this.childOrParentHasClass = function(child, className) { 97 | var noClass = child.getAttribute('class') == null; 98 | var classes = []; 99 | 100 | if (!noClass) { 101 | classes = child.getAttribute('class').split(" "); 102 | } 103 | 104 | if (classes.indexOf(className) == -1 || noClass) { 105 | var parent = child.parentNode; 106 | while (parent != null && parent != document) { 107 | var noClassParent = parent.getAttribute('class') == null; 108 | var parentClasses = []; 109 | 110 | if (!noClassParent) { 111 | parentClasses = parent.getAttribute('class').split(" "); 112 | } 113 | 114 | if (parentClasses.indexOf(className) == -1 || noClassParent) { 115 | parent = parent.parentNode; 116 | } else { 117 | return true; 118 | } 119 | } 120 | return false; 121 | } else { 122 | return true; 123 | } 124 | } 125 | 126 | // Création du cookie ThemeSaver (enregistrement et application du theme au chargement de la page) 127 | this.setCookie = function(cname, cvalue, exdays) { 128 | var d = new Date(); 129 | d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 130 | 131 | var expires = "expires="+d.toUTCString(); 132 | document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 133 | } 134 | 135 | // Smooth Scroll 136 | this.scrollTo = function(element, to, duration) { 137 | if (duration < 0) return; 138 | var difference = to - element.scrollTop; 139 | var perTick = difference / duration * 10; 140 | 141 | setTimeout(function () { 142 | element.scrollTop = element.scrollTop + perTick; 143 | if (element.scrollTop == to) return; 144 | window.api.scrollTo(element, to, duration - 10); 145 | }, 10); 146 | } 147 | 148 | this.scrollToAnchor = function (link) { 149 | var anchor = link.href.split('#')[1]; 150 | var target = document.getElementById(anchor); 151 | 152 | // Hack IE10 pour savoir si on utilise body ou documentElement 153 | var oldScroll = document.documentElement.scrollTop; 154 | document.documentElement.scrollTop = oldScroll + 10; 155 | var newScroll = document.documentElement.scrollTop; 156 | document.documentElement.scrollTop = oldScroll; 157 | 158 | var content = document.body; 159 | if (oldScroll != newScroll) { 160 | content = document.documentElement; 161 | } 162 | 163 | if (window.innerWidth > 992) { 164 | setTimeout(window.api.scrollTo(content, target.offsetTop, 500), 250); 165 | } else { 166 | setTimeout(window.api.scrollTo(content, target.offsetTop - 55, 500), 250); 167 | } 168 | }; 169 | 170 | this.init = function() { 171 | refreshPageName(); 172 | highlightCurrentPage(); 173 | 174 | // Application ciblée de la fonction addClass 175 | var elements = document.querySelectorAll('[data-addclass]'); 176 | for (var elementsIdx = 0; elementsIdx < elements.length; elementsIdx++) { 177 | var item = elements[elementsIdx]; 178 | 179 | item.addEventListener('click', function(event) { 180 | var current = event.currentTarget; 181 | window.api.addClassWithAttribute(current); 182 | }); 183 | } 184 | 185 | // Sélection du theme 186 | var themeSelector = document.querySelectorAll('[data-theme]'); 187 | for (var i = 0; i < themeSelector.length; i++) { 188 | 189 | themeSelector[i].addEventListener('click', function(e) { 190 | var body = document.querySelector('body'); 191 | var currentTheme = e.currentTarget.getAttribute('data-theme'); 192 | 193 | window.api.setCookie('themeSaver', currentTheme, 365); 194 | 195 | body.setAttribute('class', ''); 196 | window.api.addClass(body, currentTheme); 197 | 198 | var themeSelectorToSelect = document.querySelectorAll('[data-theme]'); 199 | for (var j = 0; j < themeSelectorToSelect.length; j++) { 200 | if (themeSelectorToSelect[j] != e.currentTarget) { 201 | window.api.removeClass(themeSelectorToSelect[j], 'theme-active'); 202 | } else { 203 | window.api.addClass(e.currentTarget, 'theme-active'); 204 | } 205 | } 206 | }); 207 | } 208 | 209 | // Smooth scroll 210 | var links = document.querySelectorAll('a'); 211 | for (var i = 0; i < links.length; i++) { 212 | if (links[i].href.indexOf('#') > -1) { 213 | var anchor = links[i].href.split('#')[1]; 214 | if (anchor.trim() != '' && document.querySelector('#' + anchor)) { 215 | links[i].addEventListener("click", function (e) { 216 | e.preventDefault(); 217 | window.api.scrollToAnchor(e.currentTarget); 218 | }); 219 | } 220 | } 221 | } 222 | 223 | // Menu 224 | var navLinks = document.querySelectorAll('.sidebar-nav li'); 225 | for (var i = 0; i < navLinks.length; i++) { 226 | var navLink = navLinks[i]; 227 | 228 | navLink.addEventListener('click', function(event) { 229 | var current = event.currentTarget; 230 | var submenu = current.querySelector('.collapsible'); 231 | var navLinksToCollapse = document.querySelectorAll('.sidebar-nav .collapsible'); 232 | 233 | for (var j = 0; j < navLinksToCollapse.length; j++) { 234 | if (navLinksToCollapse[j] != submenu) { 235 | window.api.removeClass(navLinksToCollapse[j], 'collapsed'); 236 | } 237 | } 238 | 239 | window.api.toggleClass(submenu, 'collapsed'); 240 | }); 241 | } 242 | 243 | // Ouverture/fermeture du menu (responsive) 244 | document.addEventListener('click', function(event) { 245 | // Sidebar 246 | var sidebar = document.querySelector('.sidebar'); 247 | 248 | if (!window.api.childOrParentHasClass(event.target, 'sidebar') && !window.api.childOrParentHasClass(event.target, 'open-menu')) { 249 | window.api.removeClass(sidebar, 'open'); 250 | } 251 | }); 252 | } 253 | 254 | }).call(window.api = window.api || {}); 255 | 256 | document.addEventListener('DOMContentLoaded', function() { 257 | window.api.init(); 258 | }); -------------------------------------------------------------------------------- /HelloAsso.Api.Doc/wwwroot/assets/js/v3/main.min.js: -------------------------------------------------------------------------------- 1 | "use strict";(function(){var d={index:"Introduction",description:"Description de l'API HelloAsso",format:"Format des échanges",responses:"Types des réponses",resources:"Ressources",notifications:"Notifications",public:"API publique"};this.addClass=function(e,t){null!=e&&(null==e.getAttribute("class")?e.setAttribute("class",t):-1==e.getAttribute("class").split(" ").indexOf(t)&&e.setAttribute("class",e.getAttribute("class")+" "+t))},this.addClassWithAttribute=function(e){var t=e.getAttribute("data-addclass"),n=e.getAttribute("data-target"),o=document.querySelector(n);window.api.addClass(o,t)},this.removeClass=function(e,t){if(null!=e&&null!=e.getAttribute("class")){var n=e.getAttribute("class").replace(t,"");e.setAttribute("class",n)}},this.toggleClass=function(e,t){null!=e&&(-1==e.getAttribute("class").split(" ").indexOf(t)?window.api.addClass(e,t):window.api.removeClass(e,t))},this.childOrParentHasClass=function(e,t){var n=null==e.getAttribute("class"),o=[];if(n||(o=e.getAttribute("class").split(" ")),-1==o.indexOf(t)||n){for(var r=e.parentNode;null!=r&&r!=document;){var i=null==r.getAttribute("class"),a=[];if(i||(a=r.getAttribute("class").split(" ")),-1!=a.indexOf(t)&&!i)return!0;r=r.parentNode}return!1}return!0},this.setCookie=function(e,t,n){var o=new Date;o.setTime(o.getTime()+24*n*60*60*1e3);var r="expires="+o.toUTCString();document.cookie=e+"="+t+";"+r+";path=/"},this.scrollTo=function(e,t,n){if(!(n<0)){var o=(t-e.scrollTop)/n*10;setTimeout(function(){e.scrollTop=e.scrollTop+o,e.scrollTop!=t&&window.api.scrollTo(e,t,n-10)},10)}},this.scrollToAnchor=function(e){var t=e.href.split("#")[1],n=document.getElementById(t),o=document.documentElement.scrollTop;document.documentElement.scrollTop=o+10;var r=document.documentElement.scrollTop;document.documentElement.scrollTop=o;var i=document.body;o!=r&&(i=document.documentElement),992 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {867CB265-545C-4B18-93DC-40C4AFA18AD3} 8 | Exe 9 | HelloAsso.Api.Samples 10 | HelloAsso.Api.Samples 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/curl/actions.sh: -------------------------------------------------------------------------------- 1 | # You need to set MyBasicToken to your token base64(id:key) 2 | 3 | # list actions 4 | curl -X GET \ 5 | https://api.helloasso.com/v3/actions.json \ 6 | -H 'Authorization: Basic MyBasicToken' \ 7 | 8 | # list organization's actions 9 | curl -X GET \ 10 | https://api.helloasso.com/v3/organizations/000000249671/actions.json \ 11 | -H 'Authorization: Basic MyBasicToken' \ 12 | 13 | # list campaign's actions 14 | curl -X GET \ 15 | https://api.helloasso.com/v3/organizations/000000249671/campaigns/000000026934/actions.json \ 16 | -H 'Authorization: Basic MyBasicToken' \ 17 | 18 | # list donation actions 19 | curl -X GET \ 20 | https://api.helloasso.com/v3/actions.json?type=DONATION \ 21 | -H 'Authorization: Basic MyBasicToken' \ 22 | 23 | # list actions created after 01/01/2018 and before 31/01/2018 24 | curl -X GET \ 25 | https://api.helloasso.com/v3/actions.json?from=2018-01-01T00:00:00&to=2018-01-31T00:00:00 \ 26 | -H 'Authorization: Basic MyBasicToken' \ 27 | 28 | # get action detail 29 | curl -X GET \ 30 | https://api.helloasso.com/v3/actions/000034043170.json \ 31 | -H 'Authorization: Basic MyBasicToken' -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/curl/campaigns.sh: -------------------------------------------------------------------------------- 1 | # You need to set MyBasicToken to your token base64(id:key) 2 | 3 | # list campaigns 4 | curl -X GET \ 5 | https://api.helloasso.com/v3/campaigns.json \ 6 | -H 'Authorization: Basic MyBasicToken' 7 | 8 | # list organization's campaigns 9 | curl -X GET \ 10 | https://api.helloasso.com/v3/organizations/000000249671/campaigns.json \ 11 | -H 'Authorization: Basic MyBasicToken' 12 | 13 | # list event campaigns 14 | curl -X GET \ 15 | https://api.helloasso.com/v3/campaigns.json?type=EVENT \ 16 | -H 'Authorization: Basic MyBasicToken' 17 | 18 | # list event created after 01/01/2018 and before 01/02/2018, updated after 15/01/2018 and before 30/01/2018 19 | curl -X GET \ 20 | https://api.helloasso.com/v3/campaigns.json?type=EVENT&createdFrom=2018-01-01T00:00:00&createdTo=2018-02-01T00:00:00&updatedFrom=2018-01-15T00:00:00&updatedTo=2018-01-30T00:00:00 \ 21 | -H 'Authorization: Basic MyBasicToken' 22 | 23 | # get campaign detail 24 | curl -X GET \ 25 | https://api.helloasso.com/v3/campaigns/000000329511.json \ 26 | -H 'Authorization: Basic MyBasicToken' -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/curl/organizations.sh: -------------------------------------------------------------------------------- 1 | # You need to set MyBasicToken to your token base64(id:key) 2 | 3 | # list organizations 4 | curl -X GET \ 5 | https://api.helloasso.com/v3/organizations.json \ 6 | -H 'Authorization: Basic MyBasicToken' 7 | 8 | # get organizations detail 9 | curl -X GET \ 10 | https://api.helloasso.com/v3/organizations/000000249671.json \ 11 | -H 'Authorization: Basic MyBasicToken' -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/curl/payments.sh: -------------------------------------------------------------------------------- 1 | # You need to set MyBasicToken to your token base64(id:key) 2 | 3 | # list payments 4 | curl -X GET \ 5 | https://api.helloasso.com/v3/payments.json \ 6 | -H 'Authorization: Basic MyBasicToken' \ 7 | 8 | # list organization's payments 9 | curl -X GET \ 10 | https://api.helloasso.com/v3/organizations/000000249671/payments.json \ 11 | -H 'Authorization: Basic MyBasicToken' \ 12 | 13 | # list campaign's payments 14 | curl -X GET \ 15 | https://api.helloasso.com/v3/organizations/000000249671/campaigns/000000026934/payments.json \ 16 | -H 'Authorization: Basic MyBasicToken' \ 17 | 18 | # list credit payments 19 | curl -X GET \ 20 | https://api.helloasso.com/v3/payments.json?type=CREDIT \ 21 | -H 'Authorization: Basic MyBasicToken' \ 22 | 23 | # list payments created after 01/01/2018 and before 31/01/2018 24 | curl -X GET \ 25 | https://api.helloasso.com/v3/payments.json?from=2018-01-01T00:00:00&to=2018-01-31T00:00:00 \ 26 | -H 'Authorization: Basic MyBasicToken' \ 27 | 28 | # get payment detail 29 | curl -X GET \ 30 | https://api.helloasso.com/v3/payments/000017607661.json \ 31 | -H 'Authorization: Basic MyBasicToken' -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/go/actions.go: -------------------------------------------------------------------------------- 1 | package actions 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "io/ioutil" 7 | "encoding/base64" 8 | ) 9 | 10 | // You need to set id and key 11 | id := "" 12 | key := "" 13 | data := []byte(id + ":" + key) 14 | token := base64.StdEncoding.EncodeToString(data) 15 | 16 | // list actions 17 | func ListActions() { 18 | 19 | url := "https://api.helloasso.com/v3/actions.json" 20 | 21 | req, _ := http.NewRequest("GET", url, nil) 22 | 23 | req.Header.Add("Authorization", "Basic " + token) 24 | 25 | res, _ := http.DefaultClient.Do(req) 26 | 27 | defer res.Body.Close() 28 | body, _ := ioutil.ReadAll(res.Body) 29 | 30 | fmt.Println(res) 31 | fmt.Println(string(body)) 32 | 33 | } 34 | 35 | // list organization's actions 36 | func ListOrganizationActions() { 37 | 38 | url := "https://api.helloasso.com/v3/organizations/000000249671/actions.json" 39 | 40 | req, _ := http.NewRequest("GET", url, nil) 41 | 42 | req.Header.Add("Authorization", "Basic " + token) 43 | 44 | res, _ := http.DefaultClient.Do(req) 45 | 46 | defer res.Body.Close() 47 | body, _ := ioutil.ReadAll(res.Body) 48 | 49 | fmt.Println(res) 50 | fmt.Println(string(body)) 51 | 52 | } 53 | 54 | // list campaign's actions 55 | func ListCampaignActions() { 56 | 57 | url := "https://api.helloasso.com/v3/organizations/000000249671/campaigns/000000026934/actions.json" 58 | 59 | req, _ := http.NewRequest("GET", url, nil) 60 | 61 | req.Header.Add("Authorization", "Basic " + token) 62 | 63 | res, _ := http.DefaultClient.Do(req) 64 | 65 | defer res.Body.Close() 66 | body, _ := ioutil.ReadAll(res.Body) 67 | 68 | fmt.Println(res) 69 | fmt.Println(string(body)) 70 | 71 | } 72 | 73 | // list donation actions 74 | func LisDonationActions() { 75 | 76 | url := "https://api.helloasso.com/v3/actions.json?type=DONATION" 77 | 78 | req, _ := http.NewRequest("GET", url, nil) 79 | 80 | req.Header.Add("Authorization", "Basic " + token) 81 | 82 | res, _ := http.DefaultClient.Do(req) 83 | 84 | defer res.Body.Close() 85 | body, _ := ioutil.ReadAll(res.Body) 86 | 87 | fmt.Println(res) 88 | fmt.Println(string(body)) 89 | 90 | } 91 | 92 | // list actions created after 01/01/2018 and before 31/01/2018 93 | func ListActionByDate() { 94 | 95 | url := "https://api.helloasso.com/v3/actions.json?from=2018-01-01T00:00:00&to=2018-01-31T00:00:00" 96 | 97 | req, _ := http.NewRequest("GET", url, nil) 98 | 99 | req.Header.Add("Authorization", "Basic " + token) 100 | 101 | res, _ := http.DefaultClient.Do(req) 102 | 103 | defer res.Body.Close() 104 | body, _ := ioutil.ReadAll(res.Body) 105 | 106 | fmt.Println(res) 107 | fmt.Println(string(body)) 108 | 109 | } 110 | 111 | // get action detail 112 | func GetActionDetail() { 113 | 114 | url := "https://api.helloasso.com/v3/actions/000034043170.json" 115 | 116 | req, _ := http.NewRequest("GET", url, nil) 117 | 118 | req.Header.Add("Authorization", "Basic " + token) 119 | 120 | res, _ := http.DefaultClient.Do(req) 121 | 122 | defer res.Body.Close() 123 | body, _ := ioutil.ReadAll(res.Body) 124 | 125 | fmt.Println(res) 126 | fmt.Println(string(body)) 127 | 128 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/go/campaigns.go: -------------------------------------------------------------------------------- 1 | package campaigns 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "io/ioutil" 7 | "encoding/base64" 8 | ) 9 | 10 | // You need to set id and key 11 | id := "" 12 | key := "" 13 | data := []byte(id + ":" + key) 14 | token := base64.StdEncoding.EncodeToString(data) 15 | 16 | // list campaigns 17 | func ListCampaigns() { 18 | 19 | url := "https://api.helloasso.com/v3/campaigns.json" 20 | 21 | req, _ := http.NewRequest("GET", url, nil) 22 | 23 | req.Header.Add("Authorization", "Basic " + token) 24 | 25 | res, _ := http.DefaultClient.Do(req) 26 | 27 | defer res.Body.Close() 28 | body, _ := ioutil.ReadAll(res.Body) 29 | 30 | fmt.Println(res) 31 | fmt.Println(string(body)) 32 | 33 | } 34 | 35 | // list organization's campaigns 36 | func ListOrganizationCampaigns() { 37 | 38 | url := "https://api.helloasso.com/v3/organizations/000000249671/campaigns.json" 39 | 40 | req, _ := http.NewRequest("GET", url, nil) 41 | 42 | req.Header.Add("Authorization", "Basic " + token) 43 | 44 | res, _ := http.DefaultClient.Do(req) 45 | 46 | defer res.Body.Close() 47 | body, _ := ioutil.ReadAll(res.Body) 48 | 49 | fmt.Println(res) 50 | fmt.Println(string(body)) 51 | 52 | } 53 | 54 | // list event campaigns 55 | func ListEventCampaigns() { 56 | 57 | url := "https://api.helloasso.com/v3/campaigns.json?type=EVENT" 58 | 59 | req, _ := http.NewRequest("GET", url, nil) 60 | 61 | req.Header.Add("Authorization", "Basic " + token) 62 | 63 | res, _ := http.DefaultClient.Do(req) 64 | 65 | defer res.Body.Close() 66 | body, _ := ioutil.ReadAll(res.Body) 67 | 68 | fmt.Println(res) 69 | fmt.Println(string(body)) 70 | 71 | } 72 | 73 | // list event created after 01/01/2018 and before 01/02/2018, updated after 15/01/2018 and before 30/01/2018 74 | func ListEventByDate() { 75 | 76 | url := "https://api.helloasso.com/v3/campaigns.json?type=EVENT&createdFrom=2018-01-01T00:00:00&createdTo=2018-02-01T00:00:00&updatedFrom=2018-01-15T00:00:00&updatedTo=2018-01-30T00:00:00" 77 | 78 | req, _ := http.NewRequest("GET", url, nil) 79 | 80 | req.Header.Add("Authorization", "Basic " + token) 81 | 82 | res, _ := http.DefaultClient.Do(req) 83 | 84 | defer res.Body.Close() 85 | body, _ := ioutil.ReadAll(res.Body) 86 | 87 | fmt.Println(res) 88 | fmt.Println(string(body)) 89 | 90 | } 91 | 92 | // get campaign detail 93 | func GetCampaignDetail() { 94 | 95 | url := "https://api.helloasso.com/v3/campaigns/000000329511.json" 96 | 97 | req, _ := http.NewRequest("GET", url, nil) 98 | 99 | req.Header.Add("Authorization", "Basic " + token) 100 | 101 | res, _ := http.DefaultClient.Do(req) 102 | 103 | defer res.Body.Close() 104 | body, _ := ioutil.ReadAll(res.Body) 105 | 106 | fmt.Println(res) 107 | fmt.Println(string(body)) 108 | 109 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/go/organizations.go: -------------------------------------------------------------------------------- 1 | package organizations 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "io/ioutil" 7 | "encoding/base64" 8 | ) 9 | 10 | // You need to set id and key 11 | id := "" 12 | key := "" 13 | data := []byte(id + ":" + key) 14 | token := base64.StdEncoding.EncodeToString(data) 15 | 16 | // list organizations 17 | func ListOrganizations() { 18 | 19 | url := "https://api.helloasso.com/v3/organizations.json" 20 | 21 | req, _ := http.NewRequest("GET", url, nil) 22 | 23 | req.Header.Add("Authorization", "Basic " + token) 24 | 25 | res, _ := http.DefaultClient.Do(req) 26 | 27 | defer res.Body.Close() 28 | body, _ := ioutil.ReadAll(res.Body) 29 | 30 | fmt.Println(res) 31 | fmt.Println(string(body)) 32 | 33 | } 34 | 35 | // get organizations detail 36 | func GetOrganizationDetail() { 37 | 38 | url := "https://api.helloasso.com/v3/organizations/000000249671.json" 39 | 40 | req, _ := http.NewRequest("GET", url, nil) 41 | 42 | req.Header.Add("Authorization", "Basic " + token) 43 | 44 | res, _ := http.DefaultClient.Do(req) 45 | 46 | defer res.Body.Close() 47 | body, _ := ioutil.ReadAll(res.Body) 48 | 49 | fmt.Println(res) 50 | fmt.Println(string(body)) 51 | 52 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/go/payments.go: -------------------------------------------------------------------------------- 1 | package payments 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "io/ioutil" 7 | "encoding/base64" 8 | ) 9 | 10 | // You need to set id and key 11 | id := "" 12 | key := "" 13 | data := []byte(id + ":" + key) 14 | token := base64.StdEncoding.EncodeToString(data) 15 | 16 | // list payments 17 | func ListPayments() { 18 | 19 | url := "https://api.helloasso.com/v3/payments.json" 20 | 21 | req, _ := http.NewRequest("GET", url, nil) 22 | 23 | req.Header.Add("Authorization", "Basic " + token) 24 | 25 | res, _ := http.DefaultClient.Do(req) 26 | 27 | defer res.Body.Close() 28 | body, _ := ioutil.ReadAll(res.Body) 29 | 30 | fmt.Println(res) 31 | fmt.Println(string(body)) 32 | 33 | } 34 | 35 | // list organization's payments 36 | func ListOrganizationPayments() { 37 | 38 | url := "https://api.helloasso.com/v3/organizations/000000249671/payments.json" 39 | 40 | req, _ := http.NewRequest("GET", url, nil) 41 | 42 | req.Header.Add("Authorization", "Basic " + token) 43 | 44 | res, _ := http.DefaultClient.Do(req) 45 | 46 | defer res.Body.Close() 47 | body, _ := ioutil.ReadAll(res.Body) 48 | 49 | fmt.Println(res) 50 | fmt.Println(string(body)) 51 | 52 | } 53 | 54 | // list campaign's payments 55 | func ListCampaignPayments() { 56 | 57 | url := "https://api.helloasso.com/v3/organizations/000000249671/campaigns/000000026934/payments.json" 58 | 59 | req, _ := http.NewRequest("GET", url, nil) 60 | 61 | req.Header.Add("Authorization", "Basic " + token) 62 | 63 | res, _ := http.DefaultClient.Do(req) 64 | 65 | defer res.Body.Close() 66 | body, _ := ioutil.ReadAll(res.Body) 67 | 68 | fmt.Println(res) 69 | fmt.Println(string(body)) 70 | 71 | } 72 | 73 | // list credit payments 74 | func ListCreditPayments() { 75 | 76 | url := "https://api.helloasso.com/v3/payments.json?type=CREDIT" 77 | 78 | req, _ := http.NewRequest("GET", url, nil) 79 | 80 | req.Header.Add("Authorization", "Basic " + token) 81 | 82 | res, _ := http.DefaultClient.Do(req) 83 | 84 | defer res.Body.Close() 85 | body, _ := ioutil.ReadAll(res.Body) 86 | 87 | fmt.Println(res) 88 | fmt.Println(string(body)) 89 | 90 | } 91 | 92 | // list payments created after 01/01/2018 and before 31/01/2018 93 | func ListPaymentsByDate() { 94 | 95 | url := "https://api.helloasso.com/v3/payments.json?from=2018-01-01T00:00:00&to=2018-01-31T00:00:00" 96 | 97 | req, _ := http.NewRequest("GET", url, nil) 98 | 99 | req.Header.Add("Authorization", "Basic " + token) 100 | 101 | res, _ := http.DefaultClient.Do(req) 102 | 103 | defer res.Body.Close() 104 | body, _ := ioutil.ReadAll(res.Body) 105 | 106 | fmt.Println(res) 107 | fmt.Println(string(body)) 108 | 109 | } 110 | 111 | // get payment detail 112 | func GetPaymentDetail() { 113 | 114 | url := "https://api.helloasso.com/v3/payments/000017607661.json" 115 | 116 | req, _ := http.NewRequest("GET", url, nil) 117 | 118 | req.Header.Add("Authorization", "Basic " + token) 119 | 120 | res, _ := http.DefaultClient.Do(req) 121 | 122 | defer res.Body.Close() 123 | body, _ := ioutil.ReadAll(res.Body) 124 | 125 | fmt.Println(res) 126 | fmt.Println(string(body)) 127 | 128 | } -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/nodejs/README.md: -------------------------------------------------------------------------------- 1 | Pour voir l'exemple merci de vous reporter au dépot GitHub : 2 | https://github.com/Mailforgood/HelloAsso.NodeJs.NotificationServer 3 | -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/php/helloasso_stat.php: -------------------------------------------------------------------------------- 1 | resources as $action) { 24 | echo "

action de type $action->type d'un montant $action->montant effectuée le $action->date


"; 25 | 26 | if(count($action->custom_infos) > 0) { 27 | echo "Liste des informations additionnelles:
"; 28 | echo ""; 33 | } 34 | else { 35 | echo "Sans information additionnelle
"; 36 | } 37 | } 38 | 39 | // Display only some specific custom informations 40 | foreach ($json->resources as $action) { 41 | // We get only action with custom informations 42 | if(count($action->custom_infos) > 0) { 43 | 44 | // First we have to get index 45 | $phoneIndex = findIndex($action->custom_infos, "Numéro de téléphone"); 46 | $emailIndex = findIndex($action->custom_infos, "Email"); 47 | $photoIndex = findIndex($action->custom_infos, "Photo d'identité"); 48 | 49 | // Then value 50 | $phoneValue = $phoneIndex == null ? "" : $action->custom_infos[$phoneIndex]->value; 51 | $emailValue = $emailIndex == null ? "" : $action->custom_infos[$emailIndex]->value; 52 | $photoValue = $photoIndex == null ? "" : $action->custom_infos[$photoIndex]->value; 53 | 54 | // Now display summary with only id picture 55 | echo "

action de type $action->type d'un montant $action->montant effectuée le $action->date avec cette photo $photoValue


"; 56 | } 57 | } 58 | 59 | /* 60 | * Small function to find index of label value in custom_infos array 61 | */ 62 | function findIndex($array, $value) { 63 | $index = 0; 64 | foreach ($array as $item) { 65 | if($item->label == $value){ 66 | return $index; 67 | } 68 | 69 | $index++; 70 | } 71 | 72 | return null; 73 | } 74 | 75 | ?> -------------------------------------------------------------------------------- /HelloAsso.Api.Samples/php/helloasso_stat_total.php: -------------------------------------------------------------------------------- 1 |  parameter and iniate $sum and $nb with past transaction 20 | curl_setopt($curl, CURLOPT_URL, "https://api.helloasso.com/v3/actions.json"); 21 | curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 22 | 23 | $json = json_decode(curl_exec($curl)); 24 | curl_close($curl); 25 | 26 | $sum = 0; 27 | $nb = 0; 28 | 29 | foreach ($json->resources as $payment) { 30 | $sum += $payment->amount; 31 | $nb++; 32 | } 33 | 34 | echo "
" . $sum . "
" . $nb . "
"; 35 | 36 | ?> -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HelloAsso.Api.Doc 2 | 3 | Ce repository contient la documentation des différentes versions de l'API HelloAsso et des exemples d'appels et d'utilisation. 4 | 5 | * HelloAsso.Api.Doc est le site disponible à cette adresse: https://dev.helloasso.com 6 | * HelloAsso.Api.Samples contient les exemples regroupé par langage de programmation 7 | 8 | --------------------------------------------------------------------------------