diff --git a/.buildpacks b/.buildpacks index 9e6b14273..6facd2c44 100644 --- a/.buildpacks +++ b/.buildpacks @@ -1,3 +1,4 @@ https://github.com/Scalingo/apt-buildpack https://github.com/Scalingo/nodejs-buildpack -https://github.com/Scalingo/python-buildpack \ No newline at end of file +https://github.com/Scalingo/python-buildpack +https://github.com/yulreich/scalingo-buildpack-chrome-for-testing \ No newline at end of file diff --git a/.env.example b/.env.example index d8f88c753..cfd56bd58 100644 --- a/.env.example +++ b/.env.example @@ -35,9 +35,7 @@ AWS_SECRET_ACCESS_KEY= AWS_STORAGE_BUCKET_NAME= AWS_S3_ENDPOINT_URL= AWS_S3_REGION_NAME= -AWS_S3_USE_SSL= -SLACK_API_TOKEN= -AWS_DCDOCS_STORAGE_BUCKET_NAME= +AWS_ENV_FOLDER_NAME= # emails EMAIL_HOST= diff --git a/Pipfile b/Pipfile index c0a2d2170..7f86f7a8e 100644 --- a/Pipfile +++ b/Pipfile @@ -40,6 +40,8 @@ python-docx = "*" django-filter = "*" drf-spectacular = "*" drf-nested-routers = "*" +undetected-chromedriver = "*" +setuptools = "*" psutil = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 9e96d00b7..3c4fb62a3 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "3f6bc3d0dd30774ab281f0873f8548636224e8e1a19248427400c9f8e75e5f2a" + "sha256": "bd112a405d0fce96faf86da8a80a915fa459ec65a21f793d68d4f25cf74c47b6" }, "pipfile-spec": 6, "requires": { @@ -195,74 +195,63 @@ }, "contourpy": { "hashes": [ - "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0", - "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639", - "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd", - "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad", - "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843", - "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8", - "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4", - "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1", - "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294", - "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84", - "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927", - "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8", - "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09", - "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7", - "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f", - "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab", - "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b", - "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3", - "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223", - "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973", - "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087", - "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081", - "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc", - "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18", - "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f", - "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d", - "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2", - "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41", - "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67", - "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6", - "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b", - "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2", - "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c", - "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42", - "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d", - "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4", - "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5", - "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49", - "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b", - "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7", - "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102", - "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb", - "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7", - "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e", - "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c", - "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8", - "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35", - "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b", - "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14", - "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb", - "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589", - "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c", - "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0", - "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da", - "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800", - "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6", - "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66", - "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca", - "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb", - "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c", - "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06", - "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779", - "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8", - "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f", - "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c" + "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1", + "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda", + "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d", + "sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509", + "sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6", + "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f", + "sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e", + "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751", + "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86", + "sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b", + "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc", + "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546", + "sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec", + "sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f", + "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82", + "sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c", + "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b", + "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c", + "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c", + "sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53", + "sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80", + "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242", + "sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85", + "sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124", + "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5", + "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2", + "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3", + "sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d", + "sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc", + "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342", + "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1", + "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1", + "sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595", + "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30", + "sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab", + "sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3", + "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2", + "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd", + "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7", + "sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277", + "sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453", + "sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697", + "sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b", + "sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454", + "sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9", + "sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1", + "sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6", + "sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291", + "sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750", + "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", + "sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e", + "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81", + "sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9", + "sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375" ], - "markers": "python_version >= '3.9'", - "version": "==1.3.0" + "markers": "python_version >= '3.10'", + "version": "==1.3.1" }, "coverage": { "hashes": [ @@ -462,11 +451,11 @@ }, "faker": { "hashes": [ - "sha256:4a82b2908cd19f3bba1a4da2060cc4eb18a40410ccdf9350d071d79dc92fe3ce", - "sha256:aa31b52cdae3673d6a78b4857c7bcdc0e98f201a5cb77d7827fa9e6b5876da94" + "sha256:68e5580cb6b4226710886e595eabc13127149d6e71e9d1db65506a7fbe2c7fce", + "sha256:9b01019c1ddaf2253ca2308c0472116e993f4ad8fc9905f82fa965e0c6f932e9" ], "markers": "python_version >= '3.8'", - "version": "==30.8.2" + "version": "==33.0.0" }, "folium": { "hashes": [ @@ -479,57 +468,59 @@ }, "fonttools": { "hashes": [ - "sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6", - "sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263", - "sha256:0d1d353ef198c422515a3e974a1e8d5b304cd54a4c2eebcae708e37cd9eeffb1", - "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e", - "sha256:1d152d1be65652fc65e695e5619e0aa0982295a95a9b29b52b85775243c06556", - "sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d", - "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e", - "sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2", - "sha256:31c32d7d4b0958600eac75eaf524b7b7cb68d3a8c196635252b7a2c30d80e986", - "sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb", - "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd", - "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882", - "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44", - "sha256:4e10d2e0a12e18f4e2dd031e1bf7c3d7017be5c8dbe524d07706179f355c5dac", - "sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20", - "sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d", - "sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a", - "sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c", - "sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d", - "sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff", - "sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7", - "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10", - "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02", - "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2", - "sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07", - "sha256:8583e563df41fdecef31b793b4dd3af8a9caa03397be648945ad32717a92885b", - "sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08", - "sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab", - "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285", - "sha256:9dc080e5a1c3b2656caff2ac2633d009b3a9ff7b5e93d0452f40cd76d3da3b3c", - "sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58", - "sha256:a7a310c6e0471602fe3bf8efaf193d396ea561486aeaa7adc1f132e02d30c4b9", - "sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc", - "sha256:ada215fd079e23e060157aab12eba0d66704316547f334eee9ff26f8c0d7b8ab", - "sha256:c39287f5c8f4a0c5a55daf9eaf9ccd223ea59eed3f6d467133cc727d7b943a55", - "sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714", - "sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8", - "sha256:d3b659d1029946f4ff9b6183984578041b520ce0f8fb7078bb37ec7445806b33", - "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d", - "sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e", - "sha256:e7d82b9e56716ed32574ee106cabca80992e6bbdcf25a88d97d21f73a0aae664", - "sha256:e8a4b261c1ef91e7188a30571be6ad98d1c6d9fa2427244c545e2fa0a2494dd7", - "sha256:e96bc94c8cda58f577277d4a71f51c8e2129b8b36fd05adece6320dd3d57de8a", - "sha256:ed2f80ca07025551636c555dec2b755dd005e2ea8fbeb99fc5cdff319b70b23b", - "sha256:f5b8a096e649768c2f4233f947cf9737f8dbf8728b90e2771e2497c6e3d21d13", - "sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a", - "sha256:fda582236fee135d4daeca056c8c88ec5f6f6d88a004a79b84a02547c8f57386", - "sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac" + "sha256:00f7cf55ad58a57ba421b6a40945b85ac7cc73094fb4949c41171d3619a3a47e", + "sha256:01124f2ca6c29fad4132d930da69158d3f49b2350e4a779e1efbe0e82bd63f6c", + "sha256:12db5888cd4dd3fcc9f0ee60c6edd3c7e1fd44b7dd0f31381ea03df68f8a153f", + "sha256:161d1ac54c73d82a3cded44202d0218ab007fde8cf194a23d3dd83f7177a2f03", + "sha256:1f0e115281a32ff532118aa851ef497a1b7cda617f4621c1cdf81ace3e36fb0c", + "sha256:23bbbb49bec613a32ed1b43df0f2b172313cee690c2509f1af8fdedcf0a17438", + "sha256:2863555ba90b573e4201feaf87a7e71ca3b97c05aa4d63548a4b69ea16c9e998", + "sha256:2b3ab90ec0f7b76c983950ac601b58949f47aca14c3f21eed858b38d7ec42b05", + "sha256:31d00f9852a6051dac23294a4cf2df80ced85d1d173a61ba90a3d8f5abc63c60", + "sha256:33b52a9cfe4e658e21b1f669f7309b4067910321757fec53802ca8f6eae96a5a", + "sha256:37dbb3fdc2ef7302d3199fb12468481cbebaee849e4b04bc55b77c24e3c49189", + "sha256:3e569711464f777a5d4ef522e781dc33f8095ab5efd7548958b36079a9f2f88c", + "sha256:3f901cef813f7c318b77d1c5c14cf7403bae5cb977cede023e22ba4316f0a8f6", + "sha256:51c029d4c0608a21a3d3d169dfc3fb776fde38f00b35ca11fdab63ba10a16f61", + "sha256:5435e5f1eb893c35c2bc2b9cd3c9596b0fcb0a59e7a14121562986dd4c47b8dd", + "sha256:553bd4f8cc327f310c20158e345e8174c8eed49937fb047a8bda51daf2c353c8", + "sha256:55718e8071be35dff098976bc249fc243b58efa263768c611be17fe55975d40a", + "sha256:61dc0a13451143c5e987dec5254d9d428f3c2789a549a7cf4f815b63b310c1cc", + "sha256:636caaeefe586d7c84b5ee0734c1a5ab2dae619dc21c5cf336f304ddb8f6001b", + "sha256:6c99b5205844f48a05cb58d4a8110a44d3038c67ed1d79eb733c4953c628b0f6", + "sha256:7208856f61770895e79732e1dcbe49d77bd5783adf73ae35f87fcc267df9db81", + "sha256:732a9a63d6ea4a81b1b25a1f2e5e143761b40c2e1b79bb2b68e4893f45139a40", + "sha256:7636acc6ab733572d5e7eec922b254ead611f1cdad17be3f0be7418e8bfaca71", + "sha256:7dd91ac3fcb4c491bb4763b820bcab6c41c784111c24172616f02f4bc227c17d", + "sha256:8118dc571921dc9e4b288d9cb423ceaf886d195a2e5329cc427df82bba872cd9", + "sha256:81ffd58d2691f11f7c8438796e9f21c374828805d33e83ff4b76e4635633674c", + "sha256:838d2d8870f84fc785528a692e724f2379d5abd3fc9dad4d32f91cf99b41e4a7", + "sha256:8c9679fc0dd7e8a5351d321d8d29a498255e69387590a86b596a45659a39eb0d", + "sha256:9ce4ba6981e10f7e0ccff6348e9775ce25ffadbee70c9fd1a3737e3e9f5fa74f", + "sha256:a656652e1f5d55b9728937a7e7d509b73d23109cddd4e89ee4f49bde03b736c6", + "sha256:a7ad1f1b98ab6cb927ab924a38a8649f1ffd7525c75fe5b594f5dab17af70e18", + "sha256:aa046f6a63bb2ad521004b2769095d4c9480c02c1efa7d7796b37826508980b6", + "sha256:abe62987c37630dca69a104266277216de1023cf570c1643bb3a19a9509e7a1b", + "sha256:b2e526b325a903868c62155a6a7e24df53f6ce4c5c3160214d8fe1be2c41b478", + "sha256:b5263d8e7ef3c0ae87fbce7f3ec2f546dc898d44a337e95695af2cd5ea21a967", + "sha256:b7ef9068a1297714e6fefe5932c33b058aa1d45a2b8be32a4c6dee602ae22b5c", + "sha256:bca35b4e411362feab28e576ea10f11268b1aeed883b9f22ed05675b1e06ac69", + "sha256:ca7fd6987c68414fece41c96836e945e1f320cda56fc96ffdc16e54a44ec57a2", + "sha256:d12081729280c39d001edd0f4f06d696014c26e6e9a0a55488fabc37c28945e4", + "sha256:dd2820a8b632f3307ebb0bf57948511c2208e34a4939cf978333bc0a3f11f838", + "sha256:e198e494ca6e11f254bac37a680473a311a88cd40e58f9cc4dc4911dfb686ec6", + "sha256:e7e6a352ff9e46e8ef8a3b1fe2c4478f8a553e1b5a479f2e899f9dc5f2055880", + "sha256:e8e67974326af6a8879dc2a4ec63ab2910a1c1a9680ccd63e4a690950fceddbe", + "sha256:f0a4b52238e7b54f998d6a56b46a2c56b59c74d4f8a6747fb9d4042190f37cd3", + "sha256:f27526042efd6f67bfb0cc2f1610fa20364396f8b1fc5edb9f45bb815fb090b2", + "sha256:f307f6b5bf9e86891213b293e538d292cd1677e06d9faaa4bf9c086ad5f132f6", + "sha256:f46b863d74bab7bb0d395f3b68d3f52a03444964e67ce5c43ce43a75efce9246", + "sha256:f50a1f455902208486fbca47ce33054208a4e437b38da49d6721ce2fef732fcf", + "sha256:f8c8c76037d05652510ae45be1cd8fb5dd2fd9afec92a25374ac82255993d57c", + "sha256:fa34aa175c91477485c44ddfbb51827d470011e558dfd5c7309eb31bef19ec51" ], "markers": "python_version >= '3.8'", - "version": "==4.54.1" + "version": "==4.55.0" }, "gprof2dot": { "hashes": [ @@ -548,6 +539,14 @@ "markers": "python_version >= '3.7'", "version": "==22.0.0" }, + "h11": { + "hashes": [ + "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", + "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761" + ], + "markers": "python_version >= '3.7'", + "version": "==0.14.0" + }, "huey": { "hashes": [ "sha256:2ffb52fb5c46a1b0d53c79d59df3622312b27e2ab68d81a580985a8ea4ca3480" @@ -1060,7 +1059,7 @@ "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4" ], - "markers": "python_version >= '3.12'", + "markers": "python_version >= '3.10'", "version": "==2.1.3" }, "openpyxl": { @@ -1072,13 +1071,21 @@ "markers": "python_version >= '3.6'", "version": "==3.1.2" }, + "outcome": { + "hashes": [ + "sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8", + "sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.0.post0" + }, "packaging": { "hashes": [ - "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", - "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" + "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", + "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f" ], "markers": "python_version >= '3.8'", - "version": "==24.1" + "version": "==24.2" }, "pandas": { "hashes": [ @@ -1246,6 +1253,14 @@ "markers": "python_version >= '3.9'", "version": "==3.2.0" }, + "pysocks": { + "hashes": [ + "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299", + "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5", + "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0" + ], + "version": "==1.7.1" + }, "python-dateutil": { "hashes": [ "sha256:78e73e19c63f5b20ffa567001531680d939dc042bf7850431877645523c66709", @@ -1359,120 +1374,115 @@ }, "rpds-py": { "hashes": [ - "sha256:02a0629ec053fc013808a85178524e3cb63a61dbc35b22499870194a63578fb9", - "sha256:07924c1b938798797d60c6308fa8ad3b3f0201802f82e4a2c41bb3fafb44cc28", - "sha256:07f59760ef99f31422c49038964b31c4dfcfeb5d2384ebfc71058a7c9adae2d2", - "sha256:0a3a1e9ee9728b2c1734f65d6a1d376c6f2f6fdcc13bb007a08cc4b1ff576dc5", - "sha256:0a90c373ea2975519b58dece25853dbcb9779b05cc46b4819cb1917e3b3215b6", - "sha256:0ad56edabcdb428c2e33bbf24f255fe2b43253b7d13a2cdbf05de955217313e6", - "sha256:0b581f47257a9fce535c4567782a8976002d6b8afa2c39ff616edf87cbeff712", - "sha256:0f8f741b6292c86059ed175d80eefa80997125b7c478fb8769fd9ac8943a16c0", - "sha256:0fc212779bf8411667234b3cdd34d53de6c2b8b8b958e1e12cb473a5f367c338", - "sha256:13c56de6518e14b9bf6edde23c4c39dac5b48dcf04160ea7bce8fca8397cdf86", - "sha256:142c0a5124d9bd0e2976089484af5c74f47bd3298f2ed651ef54ea728d2ea42c", - "sha256:14511a539afee6f9ab492b543060c7491c99924314977a55c98bfa2ee29ce78c", - "sha256:15a842bb369e00295392e7ce192de9dcbf136954614124a667f9f9f17d6a216f", - "sha256:16d4477bcb9fbbd7b5b0e4a5d9b493e42026c0bf1f06f723a9353f5153e75d30", - "sha256:1791ff70bc975b098fe6ecf04356a10e9e2bd7dc21fa7351c1742fdeb9b4966f", - "sha256:19b73643c802f4eaf13d97f7855d0fb527fbc92ab7013c4ad0e13a6ae0ed23bd", - "sha256:200a23239781f46149e6a415f1e870c5ef1e712939fe8fa63035cd053ac2638e", - "sha256:2249280b870e6a42c0d972339e9cc22ee98730a99cd7f2f727549af80dd5a963", - "sha256:2b431c777c9653e569986ecf69ff4a5dba281cded16043d348bf9ba505486f36", - "sha256:2cc3712a4b0b76a1d45a9302dd2f53ff339614b1c29603a911318f2357b04dd2", - "sha256:2fbb0ffc754490aff6dabbf28064be47f0f9ca0b9755976f945214965b3ace7e", - "sha256:32b922e13d4c0080d03e7b62991ad7f5007d9cd74e239c4b16bc85ae8b70252d", - "sha256:36785be22066966a27348444b40389f8444671630063edfb1a2eb04318721e17", - "sha256:37fe0f12aebb6a0e3e17bb4cd356b1286d2d18d2e93b2d39fe647138458b4bcb", - "sha256:3aea7eed3e55119635a74bbeb80b35e776bafccb70d97e8ff838816c124539f1", - "sha256:3c6afcf2338e7f374e8edc765c79fbcb4061d02b15dd5f8f314a4af2bdc7feb5", - "sha256:3ccb8ac2d3c71cda472b75af42818981bdacf48d2e21c36331b50b4f16930163", - "sha256:3d089d0b88996df627693639d123c8158cff41c0651f646cd8fd292c7da90eaf", - "sha256:3dd645e2b0dcb0fd05bf58e2e54c13875847687d0b71941ad2e757e5d89d4356", - "sha256:3e310838a5801795207c66c73ea903deda321e6146d6f282e85fa7e3e4854804", - "sha256:42cbde7789f5c0bcd6816cb29808e36c01b960fb5d29f11e052215aa85497c93", - "sha256:483b29f6f7ffa6af845107d4efe2e3fa8fb2693de8657bc1849f674296ff6a5a", - "sha256:4888e117dd41b9d34194d9e31631af70d3d526efc363085e3089ab1a62c32ed1", - "sha256:49fe9b04b6fa685bd39237d45fad89ba19e9163a1ccaa16611a812e682913496", - "sha256:4a5a844f68776a7715ecb30843b453f07ac89bad393431efbf7accca3ef599c1", - "sha256:4a916087371afd9648e1962e67403c53f9c49ca47b9680adbeef79da3a7811b0", - "sha256:4f676e21db2f8c72ff0936f895271e7a700aa1f8d31b40e4e43442ba94973899", - "sha256:518d2ca43c358929bf08f9079b617f1c2ca6e8848f83c1225c88caeac46e6cbc", - "sha256:5265505b3d61a0f56618c9b941dc54dc334dc6e660f1592d112cd103d914a6db", - "sha256:55cd1fa4ecfa6d9f14fbd97ac24803e6f73e897c738f771a9fe038f2f11ff07c", - "sha256:58b1d5dd591973d426cbb2da5e27ba0339209832b2f3315928c9790e13f159e8", - "sha256:59240685e7da61fb78f65a9f07f8108e36a83317c53f7b276b4175dc44151684", - "sha256:5b48e790e0355865197ad0aca8cde3d8ede347831e1959e158369eb3493d2191", - "sha256:5d4eea0761e37485c9b81400437adb11c40e13ef513375bbd6973e34100aeb06", - "sha256:648386ddd1e19b4a6abab69139b002bc49ebf065b596119f8f37c38e9ecee8ff", - "sha256:653647b8838cf83b2e7e6a0364f49af96deec64d2a6578324db58380cff82aca", - "sha256:6740a3e8d43a32629bb9b009017ea5b9e713b7210ba48ac8d4cb6d99d86c8ee8", - "sha256:6889469bfdc1eddf489729b471303739bf04555bb151fe8875931f8564309afc", - "sha256:68cb0a499f2c4a088fd2f521453e22ed3527154136a855c62e148b7883b99f9a", - "sha256:6aa97af1558a9bef4025f8f5d8c60d712e0a3b13a2fe875511defc6ee77a1ab7", - "sha256:6b73c67850ca7cae0f6c56f71e356d7e9fa25958d3e18a64927c2d930859b8e4", - "sha256:6c8e9340ce5a52f95fa7d3b552b35c7e8f3874d74a03a8a69279fd5fca5dc751", - "sha256:6ca91093a4a8da4afae7fe6a222c3b53ee4eef433ebfee4d54978a103435159e", - "sha256:754bbed1a4ca48479e9d4182a561d001bbf81543876cdded6f695ec3d465846b", - "sha256:762703bdd2b30983c1d9e62b4c88664df4a8a4d5ec0e9253b0231171f18f6d75", - "sha256:78f0b6877bfce7a3d1ff150391354a410c55d3cdce386f862926a4958ad5ab7e", - "sha256:7a07ced2b22f0cf0b55a6a510078174c31b6d8544f3bc00c2bcee52b3d613f74", - "sha256:7dca7081e9a0c3b6490a145593f6fe3173a94197f2cb9891183ef75e9d64c425", - "sha256:7e21b7031e17c6b0e445f42ccc77f79a97e2687023c5746bfb7a9e45e0921b84", - "sha256:7f5179583d7a6cdb981151dd349786cbc318bab54963a192692d945dd3f6435d", - "sha256:83cba698cfb3c2c5a7c3c6bac12fe6c6a51aae69513726be6411076185a8b24a", - "sha256:842c19a6ce894493563c3bd00d81d5100e8e57d70209e84d5491940fdb8b9e3a", - "sha256:84b8382a90539910b53a6307f7c35697bc7e6ffb25d9c1d4e998a13e842a5e83", - "sha256:8ba6f89cac95c0900d932c9efb7f0fb6ca47f6687feec41abcb1bd5e2bd45535", - "sha256:8bbe951244a838a51289ee53a6bae3a07f26d4e179b96fc7ddd3301caf0518eb", - "sha256:925d176a549f4832c6f69fa6026071294ab5910e82a0fe6c6228fce17b0706bd", - "sha256:92b68b79c0da2a980b1c4197e56ac3dd0c8a149b4603747c4378914a68706979", - "sha256:93da1d3db08a827eda74356f9f58884adb254e59b6664f64cc04cdff2cc19b0d", - "sha256:95f3b65d2392e1c5cec27cff08fdc0080270d5a1a4b2ea1d51d5f4a2620ff08d", - "sha256:9c4cb04a16b0f199a8c9bf807269b2f63b7b5b11425e4a6bd44bd6961d28282c", - "sha256:a624cc00ef2158e04188df5e3016385b9353638139a06fb77057b3498f794782", - "sha256:a649dfd735fff086e8a9d0503a9f0c7d01b7912a333c7ae77e1515c08c146dad", - "sha256:a94e52537a0e0a85429eda9e49f272ada715506d3b2431f64b8a3e34eb5f3e75", - "sha256:aa7ac11e294304e615b43f8c441fee5d40094275ed7311f3420d805fde9b07b4", - "sha256:b41b6321805c472f66990c2849e152aff7bc359eb92f781e3f606609eac877ad", - "sha256:b71b8666eeea69d6363248822078c075bac6ed135faa9216aa85f295ff009b1e", - "sha256:b9c2fe36d1f758b28121bef29ed1dee9b7a2453e997528e7d1ac99b94892527c", - "sha256:bb63804105143c7e24cee7db89e37cb3f3941f8e80c4379a0b355c52a52b6780", - "sha256:be5ef2f1fc586a7372bfc355986226484e06d1dc4f9402539872c8bb99e34b01", - "sha256:c142b88039b92e7e0cb2552e8967077e3179b22359e945574f5e2764c3953dcf", - "sha256:c14937af98c4cc362a1d4374806204dd51b1e12dded1ae30645c298e5a5c4cb1", - "sha256:ca449520e7484534a2a44faf629362cae62b660601432d04c482283c47eaebab", - "sha256:cd945871335a639275eee904caef90041568ce3b42f402c6959b460d25ae8732", - "sha256:d0b937b2a1988f184a3e9e577adaa8aede21ec0b38320d6009e02bd026db04fa", - "sha256:d126b52e4a473d40232ec2052a8b232270ed1f8c9571aaf33f73a14cc298c24f", - "sha256:d8761c3c891cc51e90bc9926d6d2f59b27beaf86c74622c8979380a29cc23ac3", - "sha256:d9ecb51120de61e4604650666d1f2b68444d46ae18fd492245a08f53ad2b7711", - "sha256:da584ff96ec95e97925174eb8237e32f626e7a1a97888cdd27ee2f1f24dd0ad8", - "sha256:dbcf360c9e3399b056a238523146ea77eeb2a596ce263b8814c900263e46031a", - "sha256:dbddc10776ca7ebf2a299c41a4dde8ea0d8e3547bfd731cb87af2e8f5bf8962d", - "sha256:dc73505153798c6f74854aba69cc75953888cf9866465196889c7cdd351e720c", - "sha256:e13de156137b7095442b288e72f33503a469aa1980ed856b43c353ac86390519", - "sha256:e1791c4aabd117653530dccd24108fa03cc6baf21f58b950d0a73c3b3b29a350", - "sha256:e75ba609dba23f2c95b776efb9dd3f0b78a76a151e96f96cc5b6b1b0004de66f", - "sha256:e79059d67bea28b53d255c1437b25391653263f0e69cd7dec170d778fdbca95e", - "sha256:ecd27a66740ffd621d20b9a2f2b5ee4129a56e27bfb9458a3bcc2e45794c96cb", - "sha256:f009c69bc8c53db5dfab72ac760895dc1f2bc1b62ab7408b253c8d1ec52459fc", - "sha256:f16bc1334853e91ddaaa1217045dd7be166170beec337576818461268a3de67f", - "sha256:f19169781dddae7478a32301b499b2858bc52fc45a112955e798ee307e294977", - "sha256:fa3060d885657abc549b2a0f8e1b79699290e5d83845141717c6c90c2df38311", - "sha256:fa41a64ac5b08b292906e248549ab48b69c5428f3987b09689ab2441f267d04d", - "sha256:fbf15aff64a163db29a91ed0868af181d6f68ec1a3a7d5afcfe4501252840bad", - "sha256:fe00a9057d100e69b4ae4a094203a708d65b0f345ed546fdef86498bf5390982" + "sha256:031819f906bb146561af051c7cef4ba2003d28cff07efacef59da973ff7969ba", + "sha256:0626238a43152918f9e72ede9a3b6ccc9e299adc8ade0d67c5e142d564c9a83d", + "sha256:085ed25baac88953d4283e5b5bd094b155075bb40d07c29c4f073e10623f9f2e", + "sha256:0a9e0759e7be10109645a9fddaaad0619d58c9bf30a3f248a2ea57a7c417173a", + "sha256:0c025820b78817db6a76413fff6866790786c38f95ea3f3d3c93dbb73b632202", + "sha256:1ff2eba7f6c0cb523d7e9cff0903f2fe1feff8f0b2ceb6bd71c0e20a4dcee271", + "sha256:20cc1ed0bcc86d8e1a7e968cce15be45178fd16e2ff656a243145e0b439bd250", + "sha256:241e6c125568493f553c3d0fdbb38c74babf54b45cef86439d4cd97ff8feb34d", + "sha256:2c51d99c30091f72a3c5d126fad26236c3f75716b8b5e5cf8effb18889ced928", + "sha256:2d6129137f43f7fa02d41542ffff4871d4aefa724a5fe38e2c31a4e0fd343fb0", + "sha256:30b912c965b2aa76ba5168fd610087bad7fcde47f0a8367ee8f1876086ee6d1d", + "sha256:30bdc973f10d28e0337f71d202ff29345320f8bc49a31c90e6c257e1ccef4333", + "sha256:320c808df533695326610a1b6a0a6e98f033e49de55d7dc36a13c8a30cfa756e", + "sha256:32eb88c30b6a4f0605508023b7141d043a79b14acb3b969aa0b4f99b25bc7d4a", + "sha256:3b766a9f57663396e4f34f5140b3595b233a7b146e94777b97a8413a1da1be18", + "sha256:3b929c2bb6e29ab31f12a1117c39f7e6d6450419ab7464a4ea9b0b417174f044", + "sha256:3e30a69a706e8ea20444b98a49f386c17b26f860aa9245329bab0851ed100677", + "sha256:3e53861b29a13d5b70116ea4230b5f0f3547b2c222c5daa090eb7c9c82d7f664", + "sha256:40c91c6e34cf016fa8e6b59d75e3dbe354830777fcfd74c58b279dceb7975b75", + "sha256:4991ca61656e3160cdaca4851151fd3f4a92e9eba5c7a530ab030d6aee96ec89", + "sha256:4ab2c2a26d2f69cdf833174f4d9d86118edc781ad9a8fa13970b527bf8236027", + "sha256:4e8921a259f54bfbc755c5bbd60c82bb2339ae0324163f32868f63f0ebb873d9", + "sha256:4eb2de8a147ffe0626bfdc275fc6563aa7bf4b6db59cf0d44f0ccd6ca625a24e", + "sha256:5145282a7cd2ac16ea0dc46b82167754d5e103a05614b724457cffe614f25bd8", + "sha256:520ed8b99b0bf86a176271f6fe23024323862ac674b1ce5b02a72bfeff3fff44", + "sha256:52c041802a6efa625ea18027a0723676a778869481d16803481ef6cc02ea8cb3", + "sha256:5555db3e618a77034954b9dc547eae94166391a98eb867905ec8fcbce1308d95", + "sha256:58a0e345be4b18e6b8501d3b0aa540dad90caeed814c515e5206bb2ec26736fd", + "sha256:590ef88db231c9c1eece44dcfefd7515d8bf0d986d64d0caf06a81998a9e8cab", + "sha256:5afb5efde74c54724e1a01118c6e5c15e54e642c42a1ba588ab1f03544ac8c7a", + "sha256:688c93b77e468d72579351a84b95f976bd7b3e84aa6686be6497045ba84be560", + "sha256:6b4ef7725386dc0762857097f6b7266a6cdd62bfd209664da6712cb26acef035", + "sha256:6bc0e697d4d79ab1aacbf20ee5f0df80359ecf55db33ff41481cf3e24f206919", + "sha256:6dcc4949be728ede49e6244eabd04064336012b37f5c2200e8ec8eb2988b209c", + "sha256:6f54e7106f0001244a5f4cf810ba8d3f9c542e2730821b16e969d6887b664266", + "sha256:808f1ac7cf3b44f81c9475475ceb221f982ef548e44e024ad5f9e7060649540e", + "sha256:8404b3717da03cbf773a1d275d01fec84ea007754ed380f63dfc24fb76ce4592", + "sha256:878f6fea96621fda5303a2867887686d7a198d9e0f8a40be100a63f5d60c88c9", + "sha256:8a7ff941004d74d55a47f916afc38494bd1cfd4b53c482b77c03147c91ac0ac3", + "sha256:95a5bad1ac8a5c77b4e658671642e4af3707f095d2b78a1fdd08af0dfb647624", + "sha256:97ef67d9bbc3e15584c2f3c74bcf064af36336c10d2e21a2131e123ce0f924c9", + "sha256:98486337f7b4f3c324ab402e83453e25bb844f44418c066623db88e4c56b7c7b", + "sha256:98e4fe5db40db87ce1c65031463a760ec7906ab230ad2249b4572c2fc3ef1f9f", + "sha256:998a8080c4495e4f72132f3d66ff91f5997d799e86cec6ee05342f8f3cda7dca", + "sha256:9afe42102b40007f588666bc7de82451e10c6788f6f70984629db193849dced1", + "sha256:9e20da3957bdf7824afdd4b6eeb29510e83e026473e04952dca565170cd1ecc8", + "sha256:a017f813f24b9df929674d0332a374d40d7f0162b326562daae8066b502d0590", + "sha256:a429b99337062877d7875e4ff1a51fe788424d522bd64a8c0a20ef3021fdb6ed", + "sha256:a58ce66847711c4aa2ecfcfaff04cb0327f907fead8945ffc47d9407f41ff952", + "sha256:a78d8b634c9df7f8d175451cfeac3810a702ccb85f98ec95797fa98b942cea11", + "sha256:a89a8ce9e4e75aeb7fa5d8ad0f3fecdee813802592f4f46a15754dcb2fd6b061", + "sha256:a8eeec67590e94189f434c6d11c426892e396ae59e4801d17a93ac96b8c02a6c", + "sha256:aaeb25ccfb9b9014a10eaf70904ebf3f79faaa8e60e99e19eef9f478651b9b74", + "sha256:ad116dda078d0bc4886cb7840e19811562acdc7a8e296ea6ec37e70326c1b41c", + "sha256:af04ac89c738e0f0f1b913918024c3eab6e3ace989518ea838807177d38a2e94", + "sha256:af4a644bf890f56e41e74be7d34e9511e4954894d544ec6b8efe1e21a1a8da6c", + "sha256:b21747f79f360e790525e6f6438c7569ddbfb1b3197b9e65043f25c3c9b489d8", + "sha256:b229ce052ddf1a01c67d68166c19cb004fb3612424921b81c46e7ea7ccf7c3bf", + "sha256:b4de1da871b5c0fd5537b26a6fc6814c3cc05cabe0c941db6e9044ffbb12f04a", + "sha256:b80b4690bbff51a034bfde9c9f6bf9357f0a8c61f548942b80f7b66356508bf5", + "sha256:b876f2bc27ab5954e2fd88890c071bd0ed18b9c50f6ec3de3c50a5ece612f7a6", + "sha256:b8f107395f2f1d151181880b69a2869c69e87ec079c49c0016ab96860b6acbe5", + "sha256:b9b76e2afd585803c53c5b29e992ecd183f68285b62fe2668383a18e74abe7a3", + "sha256:c2b2f71c6ad6c2e4fc9ed9401080badd1469fa9889657ec3abea42a3d6b2e1ed", + "sha256:c3761f62fcfccf0864cc4665b6e7c3f0c626f0380b41b8bd1ce322103fa3ef87", + "sha256:c38dbf31c57032667dd5a2f0568ccde66e868e8f78d5a0d27dcc56d70f3fcd3b", + "sha256:ca9989d5d9b1b300bc18e1801c67b9f6d2c66b8fd9621b36072ed1df2c977f72", + "sha256:cbd7504a10b0955ea287114f003b7ad62330c9e65ba012c6223dba646f6ffd05", + "sha256:d167e4dbbdac48bd58893c7e446684ad5d425b407f9336e04ab52e8b9194e2ed", + "sha256:d2132377f9deef0c4db89e65e8bb28644ff75a18df5293e132a8d67748397b9f", + "sha256:da52d62a96e61c1c444f3998c434e8b263c384f6d68aca8274d2e08d1906325c", + "sha256:daa8efac2a1273eed2354397a51216ae1e198ecbce9036fba4e7610b308b6153", + "sha256:dc5695c321e518d9f03b7ea6abb5ea3af4567766f9852ad1560f501b17588c7b", + "sha256:de552f4a1916e520f2703ec474d2b4d3f86d41f353e7680b597512ffe7eac5d0", + "sha256:de609a6f1b682f70bb7163da745ee815d8f230d97276db049ab447767466a09d", + "sha256:e12bb09678f38b7597b8346983d2323a6482dcd59e423d9448108c1be37cac9d", + "sha256:e168afe6bf6ab7ab46c8c375606298784ecbe3ba31c0980b7dcbb9631dcba97e", + "sha256:e78868e98f34f34a88e23ee9ccaeeec460e4eaf6db16d51d7a9b883e5e785a5e", + "sha256:e860f065cc4ea6f256d6f411aba4b1251255366e48e972f8a347cf88077b24fd", + "sha256:ea3a6ac4d74820c98fcc9da4a57847ad2cc36475a8bd9683f32ab6d47a2bd682", + "sha256:ebf64e281a06c904a7636781d2e973d1f0926a5b8b480ac658dc0f556e7779f4", + "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db", + "sha256:ee1e4fc267b437bb89990b2f2abf6c25765b89b72dd4a11e21934df449e0c976", + "sha256:ee4eafd77cc98d355a0d02f263efc0d3ae3ce4a7c24740010a8b4012bbb24937", + "sha256:efec946f331349dfc4ae9d0e034c263ddde19414fe5128580f512619abed05f1", + "sha256:f414da5c51bf350e4b7960644617c130140423882305f7574b6cf65a3081cecb", + "sha256:f71009b0d5e94c0e86533c0b27ed7cacc1239cb51c178fd239c3cfefefb0400a", + "sha256:f983e4c2f603c95dde63df633eec42955508eefd8d0f0e6d236d31a044c882d7", + "sha256:faa5e8496c530f9c71f2b4e1c49758b06e5f4055e17144906245c99fa6d45356", + "sha256:fed5dfefdf384d6fe975cc026886aece4f292feaf69d0eeb716cfd3c5a4dd8be" ], - "markers": "python_version >= '3.8'", - "version": "==0.20.1" + "markers": "python_version >= '3.9'", + "version": "==0.21.0" }, "s3transfer": { "hashes": [ - "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d", - "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c" + "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e", + "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7" ], "markers": "python_version >= '3.8'", - "version": "==0.10.3" + "version": "==0.10.4" + }, + "selenium": { + "hashes": [ + "sha256:5296c425a75ff1b44d0d5199042b36a6d1ef76c04fb775b97b40be739a9caae2", + "sha256:b89b1f62b5cfe8025868556fe82360d6b649d464f75d2655cb966c8f8447ea18" + ], + "markers": "python_version >= '3.8'", + "version": "==4.27.1" }, "sentry-sdk": { "hashes": [ @@ -1483,6 +1493,15 @@ "markers": "python_version >= '3.6'", "version": "==2.1.1" }, + "setuptools": { + "hashes": [ + "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6", + "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==75.6.0" + }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", @@ -1491,6 +1510,21 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, + "sniffio": { + "hashes": [ + "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", + "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.1" + }, + "sortedcontainers": { + "hashes": [ + "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", + "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0" + ], + "version": "==2.4.0" + }, "soupsieve": { "hashes": [ "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", @@ -1501,11 +1535,11 @@ }, "sqlparse": { "hashes": [ - "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", - "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e" + "sha256:9e37b35e16d1cc652a2545f0997c1deb23ea28fa1f3eefe609eee3063c3b105f", + "sha256:e99bc85c78160918c3e1d9230834ab8d80fc06c59d03f8db2618f65f65dda55e" ], "markers": "python_version >= '3.8'", - "version": "==0.5.1" + "version": "==0.5.2" }, "tqdm": { "hashes": [ @@ -1516,6 +1550,22 @@ "markers": "python_version >= '3.7'", "version": "==4.66.4" }, + "trio": { + "hashes": [ + "sha256:1dcc95ab1726b2da054afea8fd761af74bad79bd52381b84eae408e983c76831", + "sha256:68eabbcf8f457d925df62da780eff15ff5dc68fd6b367e2dde59f7aaf2a0b884" + ], + "markers": "python_version >= '3.8'", + "version": "==0.27.0" + }, + "trio-websocket": { + "hashes": [ + "sha256:18c11793647703c158b1f6e62de638acada927344d534e3c7628eedcb746839f", + "sha256:520d046b0d030cf970b8b2b2e00c4c2245b3807853ecd44214acd33d74581638" + ], + "markers": "python_version >= '3.7'", + "version": "==0.11.1" + }, "typing-extensions": { "hashes": [ "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", @@ -1533,6 +1583,13 @@ "markers": "python_version >= '2'", "version": "==2024.1" }, + "undetected-chromedriver": { + "hashes": [ + "sha256:9f945e1435005247abe17de316bcfda85b284a4177fd5f25167c78ced33b65ec" + ], + "index": "pypi", + "version": "==3.5.5" + }, "uritemplate": { "hashes": [ "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", @@ -1542,6 +1599,9 @@ "version": "==4.1.1" }, "urllib3": { + "extras": [ + "socks" + ], "hashes": [ "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" @@ -1549,6 +1609,89 @@ "markers": "python_version >= '3.8'", "version": "==2.2.3" }, + "websocket-client": { + "hashes": [ + "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", + "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da" + ], + "markers": "python_version >= '3.8'", + "version": "==1.8.0" + }, + "websockets": { + "hashes": [ + "sha256:00fe5da3f037041da1ee0cf8e308374e236883f9842c7c465aa65098b1c9af59", + "sha256:01bb2d4f0a6d04538d3c5dfd27c0643269656c28045a53439cbf1c004f90897a", + "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb", + "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e", + "sha256:0d4290d559d68288da9f444089fd82490c8d2744309113fc26e2da6e48b65da6", + "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10", + "sha256:14839f54786987ccd9d03ed7f334baec0f02272e7ec4f6e9d427ff584aeea8b4", + "sha256:1d045cbe1358d76b24d5e20e7b1878efe578d9897a25c24e6006eef788c0fdf0", + "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0", + "sha256:205f672a6c2c671a86d33f6d47c9b35781a998728d2c7c2a3e1cf3333fcb62b7", + "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250", + "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078", + "sha256:25225cc79cfebc95ba1d24cd3ab86aaa35bcd315d12fa4358939bd55e9bd74a5", + "sha256:3630b670d5057cd9e08b9c4dab6493670e8e762a24c2c94ef312783870736ab9", + "sha256:368a05465f49c5949e27afd6fbe0a77ce53082185bbb2ac096a3a8afaf4de52e", + "sha256:36ebd71db3b89e1f7b1a5deaa341a654852c3518ea7a8ddfdf69cc66acc2db1b", + "sha256:39450e6215f7d9f6f7bc2a6da21d79374729f5d052333da4d5825af8a97e6735", + "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8", + "sha256:3c3deac3748ec73ef24fc7be0b68220d14d47d6647d2f85b2771cb35ea847aa1", + "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0", + "sha256:3fc753451d471cff90b8f467a1fc0ae64031cf2d81b7b34e1811b7e2691bc4bc", + "sha256:414ffe86f4d6f434a8c3b7913655a1a5383b617f9bf38720e7c0799fac3ab1c6", + "sha256:449d77d636f8d9c17952628cc7e3b8faf6e92a17ec581ec0c0256300717e1512", + "sha256:4b6caec8576e760f2c7dd878ba817653144d5f369200b6ddf9771d64385b84d4", + "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e", + "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d", + "sha256:5b918d288958dc3fa1c5a0b9aa3256cb2b2b84c54407f4813c45d52267600cd3", + "sha256:5ef440054124728cc49b01c33469de06755e5a7a4e83ef61934ad95fc327fbb0", + "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7", + "sha256:6a6c9bcf7cdc0fd41cc7b7944447982e8acfd9f0d560ea6d6845428ed0562058", + "sha256:6d24fc337fc055c9e83414c94e1ee0dee902a486d19d2a7f0929e49d7d604b09", + "sha256:7048eb4415d46368ef29d32133134c513f507fff7d953c18c91104738a68c3b3", + "sha256:77569d19a13015e840b81550922056acabc25e3f52782625bc6843cfa034e1da", + "sha256:8149a0f5a72ca36720981418eeffeb5c2729ea55fa179091c81a0910a114a5d2", + "sha256:836bef7ae338a072e9d1863502026f01b14027250a4545672673057997d5c05a", + "sha256:8621a07991add373c3c5c2cf89e1d277e49dc82ed72c75e3afc74bd0acc446f0", + "sha256:87e31011b5c14a33b29f17eb48932e63e1dcd3fa31d72209848652310d3d1f0d", + "sha256:88cf9163ef674b5be5736a584c999e98daf3aabac6e536e43286eb74c126b9c7", + "sha256:8fda642151d5affdee8a430bd85496f2e2517be3a2b9d2484d633d5712b15c56", + "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179", + "sha256:90f4c7a069c733d95c308380aae314f2cb45bd8a904fb03eb36d1a4983a4993f", + "sha256:9481a6de29105d73cf4515f2bef8eb71e17ac184c19d0b9918a3701c6c9c4f23", + "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199", + "sha256:9777564c0a72a1d457f0848977a1cbe15cfa75fa2f67ce267441e465717dcf1a", + "sha256:a032855dc7db987dff813583d04f4950d14326665d7e714d584560b140ae6b8b", + "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29", + "sha256:a35f704be14768cea9790d921c2c1cc4fc52700410b1c10948511039be824aac", + "sha256:a3dfff83ca578cada2d19e665e9c8368e1598d4e787422a460ec70e531dbdd58", + "sha256:a4c805c6034206143fbabd2d259ec5e757f8b29d0a2f0bf3d2fe5d1f60147a4a", + "sha256:a655bde548ca98f55b43711b0ceefd2a88a71af6350b0c168aa77562104f3f45", + "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434", + "sha256:b1f3628a0510bd58968c0f60447e7a692933589b791a6b572fcef374053ca280", + "sha256:b7e7ea2f782408c32d86b87a0d2c1fd8871b0399dd762364c731d86c86069a78", + "sha256:bc6ccf7d54c02ae47a48ddf9414c54d48af9c01076a2e1023e3b486b6e72c707", + "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58", + "sha256:cc1fc87428c1d18b643479caa7b15db7d544652e5bf610513d4a3478dbe823d0", + "sha256:cd7c11968bc3860d5c78577f0dbc535257ccec41750675d58d8dc66aa47fe52c", + "sha256:ceada5be22fa5a5a4cdeec74e761c2ee7db287208f54c718f2df4b7e200b8d4a", + "sha256:cf5201a04550136ef870aa60ad3d29d2a59e452a7f96b94193bee6d73b8ad9a9", + "sha256:d9fd19ecc3a4d5ae82ddbfb30962cf6d874ff943e56e0c81f5169be2fda62979", + "sha256:ddaa4a390af911da6f680be8be4ff5aaf31c4c834c1a9147bc21cbcbca2d4370", + "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098", + "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e", + "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8", + "sha256:e7591d6f440af7f73c4bd9404f3772bfee064e639d2b6cc8c94076e71b2471c1", + "sha256:eb6d38971c800ff02e4a6afd791bbe3b923a9a57ca9aeab7314c21c84bf9ff05", + "sha256:ed907449fe5e021933e46a3e65d651f641975a768d0649fee59f10c2985529ed", + "sha256:f6cf0ad281c979306a6a34242b371e90e891bce504509fb6bb5246bbbf31e7b6", + "sha256:f95ba34d71e2fa0c5d225bde3b3bdb152e957150100e75c86bc7f3964c450d89" + ], + "markers": "python_version >= '3.9'", + "version": "==14.1" + }, "whitenoise": { "hashes": [ "sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251", @@ -1558,6 +1701,14 @@ "markers": "python_version >= '3.8'", "version": "==6.6.0" }, + "wsproto": { + "hashes": [ + "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065", + "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736" + ], + "markers": "python_full_version >= '3.7.0'", + "version": "==1.2.0" + }, "xlsxwriter": { "hashes": [ "sha256:9977d0c661a72866a61f9f7a809e25ebbb0fb7036baa3b9fe74afcfca6b3cb8c", @@ -1737,7 +1888,6 @@ "sha256:b98d49a80aa4adf1433a97407102d068de26c739c405431d93faad96dd282c40" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==5.1.0" }, "django-stubs-ext": { @@ -1778,11 +1928,11 @@ }, "faker": { "hashes": [ - "sha256:4a82b2908cd19f3bba1a4da2060cc4eb18a40410ccdf9350d071d79dc92fe3ce", - "sha256:aa31b52cdae3673d6a78b4857c7bcdc0e98f201a5cb77d7827fa9e6b5876da94" + "sha256:68e5580cb6b4226710886e595eabc13127149d6e71e9d1db65506a7fbe2c7fce", + "sha256:9b01019c1ddaf2253ca2308c0472116e993f4ad8fc9905f82fa965e0c6f932e9" ], "markers": "python_version >= '3.8'", - "version": "==30.8.2" + "version": "==33.0.0" }, "filelock": { "hashes": [ @@ -1794,11 +1944,11 @@ }, "identify": { "hashes": [ - "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0", - "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98" + "sha256:62f5dae9b5fef52c84cc188514e9ea4f3f636b1d8799ab5ebc475471f9e47a02", + "sha256:9edba65473324c2ea9684b1f944fe3191db3345e50b6d04571d10ed164f8d7bd" ], - "markers": "python_version >= '3.8'", - "version": "==2.6.1" + "markers": "python_version >= '3.9'", + "version": "==2.6.3" }, "idna": { "hashes": [ @@ -1914,7 +2064,7 @@ "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4" ], - "markers": "python_version >= '3.12'", + "markers": "python_version >= '3.10'", "version": "==2.1.3" }, "openpyxl": { @@ -1936,12 +2086,12 @@ }, "pandas-stubs": { "hashes": [ - "sha256:3a6f8f142105a42550be677ba741ba532621f4e0acad2155c0e7b2450f114cfa", - "sha256:d4ab618253f0acf78a5d0d2bfd6dffdd92d91a56a69bdc8144e5a5c6d25be3b5" + "sha256:74aa79c167af374fe97068acc90776c0ebec5266a6e5c69fe11e9c2cf51f2267", + "sha256:cf819383c6d9ae7d4dabf34cd47e1e45525bb2f312e6ad2939c2c204cb708acd" ], "index": "pypi", "markers": "python_version >= '3.10'", - "version": "==2.2.3.241009" + "version": "==2.2.3.241126" }, "platformdirs": { "hashes": [ @@ -2039,28 +2189,28 @@ }, "ruff": { "hashes": [ - "sha256:21aae53ab1490a52bf4e3bf520c10ce120987b047c494cacf4edad0ba0888da2", - "sha256:28bd8220f4d8f79d590db9e2f6a0674f75ddbc3847277dd44ac1f8d30684b828", - "sha256:2b14e77293380e475b4e3a7a368e14549288ed2931fce259a6f99978669e844f", - "sha256:576305393998b7bd6c46018f8104ea3a9cb3fa7908c21d8580e3274a3b04b691", - "sha256:5b813ef26db1015953daf476202585512afd6a6862a02cde63f3bafb53d0b2d4", - "sha256:7b792468e9804a204be221b14257566669d1db5c00d6bb335996e5cd7004ba80", - "sha256:853277dbd9675810c6826dad7a428d52a11760744508340e66bf46f8be9701d9", - "sha256:9fd67094e77efbea932e62b5d2483006154794040abb3a5072e659096415ae1e", - "sha256:b19fafe261bf741bca2764c14cbb4ee1819b67adb63ebc2db6401dcd652e3748", - "sha256:b73f873b5f52092e63ed540adefc3c36f1f803790ecf2590e1df8bf0a9f72cb8", - "sha256:bb8368cd45bba3f57bb29cbb8d64b4a33f8415d0149d2655c5c8539452ce7760", - "sha256:ccc7e0fc6e0cb3168443eeadb6445285abaae75142ee22b2b72c27d790ab60ba", - "sha256:dba53ed84ac19ae4bfb4ea4bf0172550a2285fa27fbb13e3746f04c80f7fa088", - "sha256:dd8800cbe0254e06b8fec585e97554047fb82c894973f7ff18558eee33d1cb88", - "sha256:e00163fb897d35523c70d71a46fbaa43bf7bf9af0f4534c53ea5b96b2e03397b", - "sha256:f3c54b538633482dc342e9b634d91168fe8cc56b30a4b4f99287f4e339103e88", - "sha256:fa993cfc9f0ff11187e82de874dfc3611df80852540331bc85c75809c93253a8", - "sha256:fd77877a4e43b3a98e5ef4715ba3862105e299af0c48942cc6d51ba3d97dc859" + "sha256:0e55cce9aa93c5d0d4e3937e47b169035c7e91c8655b0974e61bb79cf398d49c", + "sha256:295bb4c02d58ff2ef4378a1870c20af30723013f441c9d1637a008baaf928c8b", + "sha256:2dabfd05b96b7b8f2da00d53c514eea842bff83e41e1cceb08ae1966254a51df", + "sha256:3f4cd64916d8e732ce6b87f3f5296a8942d285bbbc161acee7fe561134af64f9", + "sha256:582891c57b96228d146725975fbb942e1f30a0c4ba19722e692ca3eb25cc9b4f", + "sha256:5fdb6efecc3eb60bba5819679466471fd7d13c53487df7248d6e27146e985468", + "sha256:780d5d8523c04202184405e60c98d7595bdb498c3c6abba3b6d4cdf2ca2af426", + "sha256:7b1f1c76b47c18fa92ee78b60d2d20d7e866c55ee603e7d19c1e991fad933a9a", + "sha256:812e2052121634cf13cd6fddf0c1871d0ead1aad40a1a258753c04c18bb71bbd", + "sha256:83a55679c4cb449fa527b8497cadf54f076603cc36779b2170b24f704171ce70", + "sha256:85e654f0ded7befe2d61eeaf3d3b1e4ef3894469cd664ffa85006c7720f1e4a2", + "sha256:87a8e86bae0dbd749c815211ca11e3a7bd559b9710746c559ed63106d382bd9c", + "sha256:a7ccfe6331bf8c8dad715753e157457faf7351c2b69f62f32c165c2dbcbacd44", + "sha256:ba93e6294e9a737cd726b74b09a6972e36bb511f9a102f1d9a7e1ce94dd206a6", + "sha256:c5c1466be2a2ebdf7c5450dd5d980cc87c8ba6976fb82582fea18823da6fa362", + "sha256:eb0d4f250a7711b67ad513fde67e8870109e5ce590a801c3722580fe98c33a99", + "sha256:facebdfe5a5af6b1588a1d26d170635ead6892d0e314477e80256ef4a8470cf3", + "sha256:fcb1bf2cc6706adae9d79c8d86478677e3bbd4ced796ccad106fd4776d395fea" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==0.7.2" + "version": "==0.8.0" }, "six": { "hashes": [ @@ -2072,11 +2222,11 @@ }, "sqlparse": { "hashes": [ - "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", - "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e" + "sha256:9e37b35e16d1cc652a2545f0997c1deb23ea28fa1f3eefe609eee3063c3b105f", + "sha256:e99bc85c78160918c3e1d9230834ab8d80fc06c59d03f8db2618f65f65dda55e" ], "markers": "python_version >= '3.8'", - "version": "==0.5.1" + "version": "==0.5.2" }, "types-cryptography": { "hashes": [ @@ -2155,6 +2305,9 @@ "version": "==4.12.2" }, "urllib3": { + "extras": [ + "socks" + ], "hashes": [ "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" @@ -2164,11 +2317,11 @@ }, "virtualenv": { "hashes": [ - "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba", - "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4" + "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0", + "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa" ], "markers": "python_version >= '3.8'", - "version": "==20.27.1" + "version": "==20.28.0" } } } diff --git a/api-schema.yaml b/api-schema.yaml index 1af9d35c5..e278cf2aa 100644 --- a/api-schema.yaml +++ b/api-schema.yaml @@ -4,35 +4,23 @@ info: version: 1.0.0 description: Carbure paths: - /api/entities/{id}/enable/: + /api/auth/activate/: post: - operationId: entities_enable_create - parameters: - - in: query - name: entity_id - schema: - type: integer - description: The id of the admin entity enabling the company - required: true - - in: path - name: id - schema: - type: integer - description: A unique integer value identifying this Entity. - required: true + operationId: auth_activate_create tags: - - entities + - auth requestBody: content: application/json: schema: - $ref: "#/components/schemas/EmptyResponse" + $ref: "#/components/schemas/ActivateAccountRequest" application/x-www-form-urlencoded: schema: - $ref: "#/components/schemas/EmptyResponse" + $ref: "#/components/schemas/ActivateAccountRequest" multipart/form-data: schema: - $ref: "#/components/schemas/EmptyResponse" + $ref: "#/components/schemas/ActivateAccountRequest" + required: true security: - cookieAuth: [] - basicAuth: [] @@ -42,93 +30,162 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/EmptyResponse" + $ref: "#/components/schemas/ActivateResponse" + examples: + SuccessExample: + value: + status: success + summary: A successful activation + description: The account was successfully activated. description: "" - /api/resources/biofuels: - get: - operationId: resources_biofuels_list - parameters: - - in: query - name: query - schema: - type: string - description: Search within the fields `name`, `name_en`, and `code` + "400": + content: + application/json: + schema: + message: Could not activate user account + examples: + BadRequest: + value: + message: Could not activate user account + summary: Activation failed + description: Bad request - missing fields. + /api/auth/login/: + post: + operationId: auth_login_create tags: - - resources + - auth + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserLoginRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/UserLoginRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/UserLoginRequest" + required: true security: - cookieAuth: [] - basicAuth: [] + - {} responses: "200": content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/Biofuel" - description: "" - /api/resources/certificates: + status: success + examples: + SuccessExample: + value: + status: success + summary: A successful activation + description: The account was successfully activated. + description: Request successful. + "400": + content: + application/json: + schema: + message: Invalid login or password | Account not activated + examples: + BadRequest: + value: + message: Invalid login or password | Account not activated + summary: login failed + description: Bad request - missing fields. + /api/auth/logout/: get: - operationId: resources_certificates_list - parameters: - - in: query - name: query - schema: - type: string - description: Search within the fields `certificate_id` and `certificate_holder` + operationId: auth_logout_retrieve tags: - - resources + - auth security: - cookieAuth: [] - basicAuth: [] + - {} responses: "200": content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/GenericCertificate" + status: success + examples: + ExampleResponse.: + value: + status: success + summary: Example response. + description: Request successful. + /api/auth/register/: + post: + operationId: auth_register_create + tags: + - auth + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserCreationRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/UserCreationRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/UserCreationRequest" + required: true + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/UserCreation" + examples: + ExampleResponse.: + value: + status: success + summary: Example response. description: "" - /api/resources/countries: - get: - operationId: resources_countries_list - parameters: - - in: query - name: query - schema: - type: string - description: Search within the fields `name`, `name_en` and `code_pays` + /api/auth/request-activation-link/: + post: + operationId: auth_request_activation_link_create tags: - - resources + - auth + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UserResendActivationLinkRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/UserResendActivationLinkRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/UserResendActivationLinkRequest" + required: true security: - cookieAuth: [] - basicAuth: [] + - {} responses: "200": content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/Country" + $ref: "#/components/schemas/UserCreation" + examples: + ExampleResponse.: + value: + status: success + summary: Example response. description: "" - /api/resources/depots: + /api/auth/request-otp/: get: - operationId: resources_depots_list - parameters: - - in: query - name: public_only - schema: - type: boolean - description: Public Only - - in: query - name: query - schema: - type: string - description: Search within the fields `name`, `name_en` and `code_pays` + operationId: auth_request_otp_retrieve tags: - - resources + - auth security: - cookieAuth: [] - basicAuth: [] @@ -137,89 +194,96 @@ paths: content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/Depot" + $ref: "#/components/schemas/OtpResponse" + examples: + ExampleResponse.: + value: + valid_until: 07/03/2024, 14:09 + summary: Example response. description: "" - /api/resources/entities: - get: - operationId: resources_entities_list - parameters: - - in: query - name: entity_type - schema: - type: array - items: - type: string - description: Only keep specific entity types - - in: query - name: is_enabled - schema: - type: boolean - description: Only show enabled entities - - in: query - name: query - schema: - type: string - description: Search within the field `name` + /api/auth/request-password-reset/: + post: + operationId: auth_request_password_reset_create tags: - - resources + - auth + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RequestPasswordResetRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/RequestPasswordResetRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/RequestPasswordResetRequest" + required: true security: - cookieAuth: [] - basicAuth: [] + - {} responses: "200": content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/EntityPreview" + $ref: "#/components/schemas/UserCreation" + examples: + ExampleResponse.: + value: + status: success + summary: Example response. description: "" - /api/resources/feedstocks: - get: - operationId: resources_feedstocks_list - parameters: - - in: query - name: double_count_only - schema: - type: boolean - description: Double compte only - - in: query - name: query - schema: - type: string - description: Search within the fields `name`, `name_en` and `code` + /api/auth/reset-password/: + post: + operationId: auth_reset_password_create tags: - - resources + - auth + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ResetPasswordRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/ResetPasswordRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/ResetPasswordRequest" + required: true security: - cookieAuth: [] - basicAuth: [] + - {} responses: "200": content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/FeedStock" + $ref: "#/components/schemas/UserCreation" + examples: + ExampleResponse.: + value: + status: success + summary: Example response. description: "" - /api/resources/production-sites: - get: - operationId: resources_production_sites_list - parameters: - - in: query - name: producer_id - schema: - type: integer - description: Search within the field `producer_id` - - in: query - name: query - schema: - type: string - description: Search within the field `name` + /api/auth/verify-otp/: + post: + operationId: auth_verify_otp_create tags: - - resources + - auth + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/VerifyOTPRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/VerifyOTPRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/VerifyOTPRequest" + required: true security: - cookieAuth: [] - basicAuth: [] @@ -228,44 +292,62 @@ paths: content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/ProductionSite" + $ref: "#/components/schemas/UserCreation" + examples: + ExampleResponse.: + value: + status: success + summary: Example response. description: "" - /api/saf/clients/: + /api/double-counting/agreements/: get: - operationId: saf_clients_list + operationId: double_counting_agreements_list parameters: - in: query name: entity_id - schema: - type: string - - name: ordering - required: false - in: query - description: Which field to use when ordering the results. - schema: - type: string - - name: page - required: false - in: query - description: A page number within the paginated result set. schema: type: integer - - name: page_size + description: Entity ID + required: true + - in: query + name: order_by + schema: + type: array + items: + type: string + enum: + - -production_site + - -valid_until + - production_site + - valid_until + description: |- + Ordre + + * `production_site` - Production site + * `-production_site` - Production site (décroissant) + * `valid_until` - Valid until + * `-valid_until` - Valid until (décroissant) + explode: false + style: form + - name: ordering required: false in: query - description: Number of results to return per page. + description: Which field to use when ordering the results. schema: - type: integer + type: string - name: search required: false in: query description: A search term. schema: type: string + - in: query + name: year + schema: + type: integer + description: Year tags: - - saf + - double-counting security: - cookieAuth: [] - basicAuth: [] @@ -274,20 +356,28 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/PaginatedEntityPreviewList" + type: array + items: + $ref: "#/components/schemas/DoubleCountingApplicationPartial" description: "" - /api/saf/clients/{id}/: + /api/double-counting/agreements/{id}/: get: - operationId: saf_clients_retrieve + operationId: double_counting_agreements_retrieve parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true - in: path name: id schema: type: integer - description: A unique integer value identifying this Entity. + description: A unique integer value identifying this Certificat Double Compte. required: true tags: - - saf + - double-counting security: - cookieAuth: [] - basicAuth: [] @@ -296,11 +386,11 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/EntityPreview" + $ref: "#/components/schemas/DoubleCountingRegistrationDetails" description: "" - /api/saf/snapshot/: + /api/double-counting/agreements/agreement-admin/: get: - operationId: saf_snapshot_retrieve + operationId: double_counting_agreements_agreement_admin_retrieve parameters: - in: query name: entity_id @@ -308,14 +398,45 @@ paths: type: integer description: Entity ID required: true + - in: query + name: order_by + schema: + type: array + items: + type: string + enum: + - -production_site + - -valid_until + - production_site + - valid_until + description: |- + Ordre + + * `production_site` - Production site + * `-production_site` - Production site (décroissant) + * `valid_until` - Valid until + * `-valid_until` - Valid until (décroissant) + explode: false + style: form + - name: ordering + required: false + in: query + description: Which field to use when ordering the results. + schema: + type: string + - name: search + required: false + in: query + description: A search term. + schema: + type: string - in: query name: year schema: type: integer description: Year - required: true tags: - - saf + - double-counting security: - cookieAuth: [] - basicAuth: [] @@ -324,132 +445,87 @@ paths: content: application/json: schema: - type: object - oneOf: - - type: object - properties: - tickets_pending: - type: integer - tickets_accepted: - type: integer - required: - - tickets_pending - - tickets_accepted - - type: object - properties: - ticket_sources_available: - type: integer - ticket_sources_history: - type: integer - tickets_assigned: - type: integer - tickets_assigned_pending: - type: integer - tickets_assigned_accepted: - type: integer - tickets_assigned_rejected: - type: integer - tickets_received: - type: integer - tickets_received_pending: - type: integer - tickets_received_accepted: - type: integer - required: - - ticket_sources_available - - ticket_sources_history - - tickets_assigned - - tickets_assigned_pending - - tickets_assigned_accepted - - tickets_assigned_rejected - - tickets_received - - tickets_received_pending - - tickets_received_accepted - examples: - ExampleOfFiltersResponse.: - value: - tickets_pending: 5 - tickets_accepted: 10 - ...: ... - summary: Example of filters response. - description: "" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" + $ref: "#/components/schemas/AgreementLists" description: "" - /api/saf/ticket-sources/: + /api/double-counting/agreements/agreement-public/: get: - operationId: saf_ticket_sources_list + operationId: double_counting_agreements_agreement_public_list parameters: - in: query - name: clients + name: order_by schema: type: array items: type: string - description: Les valeurs multiples doivent être séparées par des virgules. + enum: + - -production_site + - -valid_until + - production_site + - valid_until + description: |- + Ordre + + * `production_site` - Production site + * `-production_site` - Production site (décroissant) + * `valid_until` - Valid until + * `-valid_until` - Valid until (décroissant) explode: false style: form - - in: query - name: countries_of_origin + - name: ordering + required: false + in: query + description: Which field to use when ordering the results. schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: delivery_sites + type: string + - name: search + required: false + in: query + description: A search term. schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form + type: string + tags: + - double-counting + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/DoubleCountingRegistrationPublic" + description: "" + /api/double-counting/agreements/export/: + get: + operationId: double_counting_agreements_export_retrieve + parameters: - in: query name: entity_id schema: - type: number + type: integer + description: Entity ID required: true - in: query - name: feedstocks - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: order + name: order_by schema: type: array items: type: string enum: - - -feedstock - - -ghg_reduction - - -period - - -volume - - feedstock - - ghg_reduction - - period - - volume + - -production_site + - -valid_until + - production_site + - valid_until description: |- Ordre - * `volume` - Volume - * `-volume` - Volume (décroissant) - * `period` - Period - * `-period` - Period (décroissant) - * `feedstock` - Feedstock - * `-feedstock` - Feedstock (décroissant) - * `ghg_reduction` - Ghg reduction - * `-ghg_reduction` - Ghg reduction (décroissant) + * `production_site` - Production site + * `-production_site` - Production site (décroissant) + * `valid_until` - Valid until + * `-valid_until` - Valid until (décroissant) explode: false style: form - name: ordering @@ -458,76 +534,36 @@ paths: description: Which field to use when ordering the results. schema: type: string - - name: page - required: false - in: query - description: A page number within the paginated result set. - schema: - type: integer - - name: page_size - required: false - in: query - description: Number of results to return per page. - schema: - type: integer - - in: query - name: periods - schema: - type: array - items: - type: integer - maximum: 2147483647 - minimum: -2147483648 - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: production_sites - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - name: search required: false in: query description: A search term. schema: type: string - - in: query - name: status - schema: - type: string - - in: query - name: suppliers - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - in: query name: year schema: type: integer + description: Year tags: - - saf + - double-counting security: - cookieAuth: [] - basicAuth: [] responses: "200": content: - application/json: + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: - $ref: "#/components/schemas/PaginatedSafTicketSourceList" - description: "" - /api/saf/ticket-sources/{id}/: - get: - operationId: saf_ticket_sources_retrieve + type: string + examples: + ExampleOfExportResponse.: + value: csv file.csv + summary: Example of export response. + description: "" + /api/double-counting/applications/{id}/: + get: + operationId: double_counting_applications_retrieve parameters: - in: query name: entity_id @@ -539,10 +575,10 @@ paths: name: id schema: type: integer - description: A unique integer value identifying this Tickets source SAF. + description: A unique integer value identifying this Dossier Double Compte. required: true tags: - - saf + - double-counting security: - cookieAuth: [] - basicAuth: [] @@ -551,11 +587,43 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SafTicketSourceDetails" + $ref: "#/components/schemas/DoubleCountingApplication" description: "" - /api/saf/ticket-sources/{id}/assign/: + /api/double-counting/applications/{id}/export/: + get: + operationId: double_counting_applications_export_retrieve + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Dossier Double Compte. + required: true + tags: + - double-counting + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/force-download: + schema: + type: string + examples: + ExampleOfExportResponse.: + value: csv file.* + summary: Example of export response. + description: "" + /api/double-counting/applications/{id}/update-approved-quotas/: post: - operationId: saf_ticket_sources_assign_create + operationId: double_counting_applications_update_approved_quotas_create parameters: - in: query name: entity_id @@ -567,21 +635,21 @@ paths: name: id schema: type: integer - description: A unique integer value identifying this Tickets source SAF. + description: A unique integer value identifying this Dossier Double Compte. required: true tags: - - saf + - double-counting requestBody: content: application/json: schema: - $ref: "#/components/schemas/SafTicketSourceAssignment" + $ref: "#/components/schemas/UpdatedQuotasRequest" application/x-www-form-urlencoded: schema: - $ref: "#/components/schemas/SafTicketSourceAssignment" + $ref: "#/components/schemas/UpdatedQuotasRequest" multipart/form-data: schema: - $ref: "#/components/schemas/SafTicketSourceAssignment" + $ref: "#/components/schemas/UpdatedQuotasRequest" required: true security: - cookieAuth: [] @@ -591,279 +659,219 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SafTicketSourceAssignment" + $ref: "#/components/schemas/Response" examples: - ExampleOfAssignResponse.: - value: {} - summary: Example of assign response. + ExampleOfResponse.: + value: + status: success + summary: Example of response. description: "" - /api/saf/ticket-sources/export/: - get: - operationId: saf_ticket_sources_export_retrieve + /api/double-counting/applications/add/: + post: + operationId: double_counting_applications_add_create parameters: - - in: query - name: clients - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: countries_of_origin - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: delivery_sites - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - in: query name: entity_id schema: - type: number + type: integer + description: Entity ID required: true + tags: + - double-counting + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DoubleCountingAdminAddRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/DoubleCountingAdminAddRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/DoubleCountingAdminAddRequest" + required: true + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Response" + examples: + ExampleOfResponse.: + value: + status: success + summary: Example of response. + description: "" + /api/double-counting/applications/approve/: + post: + operationId: double_counting_applications_approve_create + parameters: - in: query - name: feedstocks + name: entity_id schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form + type: integer + description: Entity ID + required: true + tags: + - double-counting + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ApprouveDoubleCountingRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/ApprouveDoubleCountingRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/ApprouveDoubleCountingRequest" + required: true + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Response" + examples: + ExampleOfResponse.: + value: + status: success + summary: Example of response. + description: "" + /api/double-counting/applications/check-admin-files/: + post: + operationId: double_counting_applications_check_admin_files_create + parameters: - in: query - name: order + name: entity_id schema: - type: array - items: - type: string - enum: - - -feedstock - - -ghg_reduction - - -period - - -volume - - feedstock - - ghg_reduction - - period - - volume - description: |- - Ordre - - * `volume` - Volume - * `-volume` - Volume (décroissant) - * `period` - Period - * `-period` - Period (décroissant) - * `feedstock` - Feedstock - * `-feedstock` - Feedstock (décroissant) - * `ghg_reduction` - Ghg reduction - * `-ghg_reduction` - Ghg reduction (décroissant) - explode: false - style: form + type: integer + description: Entity ID + required: true - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - - in: query - name: periods - schema: - type: array - items: - type: integer - maximum: 2147483647 - minimum: -2147483648 - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: production_sites - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - name: search required: false in: query description: A search term. schema: type: string + tags: + - double-counting + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CheckAdminFileRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/CheckAdminFileRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/CheckAdminFileRequest" + required: true + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/CheckFileResponse" + description: "" + /api/double-counting/applications/check-file/: + post: + operationId: double_counting_applications_check_file_create + parameters: - in: query - name: status + name: entity_id schema: - type: string + type: integer + description: Entity ID + required: true + tags: + - double-counting + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/CheckFileResponse" + description: "" + /api/double-counting/applications/export-application/: + get: + operationId: double_counting_applications_export_application_retrieve + parameters: - in: query - name: suppliers + name: dca_id schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form + type: integer + description: Doublecount application ID + required: true - in: query - name: year + name: di + schema: + type: string + description: Dechet industriel + - in: query + name: entity_id schema: type: integer + description: Entity ID + required: true tags: - - saf + - double-counting security: - cookieAuth: [] - basicAuth: [] responses: "200": content: - application/vnd.ms-excel: + application/vnd.openxmlformats-officedocument.wordprocessingml.document: schema: type: string examples: ExampleOfExportResponse.: - value: csv file.csv + value: file.docx summary: Example of export response. description: "" - /api/saf/ticket-sources/filters/: + /api/double-counting/applications/list-admin/: get: - operationId: saf_ticket_sources_filters_retrieve + operationId: double_counting_applications_list_admin_retrieve parameters: - - in: query - name: clients - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: countries_of_origin - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: delivery_sites - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - in: query name: entity_id - schema: - type: number - required: true - - in: query - name: feedstocks - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: filter - schema: - type: string - description: Filter string to apply - - in: query - name: order - schema: - type: array - items: - type: string - enum: - - -feedstock - - -ghg_reduction - - -period - - -volume - - feedstock - - ghg_reduction - - period - - volume - description: |- - Ordre - - * `volume` - Volume - * `-volume` - Volume (décroissant) - * `period` - Period - * `-period` - Period (décroissant) - * `feedstock` - Feedstock - * `-feedstock` - Feedstock (décroissant) - * `ghg_reduction` - Ghg reduction - * `-ghg_reduction` - Ghg reduction (décroissant) - explode: false - style: form - - name: ordering - required: false - in: query - description: Which field to use when ordering the results. - schema: - type: string - - in: query - name: periods - schema: - type: array - items: - type: integer - maximum: 2147483647 - minimum: -2147483648 - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: production_sites - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - name: search - required: false - in: query - description: A search term. - schema: - type: string - - in: query - name: status - schema: - type: string - - in: query - name: suppliers - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: year schema: type: integer + description: Entity ID + required: true tags: - - saf + - double-counting security: - cookieAuth: [] - basicAuth: [] @@ -872,22 +880,11 @@ paths: content: application/json: schema: - type: array - items: - type: string - examples: - ExampleOfFiltersResponse.: - value: - - SHELL France - - CIM SNC - - ESSO SAF - - TMF - - TERF SAF - summary: Example of filters response. + $ref: "#/components/schemas/ApplicationListe" description: "" - /api/saf/ticket-sources/group-assign/: + /api/double-counting/applications/reject/: post: - operationId: saf_ticket_sources_group_assign_create + operationId: double_counting_applications_reject_create parameters: - in: query name: entity_id @@ -896,18 +893,18 @@ paths: description: Entity ID required: true tags: - - saf + - double-counting requestBody: content: application/json: schema: - $ref: "#/components/schemas/SafTicketSourceGroupAssignment" + $ref: "#/components/schemas/RejectDoubleCountingRequest" application/x-www-form-urlencoded: schema: - $ref: "#/components/schemas/SafTicketSourceGroupAssignment" + $ref: "#/components/schemas/RejectDoubleCountingRequest" multipart/form-data: schema: - $ref: "#/components/schemas/SafTicketSourceGroupAssignment" + $ref: "#/components/schemas/RejectDoubleCountingRequest" required: true security: - cookieAuth: [] @@ -917,153 +914,109 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/GroupAssignmentResponse" + $ref: "#/components/schemas/Response" + examples: + ExampleOfResponse.: + value: + status: success + summary: Example of response. description: "" - "400": + /api/double-counting/snapshot/: + get: + operationId: double_counting_snapshot_retrieve + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + tags: + - double-counting + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": content: application/json: schema: - $ref: "#/components/schemas/ErrorResponse" + $ref: "#/components/schemas/ApplicationSnapshot" description: "" - /api/saf/tickets/: - get: - operationId: saf_tickets_list + /api/entities/{id}/enable/: + post: + operationId: entities_enable_create parameters: - - in: query - name: clients - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: countries_of_origin - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - in: query name: entity_id schema: - type: number + type: integer + description: The id of the admin entity enabling the company + required: true + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Entity. required: true + tags: + - entities + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/EmptyResponseRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/EmptyResponseRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/EmptyResponseRequest" + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/EmptyResponse" + description: "" + /api/resources/biofuels: + get: + operationId: resources_biofuels_list + parameters: - in: query - name: feedstocks + name: query schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form + type: string + description: Search within the fields `name`, `name_en`, and `code` + tags: + - resources + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Biofuel" + description: "" + /api/resources/certificates: + get: + operationId: resources_certificates_list + parameters: - in: query - name: order - schema: - type: array - items: - type: string - enum: - - -client - - -created_at - - -feedstock - - -ghg_reduction - - -period - - -suppliers - - -volume - - client - - created_at - - feedstock - - ghg_reduction - - period - - suppliers - - volume - description: |- - Ordre - - * `client` - Client - * `-client` - Client (décroissant) - * `volume` - Volume - * `-volume` - Volume (décroissant) - * `period` - Period - * `-period` - Period (décroissant) - * `feedstock` - Feedstock - * `-feedstock` - Feedstock (décroissant) - * `ghg_reduction` - Ghg reduction - * `-ghg_reduction` - Ghg reduction (décroissant) - * `created_at` - Created at - * `-created_at` - Created at (décroissant) - * `suppliers` - Suppliers - * `-suppliers` - Suppliers (décroissant) - explode: false - style: form - - name: ordering - required: false - in: query - description: Which field to use when ordering the results. - schema: - type: string - - name: page - required: false - in: query - description: A page number within the paginated result set. - schema: - type: integer - - name: page_size - required: false - in: query - description: Number of results to return per page. - schema: - type: integer - - in: query - name: periods - schema: - type: array - items: - type: integer - maximum: 2147483647 - minimum: -2147483648 - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: production_sites - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - name: search - required: false - in: query - description: A search term. - schema: - type: string - - in: query - name: status + name: query schema: type: string - - in: query - name: suppliers - schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: year - schema: - type: integer + description: Search within the fields `certificate_id` and `certificate_holder` tags: - - saf + - resources security: - cookieAuth: [] - basicAuth: [] @@ -1072,26 +1025,21 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/PaginatedSafTicketList" + type: array + items: + $ref: "#/components/schemas/GenericCertificate" description: "" - /api/saf/tickets/{id}/: + /api/resources/countries: get: - operationId: saf_tickets_retrieve + operationId: resources_countries_list parameters: - in: query - name: entity_id - schema: - type: integer - description: Entity ID - required: true - - in: path - name: id + name: query schema: - type: integer - description: A unique integer value identifying this Ticket SAF. - required: true + type: string + description: Search within the fields `name`, `name_en` and `code_pays` tags: - - saf + - resources security: - cookieAuth: [] - basicAuth: [] @@ -1100,114 +1048,89 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SafTicketDetails" + type: array + items: + $ref: "#/components/schemas/Country" description: "" - /api/saf/tickets/{id}/accept/: - post: - operationId: saf_tickets_accept_create + /api/resources/depots: + get: + operationId: resources_depots_list parameters: - in: query - name: entity_id + name: public_only schema: - type: integer - description: Entity ID - required: true - - in: path - name: id + type: boolean + description: Public Only + - in: query + name: query schema: - type: integer - description: A unique integer value identifying this Ticket SAF. - required: true + type: string + description: Search within the fields `name`, `name_en` and `code_pays` tags: - - saf - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Comment" - application/x-www-form-urlencoded: - schema: - $ref: "#/components/schemas/Comment" - multipart/form-data: - schema: - $ref: "#/components/schemas/Comment" + - resources security: - cookieAuth: [] - basicAuth: [] responses: "200": - content: - application/json: - schema: {} - description: "" - "400": content: application/json: schema: - $ref: "#/components/schemas/ErrorResponse" + type: array + items: + $ref: "#/components/schemas/Depot" description: "" - /api/saf/tickets/{id}/cancel/: - post: - operationId: saf_tickets_cancel_create + /api/resources/entities: + get: + operationId: resources_entities_list parameters: - in: query - name: entity_id + name: entity_type schema: - type: integer - description: Entity ID - required: true - - in: path - name: id + type: array + items: + type: string + description: Only keep specific entity types + - in: query + name: is_enabled schema: - type: integer - description: A unique integer value identifying this Ticket SAF. - required: true + type: boolean + description: Only show enabled entities + - in: query + name: query + schema: + type: string + description: Search within the field `name` tags: - - saf - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Comment" - application/x-www-form-urlencoded: - schema: - $ref: "#/components/schemas/Comment" - multipart/form-data: - schema: - $ref: "#/components/schemas/Comment" + - resources security: - cookieAuth: [] - basicAuth: [] responses: "200": - content: - application/json: - schema: {} - description: "" - "400": content: application/json: schema: - $ref: "#/components/schemas/ErrorResponse" + type: array + items: + $ref: "#/components/schemas/EntityPreview" description: "" - /api/saf/tickets/{id}/credit-source/: + /api/resources/feedstocks: get: - operationId: saf_tickets_credit_source_retrieve + operationId: resources_feedstocks_list parameters: - in: query - name: entity_id + name: double_count_only schema: - type: integer - description: Entity ID - required: true - - in: path - name: id + type: boolean + description: Double compte only + - in: query + name: query schema: - type: integer - description: A unique integer value identifying this Ticket SAF. - required: true + type: string + description: Search within the fields `name`, `name_en` and `code` tags: - - saf + - resources security: - cookieAuth: [] - basicAuth: [] @@ -1216,42 +1139,72 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SafTicket" - examples: - ExampleOfCreditResponse.: - value: - status: success - summary: Example of credit response. + type: array + items: + $ref: "#/components/schemas/FeedStock" description: "" - /api/saf/tickets/{id}/reject/: - post: - operationId: saf_tickets_reject_create + /api/resources/production-sites: + get: + operationId: resources_production_sites_list parameters: - in: query - name: entity_id + name: producer_id schema: type: integer - description: Entity ID - required: true - - in: path - name: id + description: Search within the field `producer_id` + - in: query + name: query schema: - type: integer - description: A unique integer value identifying this Ticket SAF. - required: true - tags: + type: string + description: Search within the field `name` + tags: + - resources + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/ProductionSite" + description: "" + /api/saf/clients/: + get: + operationId: saf_clients_list + parameters: + - in: query + name: entity_id + schema: + type: string + - name: ordering + required: false + in: query + description: Which field to use when ordering the results. + schema: + type: string + - name: page + required: false + in: query + description: A page number within the paginated result set. + schema: + type: integer + - name: page_size + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: search + required: false + in: query + description: A search term. + schema: + type: string + tags: - saf - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Comment" - application/x-www-form-urlencoded: - schema: - $ref: "#/components/schemas/Comment" - multipart/form-data: - schema: - $ref: "#/components/schemas/Comment" security: - cookieAuth: [] - basicAuth: [] @@ -1259,7 +1212,105 @@ paths: "200": content: application/json: - schema: {} + schema: + $ref: "#/components/schemas/PaginatedEntityPreviewList" + description: "" + /api/saf/clients/{id}/: + get: + operationId: saf_clients_retrieve + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Entity. + required: true + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/EntityPreview" + description: "" + /api/saf/snapshot/: + get: + operationId: saf_snapshot_retrieve + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + - in: query + name: year + schema: + type: integer + description: Year + required: true + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + type: object + oneOf: + - type: object + properties: + tickets_pending: + type: integer + tickets_accepted: + type: integer + required: + - tickets_pending + - tickets_accepted + - type: object + properties: + ticket_sources_available: + type: integer + ticket_sources_history: + type: integer + tickets_assigned: + type: integer + tickets_assigned_pending: + type: integer + tickets_assigned_accepted: + type: integer + tickets_assigned_rejected: + type: integer + tickets_received: + type: integer + tickets_received_pending: + type: integer + tickets_received_accepted: + type: integer + required: + - ticket_sources_available + - ticket_sources_history + - tickets_assigned + - tickets_assigned_pending + - tickets_assigned_accepted + - tickets_assigned_rejected + - tickets_received + - tickets_received_pending + - tickets_received_accepted + examples: + ExampleOfFiltersResponse.: + value: + tickets_pending: 5 + tickets_accepted: 10 + ...: ... + summary: Example of filters response. description: "" "400": content: @@ -1267,9 +1318,9 @@ paths: schema: $ref: "#/components/schemas/ErrorResponse" description: "" - /api/saf/tickets/export/: + /api/saf/ticket-sources/: get: - operationId: saf_tickets_export_retrieve + operationId: saf_ticket_sources_list parameters: - in: query name: clients @@ -1289,6 +1340,15 @@ paths: description: Les valeurs multiples doivent être séparées par des virgules. explode: false style: form + - in: query + name: delivery_sites + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form - in: query name: entity_id schema: @@ -1310,25 +1370,17 @@ paths: items: type: string enum: - - -client - - -created_at - -feedstock - -ghg_reduction - -period - - -suppliers - -volume - - client - - created_at - feedstock - ghg_reduction - period - - suppliers - volume description: |- Ordre - * `client` - Client - * `-client` - Client (décroissant) * `volume` - Volume * `-volume` - Volume (décroissant) * `period` - Period @@ -1337,10 +1389,6 @@ paths: * `-feedstock` - Feedstock (décroissant) * `ghg_reduction` - Ghg reduction * `-ghg_reduction` - Ghg reduction (décroissant) - * `created_at` - Created at - * `-created_at` - Created at (décroissant) - * `suppliers` - Suppliers - * `-suppliers` - Suppliers (décroissant) explode: false style: form - name: ordering @@ -1349,6 +1397,18 @@ paths: description: Which field to use when ordering the results. schema: type: string + - name: page + required: false + in: query + description: A page number within the paginated result set. + schema: + type: integer + - name: page_size + required: false + in: query + description: Number of results to return per page. + schema: + type: integer - in: query name: periods schema: @@ -1379,13 +1439,20 @@ paths: name: status schema: type: string + enum: + - AVAILABLE + - HISTORY + description: |- + * `HISTORY` - HISTORY + * `AVAILABLE` - AVAILABLE - in: query name: suppliers schema: type: array items: type: string - description: Les valeurs multiples doivent être séparées par des virgules. + minLength: 1 + description: Comma-separated list of supplier names explode: false style: form - in: query @@ -1400,45 +1467,267 @@ paths: responses: "200": content: - application/vnd.ms-excel: + application/json: schema: - type: string - examples: - ExampleOfExportResponse.: - value: csv file.csv - summary: Example of export response. + $ref: "#/components/schemas/PaginatedSafTicketSourceList" description: "" - /api/saf/tickets/filters/: + /api/saf/ticket-sources/{id}/: get: - operationId: saf_tickets_filters_retrieve + operationId: saf_ticket_sources_retrieve parameters: - in: query - name: clients + name: entity_id schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form - - in: query - name: countries_of_origin + type: integer + description: Entity ID + required: true + - in: path + name: id schema: - type: array - items: - type: string - description: Les valeurs multiples doivent être séparées par des virgules. - explode: false - style: form + type: integer + description: A unique integer value identifying this Tickets source SAF. + required: true + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SafTicketSourceDetails" + description: "" + /api/saf/ticket-sources/{id}/assign/: + post: + operationId: saf_ticket_sources_assign_create + parameters: - in: query name: entity_id schema: - type: number + type: integer + description: Entity ID required: true - - in: query - name: feedstocks + - in: path + name: id schema: - type: array + type: integer + description: A unique integer value identifying this Tickets source SAF. + required: true + tags: + - saf + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SafTicketSourceAssignmentRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/SafTicketSourceAssignmentRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/SafTicketSourceAssignmentRequest" + required: true + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SafTicketSourceAssignment" + examples: + ExampleOfAssignResponse.: + value: {} + summary: Example of assign response. + description: "" + /api/saf/ticket-sources/export/: + get: + operationId: saf_ticket_sources_export_retrieve + parameters: + - in: query + name: clients + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: countries_of_origin + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: delivery_sites + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: entity_id + schema: + type: number + required: true + - in: query + name: feedstocks + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: order + schema: + type: array + items: + type: string + enum: + - -feedstock + - -ghg_reduction + - -period + - -volume + - feedstock + - ghg_reduction + - period + - volume + description: |- + Ordre + + * `volume` - Volume + * `-volume` - Volume (décroissant) + * `period` - Period + * `-period` - Period (décroissant) + * `feedstock` - Feedstock + * `-feedstock` - Feedstock (décroissant) + * `ghg_reduction` - Ghg reduction + * `-ghg_reduction` - Ghg reduction (décroissant) + explode: false + style: form + - name: ordering + required: false + in: query + description: Which field to use when ordering the results. + schema: + type: string + - in: query + name: periods + schema: + type: array + items: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: production_sites + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - name: search + required: false + in: query + description: A search term. + schema: + type: string + - in: query + name: status + schema: + type: string + enum: + - AVAILABLE + - HISTORY + description: |- + * `HISTORY` - HISTORY + * `AVAILABLE` - AVAILABLE + - in: query + name: suppliers + schema: + type: array + items: + type: string + minLength: 1 + description: Comma-separated list of supplier names + explode: false + style: form + - in: query + name: year + schema: + type: integer + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/vnd.ms-excel: + schema: + type: string + examples: + ExampleOfExportResponse.: + value: csv file.csv + summary: Example of export response. + description: "" + /api/saf/ticket-sources/filters/: + get: + operationId: saf_ticket_sources_filters_retrieve + parameters: + - in: query + name: clients + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: countries_of_origin + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: delivery_sites + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: entity_id + schema: + type: number + required: true + - in: query + name: feedstocks + schema: + type: array items: type: string description: Les valeurs multiples doivent être séparées par des virgules. @@ -1456,25 +1745,17 @@ paths: items: type: string enum: - - -client - - -created_at - -feedstock - -ghg_reduction - -period - - -suppliers - -volume - - client - - created_at - feedstock - ghg_reduction - period - - suppliers - volume description: |- Ordre - * `client` - Client - * `-client` - Client (décroissant) * `volume` - Volume * `-volume` - Volume (décroissant) * `period` - Period @@ -1483,10 +1764,6 @@ paths: * `-feedstock` - Feedstock (décroissant) * `ghg_reduction` - Ghg reduction * `-ghg_reduction` - Ghg reduction (décroissant) - * `created_at` - Created at - * `-created_at` - Created at (décroissant) - * `suppliers` - Suppliers - * `-suppliers` - Suppliers (décroissant) explode: false style: form - name: ordering @@ -1525,13 +1802,20 @@ paths: name: status schema: type: string + enum: + - AVAILABLE + - HISTORY + description: |- + * `HISTORY` - HISTORY + * `AVAILABLE` - AVAILABLE - in: query name: suppliers schema: type: array items: type: string - description: Les valeurs multiples doivent être séparées par des virgules. + minLength: 1 + description: Comma-separated list of supplier names explode: false style: form - in: query @@ -1561,9 +1845,9 @@ paths: - TERF SAF summary: Example of filters response. description: "" - /api/saf/years/: - get: - operationId: saf_years_retrieve + /api/saf/ticket-sources/group-assign/: + post: + operationId: saf_ticket_sources_group_assign_create parameters: - in: query name: entity_id @@ -1573,6 +1857,18 @@ paths: required: true tags: - saf + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SafTicketSourceGroupAssignmentRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/SafTicketSourceGroupAssignmentRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/SafTicketSourceGroupAssignmentRequest" + required: true security: - cookieAuth: [] - basicAuth: [] @@ -1581,18 +1877,7 @@ paths: content: application/json: schema: - type: array - items: - type: integer - examples: - ExampleOfFiltersResponse.: - value: - - "2020" - - "2021" - - "2022" - - "2023" - - "2024" - summary: Example of filters response. + $ref: "#/components/schemas/GroupAssignmentResponse" description: "" "400": content: @@ -1600,395 +1885,1817 @@ paths: schema: $ref: "#/components/schemas/ErrorResponse" description: "" -components: - schemas: - Biofuel: - type: object - properties: - name: - type: string - maxLength: 64 + /api/saf/tickets/: + get: + operationId: saf_tickets_list + parameters: + - in: query + name: clients + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: countries_of_origin + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: entity_id + schema: + type: number + required: true + - in: query + name: feedstocks + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: order + schema: + type: array + items: + type: string + enum: + - -client + - -created_at + - -feedstock + - -ghg_reduction + - -period + - -suppliers + - -volume + - client + - created_at + - feedstock + - ghg_reduction + - period + - suppliers + - volume + description: |- + Ordre + + * `client` - Client + * `-client` - Client (décroissant) + * `volume` - Volume + * `-volume` - Volume (décroissant) + * `period` - Period + * `-period` - Period (décroissant) + * `feedstock` - Feedstock + * `-feedstock` - Feedstock (décroissant) + * `ghg_reduction` - Ghg reduction + * `-ghg_reduction` - Ghg reduction (décroissant) + * `created_at` - Created at + * `-created_at` - Created at (décroissant) + * `suppliers` - Suppliers + * `-suppliers` - Suppliers (décroissant) + explode: false + style: form + - name: ordering + required: false + in: query + description: Which field to use when ordering the results. + schema: + type: string + - name: page + required: false + in: query + description: A page number within the paginated result set. + schema: + type: integer + - name: page_size + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - in: query + name: periods + schema: + type: array + items: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: production_sites + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - name: search + required: false + in: query + description: A search term. + schema: + type: string + - in: query + name: status + schema: + type: string + enum: + - ACCEPTED + - PENDING + - REJECTED + description: |- + * `PENDING` - En attente + * `ACCEPTED` - Accepté + * `REJECTED` - Refusé + - in: query + name: suppliers + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: year + schema: + type: integer + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/PaginatedSafTicketList" + description: "" + /api/saf/tickets/{id}/: + get: + operationId: saf_tickets_retrieve + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Ticket SAF. + required: true + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SafTicketDetails" + description: "" + /api/saf/tickets/{id}/accept/: + post: + operationId: saf_tickets_accept_create + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Ticket SAF. + required: true + tags: + - saf + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CommentRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/CommentRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/CommentRequest" + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: {} + description: "" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: "" + /api/saf/tickets/{id}/cancel/: + post: + operationId: saf_tickets_cancel_create + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Ticket SAF. + required: true + tags: + - saf + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CommentRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/CommentRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/CommentRequest" + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: {} + description: "" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: "" + /api/saf/tickets/{id}/credit-source/: + get: + operationId: saf_tickets_credit_source_retrieve + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Ticket SAF. + required: true + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SafTicket" + examples: + ExampleOfCreditResponse.: + value: + status: success + summary: Example of credit response. + description: "" + /api/saf/tickets/{id}/reject/: + post: + operationId: saf_tickets_reject_create + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this Ticket SAF. + required: true + tags: + - saf + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CommentRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/CommentRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/CommentRequest" + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: {} + description: "" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: "" + /api/saf/tickets/export/: + get: + operationId: saf_tickets_export_retrieve + parameters: + - in: query + name: clients + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: countries_of_origin + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: entity_id + schema: + type: number + required: true + - in: query + name: feedstocks + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: order + schema: + type: array + items: + type: string + enum: + - -client + - -created_at + - -feedstock + - -ghg_reduction + - -period + - -suppliers + - -volume + - client + - created_at + - feedstock + - ghg_reduction + - period + - suppliers + - volume + description: |- + Ordre + + * `client` - Client + * `-client` - Client (décroissant) + * `volume` - Volume + * `-volume` - Volume (décroissant) + * `period` - Period + * `-period` - Period (décroissant) + * `feedstock` - Feedstock + * `-feedstock` - Feedstock (décroissant) + * `ghg_reduction` - Ghg reduction + * `-ghg_reduction` - Ghg reduction (décroissant) + * `created_at` - Created at + * `-created_at` - Created at (décroissant) + * `suppliers` - Suppliers + * `-suppliers` - Suppliers (décroissant) + explode: false + style: form + - name: ordering + required: false + in: query + description: Which field to use when ordering the results. + schema: + type: string + - in: query + name: periods + schema: + type: array + items: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: production_sites + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - name: search + required: false + in: query + description: A search term. + schema: + type: string + - in: query + name: status + schema: + type: string + enum: + - ACCEPTED + - PENDING + - REJECTED + description: |- + * `PENDING` - En attente + * `ACCEPTED` - Accepté + * `REJECTED` - Refusé + - in: query + name: suppliers + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: year + schema: + type: integer + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/vnd.ms-excel: + schema: + type: string + examples: + ExampleOfExportResponse.: + value: csv file.csv + summary: Example of export response. + description: "" + /api/saf/tickets/filters/: + get: + operationId: saf_tickets_filters_retrieve + parameters: + - in: query + name: clients + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: countries_of_origin + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: entity_id + schema: + type: number + required: true + - in: query + name: feedstocks + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: filter + schema: + type: string + description: Filter string to apply + - in: query + name: order + schema: + type: array + items: + type: string + enum: + - -client + - -created_at + - -feedstock + - -ghg_reduction + - -period + - -suppliers + - -volume + - client + - created_at + - feedstock + - ghg_reduction + - period + - suppliers + - volume + description: |- + Ordre + + * `client` - Client + * `-client` - Client (décroissant) + * `volume` - Volume + * `-volume` - Volume (décroissant) + * `period` - Period + * `-period` - Period (décroissant) + * `feedstock` - Feedstock + * `-feedstock` - Feedstock (décroissant) + * `ghg_reduction` - Ghg reduction + * `-ghg_reduction` - Ghg reduction (décroissant) + * `created_at` - Created at + * `-created_at` - Created at (décroissant) + * `suppliers` - Suppliers + * `-suppliers` - Suppliers (décroissant) + explode: false + style: form + - name: ordering + required: false + in: query + description: Which field to use when ordering the results. + schema: + type: string + - in: query + name: periods + schema: + type: array + items: + type: integer + maximum: 2147483647 + minimum: -2147483648 + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: production_sites + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - name: search + required: false + in: query + description: A search term. + schema: + type: string + - in: query + name: status + schema: + type: string + enum: + - ACCEPTED + - PENDING + - REJECTED + description: |- + * `PENDING` - En attente + * `ACCEPTED` - Accepté + * `REJECTED` - Refusé + - in: query + name: suppliers + schema: + type: array + items: + type: string + description: Les valeurs multiples doivent être séparées par des virgules. + explode: false + style: form + - in: query + name: year + schema: + type: integer + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + type: array + items: + type: string + examples: + ExampleOfFiltersResponse.: + value: + - SHELL France + - CIM SNC + - ESSO SAF + - TMF + - TERF SAF + summary: Example of filters response. + description: "" + /api/saf/years/: + get: + operationId: saf_years_retrieve + parameters: + - in: query + name: entity_id + schema: + type: integer + description: Entity ID + required: true + tags: + - saf + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + type: array + items: + type: integer + examples: + ExampleOfFiltersResponse.: + value: + - "2020" + - "2021" + - "2022" + - "2023" + - "2024" + summary: Example of filters response. + description: "" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: "" + /api/user/: + get: + operationId: user_retrieve + tags: + - user + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/UserSettingsResponseSeriaizer" + description: "" + /api/user/request-access: + post: + operationId: user_request_access_create + tags: + - user + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RequestAccessRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/RequestAccessRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/RequestAccessRequest" + required: true + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ResponseSuccess" + examples: + ExampleOfResponse.: + value: + status: success + summary: Example of response. + description: "" + /api/user/revoke-access: + post: + operationId: user_revoke_access_create + tags: + - user + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RevokeAccessRequest" + application/x-www-form-urlencoded: + schema: + $ref: "#/components/schemas/RevokeAccessRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/RevokeAccessRequest" + required: true + security: + - cookieAuth: [] + - basicAuth: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ResponseSuccess" + examples: + ExampleOfResponse.: + value: + status: success + summary: Example of response. + description: "" +components: + schemas: + ActivateAccountRequest: + type: object + properties: + uidb64: + type: string + minLength: 1 + token: + type: string + minLength: 1 + invite: + type: integer + required: + - token + - uidb64 + ActivateResponse: + type: object + properties: + message: + type: string + token: + type: string + required: + - message + AgreementLists: + type: object + properties: + active: + type: array + items: + $ref: "#/components/schemas/DoubleCountingRegistration" + incoming: + type: array + items: + $ref: "#/components/schemas/DoubleCountingRegistration" + expired: + type: array + items: + $ref: "#/components/schemas/DoubleCountingRegistration" + required: + - active + - expired + - incoming + ApplicationListe: + type: object + properties: + rejected: + type: array + items: + $ref: "#/components/schemas/DoubleCountingApplicationPartial" + pending: + type: array + items: + $ref: "#/components/schemas/DoubleCountingApplicationPartial" + required: + - pending + - rejected + ApplicationSnapshot: + type: object + properties: + applications_pending: + type: integer + applications_rejected: + type: integer + agreements_incoming: + type: integer + agreements_active: + type: integer + agreements_expired: + type: integer + required: + - agreements_active + - agreements_expired + - agreements_incoming + - applications_pending + - applications_rejected + ApprouveDoubleCountingRequest: + type: object + properties: + dca_id: + type: integer + required: + - dca_id + Biofuel: + type: object + properties: + name: + type: string + maxLength: 64 + name_en: + type: string + maxLength: 64 + code: + type: string + maxLength: 16 + required: + - code + - name + - name_en + CarbureLotPublic: + type: object + properties: + id: + type: integer + readOnly: true + year: + type: integer + maximum: 2147483647 + minimum: -2147483648 + period: + type: integer + maximum: 2147483647 + minimum: -2147483648 + carbure_id: + type: string + maxLength: 64 + carbure_producer: + allOf: + - $ref: "#/components/schemas/EntitySummary" + readOnly: true + unknown_producer: + type: string + nullable: true + maxLength: 64 + carbure_production_site: + allOf: + - $ref: "#/components/schemas/ProductionSite" + readOnly: true + unknown_production_site: + type: string + nullable: true + maxLength: 64 + production_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + production_site_commissioning_date: + type: string + format: date + nullable: true + production_site_certificate: + type: string + nullable: true + maxLength: 64 + production_site_double_counting_certificate: + type: string + nullable: true + maxLength: 64 + carbure_supplier: + allOf: + - $ref: "#/components/schemas/EntitySummary" + readOnly: true + unknown_supplier: + type: string + nullable: true + maxLength: 64 + supplier_certificate: + type: string + nullable: true + maxLength: 64 + supplier_certificate_type: + type: string + nullable: true + maxLength: 64 + transport_document_type: + $ref: "#/components/schemas/TransportDocumentTypeEnum" + transport_document_reference: + type: string + nullable: true + maxLength: 128 + carbure_client: + allOf: + - $ref: "#/components/schemas/EntitySummary" + readOnly: true + unknown_client: + type: string + nullable: true + maxLength: 64 + dispatch_date: + type: string + format: date + nullable: true + carbure_dispatch_site: + allOf: + - $ref: "#/components/schemas/Depot" + readOnly: true + unknown_dispatch_site: + type: string + nullable: true + maxLength: 64 + dispatch_site_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + delivery_date: + type: string + format: date + nullable: true + carbure_delivery_site: + allOf: + - $ref: "#/components/schemas/Depot" + readOnly: true + unknown_delivery_site: + type: string + nullable: true + maxLength: 64 + delivery_site_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + delivery_type: + $ref: "#/components/schemas/DeliveryTypeEnum" + lot_status: + $ref: "#/components/schemas/LotStatusEnum" + correction_status: + $ref: "#/components/schemas/CorrectionStatusEnum" + volume: + type: number + format: double + weight: + type: number + format: double + lhv_amount: + type: number + format: double + feedstock: + allOf: + - $ref: "#/components/schemas/FeedStock" + readOnly: true + biofuel: + allOf: + - $ref: "#/components/schemas/Biofuel" + readOnly: true + country_of_origin: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + eec: + type: number + format: double + el: + type: number + format: double + ep: + type: number + format: double + etd: + type: number + format: double + eu: + type: number + format: double + esca: + type: number + format: double + eccs: + type: number + format: double + eccr: + type: number + format: double + eee: + type: number + format: double + ghg_total: + type: number + format: double + ghg_reference: + type: number + format: double + ghg_reduction: + type: number + format: double + ghg_reference_red_ii: + type: number + format: double + ghg_reduction_red_ii: + type: number + format: double + free_field: + type: string + nullable: true + added_by: + allOf: + - $ref: "#/components/schemas/EntitySummary" + readOnly: true + created_at: + type: string + format: date-time + readOnly: true + nullable: true + carbure_vendor: + allOf: + - $ref: "#/components/schemas/EntitySummary" + readOnly: true + vendor_certificate: + type: string + nullable: true + maxLength: 64 + vendor_certificate_type: + type: string + nullable: true + maxLength: 64 + data_reliability_score: + type: string + maxLength: 1 + required: + - added_by + - biofuel + - carbure_client + - carbure_delivery_site + - carbure_dispatch_site + - carbure_producer + - carbure_production_site + - carbure_supplier + - carbure_vendor + - country_of_origin + - created_at + - delivery_site_country + - dispatch_site_country + - feedstock + - id + - period + - production_country + - year + CategoryEnum: + enum: + - CONV + - ANN-IX-A + - ANN-IX-B + - TALLOL + - OTHER + type: string + description: |- + * `CONV` - Conventionnel + * `ANN-IX-A` - ANNEXE IX-A + * `ANN-IX-B` - ANNEXE IX-B + * `TALLOL` - Tallol + * `OTHER` - Autre + CertificateTypeEnum: + enum: + - SYSTEME_NATIONAL + - ISCC + - REDCERT + - 2BS + type: string + description: |- + * `SYSTEME_NATIONAL` - SYSTEME_NATIONAL + * `ISCC` - ISCC + * `REDCERT` - REDCERT + * `2BS` - 2BS + CheckAdminFileRequest: + type: object + properties: + files: + type: array + items: + type: string + format: binary + required: + - files + CheckFileResponse: + type: object + properties: + file: + $ref: "#/components/schemas/File" + checked_at: + type: string + format: date-time + required: + - checked_at + - file + CommentRequest: + type: object + properties: + comment: + type: string + minLength: 1 + CorrectionStatusEnum: + enum: + - NO_PROBLEMO + - IN_CORRECTION + - FIXED + type: string + description: |- + * `NO_PROBLEMO` - NO_PROBLEMO + * `IN_CORRECTION` - IN_CORRECTION + * `FIXED` - FIXED + Country: + type: object + properties: + name: + type: string + maxLength: 128 name_en: type: string - maxLength: 64 - code: + maxLength: 128 + code_pays: + type: string + maxLength: 64 + is_in_europe: + type: boolean + required: + - code_pays + - name + - name_en + DeliveryTypeEnum: + enum: + - UNKNOWN + - RFC + - STOCK + - BLENDING + - EXPORT + - TRADING + - PROCESSING + - DIRECT + - FLUSHED + - CONSUMPTION + type: string + description: |- + * `UNKNOWN` - UNKNOWN + * `RFC` - RFC + * `STOCK` - STOCK + * `BLENDING` - BLENDING + * `EXPORT` - EXPORT + * `TRADING` - TRADING + * `PROCESSING` - PROCESSING + * `DIRECT` - DIRECT + * `FLUSHED` - FLUSHED + * `CONSUMPTION` - CONSUMPTION + Depot: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 128 + city: + type: string + maxLength: 128 + customs_id: + type: string + maxLength: 32 + country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + site_type: + $ref: "#/components/schemas/SiteTypeEnum" + address: + type: string + maxLength: 256 + postal_code: + type: string + maxLength: 32 + gps_coordinates: + type: string + nullable: true + maxLength: 64 + accise: + type: string + maxLength: 32 + electrical_efficiency: + type: number + format: double + maximum: 1 + minimum: 0 + nullable: true + description: Entre 0 et 1 + thermal_efficiency: + type: number + format: double + maximum: 1 + minimum: 0 + nullable: true + description: Entre 0 et 1 + useful_temperature: + type: number + format: double + nullable: true + description: En degrés Celsius + required: + - country + - id + - name + DoubleCountingAdminAddRequest: + type: object + properties: + certificate_id: + type: string + entity_id: + type: integer + producer_id: + type: integer + production_site_id: + type: integer + should_replace: + type: boolean + default: false + file: type: string - maxLength: 16 + format: binary required: - - code - - name - - name_en - CarbureLotPublic: + - entity_id + - file + - producer_id + - production_site_id + DoubleCountingAgreementStatus: + enum: + - ACTIVE + - EXPIRED + - EXPIRES_SOON + - INCOMING + type: string + description: |- + * `ACTIVE` - ACTIVE + * `EXPIRED` - EXPIRED + * `EXPIRES_SOON` - EXPIRES_SOON + * `INCOMING` - INCOMING + DoubleCountingApplication: type: object properties: id: type: integer readOnly: true - year: - type: integer - maximum: 2147483647 - minimum: -2147483648 - period: + created_at: + type: string + format: date-time + readOnly: true + producer: + allOf: + - $ref: "#/components/schemas/Entity" + readOnly: true + producer_user: + type: string + format: email + title: Adresse électronique + readOnly: true + production_site: + allOf: + - $ref: "#/components/schemas/DoubleCountingProductionSite" + readOnly: true + period_start: + type: string + format: date + period_end: + type: string + format: date + status: + $ref: "#/components/schemas/DoubleCountingStatus" + sourcing: + type: array + items: + $ref: "#/components/schemas/DoubleCountingSourcing" + readOnly: true + production: + type: array + items: + $ref: "#/components/schemas/DoubleCountingProduction" + readOnly: true + documents: + type: array + items: + $ref: "#/components/schemas/DoubleCountingDocFile" + readOnly: true + required: + - created_at + - documents + - id + - period_end + - period_start + - producer + - producer_user + - production + - production_site + - sourcing + DoubleCountingApplicationPartial: + type: object + properties: + id: type: integer - maximum: 2147483647 - minimum: -2147483648 - carbure_id: + readOnly: true + created_at: type: string - maxLength: 64 - carbure_producer: + format: date-time + readOnly: true + producer: allOf: - $ref: "#/components/schemas/EntitySummary" readOnly: true - unknown_producer: + production_site: + allOf: + - $ref: "#/components/schemas/DoubleCountingProductionSite" + readOnly: true + period_start: type: string - nullable: true - maxLength: 64 - carbure_production_site: + format: date + period_end: + type: string + format: date + status: allOf: - - $ref: "#/components/schemas/ProductionSite" + - $ref: "#/components/schemas/DoubleCountingStatus" readOnly: true - unknown_production_site: + certificate_id: type: string - nullable: true - maxLength: 64 - production_country: + maxLength: 16 + agreement_id: + type: integer + readOnly: true + quotas_progression: + type: number + format: double + readOnly: true + producer_user: + type: string + format: email + title: Adresse électronique + readOnly: true + required: + - agreement_id + - certificate_id + - created_at + - id + - period_end + - period_start + - producer + - producer_user + - production_site + - quotas_progression + - status + DoubleCountingDocFile: + type: object + properties: + id: + type: integer + readOnly: true + file_name: + type: string + maxLength: 128 + file_type: + $ref: "#/components/schemas/FileTypeEnum" + required: + - id + DoubleCountingProduction: + type: object + properties: + id: + type: integer + readOnly: true + year: + type: integer + readOnly: true + biofuel: + allOf: + - $ref: "#/components/schemas/Biofuel" + readOnly: true + feedstock: + allOf: + - $ref: "#/components/schemas/FeedStock" + readOnly: true + max_production_capacity: + type: integer + readOnly: true + estimated_production: + type: integer + readOnly: true + requested_quota: + type: integer + readOnly: true + approved_quota: + type: integer + readOnly: true + required: + - approved_quota + - biofuel + - estimated_production + - feedstock + - id + - max_production_capacity + - requested_quota + - year + DoubleCountingProductionHistory: + type: object + properties: + id: + type: integer + readOnly: true + year: + type: integer + readOnly: true + biofuel: + allOf: + - $ref: "#/components/schemas/Biofuel" + readOnly: true + feedstock: + allOf: + - $ref: "#/components/schemas/FeedStock" + readOnly: true + max_production_capacity: + type: integer + readOnly: true + effective_production: + type: integer + readOnly: true + required: + - biofuel + - effective_production + - feedstock + - id + - max_production_capacity + - year + DoubleCountingProductionSite: + type: object + properties: + id: + type: integer + readOnly: true + producer: + allOf: + - $ref: "#/components/schemas/Entity" + readOnly: true + name: + type: string + maxLength: 128 + country: allOf: - $ref: "#/components/schemas/Country" readOnly: true - production_site_commissioning_date: + date_mise_en_service: type: string format: date nullable: true - production_site_certificate: + ges_option: + $ref: "#/components/schemas/GesOptionEnum" + eligible_dc: + type: boolean + dc_reference: type: string - nullable: true maxLength: 64 - production_site_double_counting_certificate: + site_siret: type: string - nullable: true maxLength: 64 - carbure_supplier: - allOf: - - $ref: "#/components/schemas/EntitySummary" - readOnly: true - unknown_supplier: + address: + type: string + maxLength: 256 + city: + type: string + maxLength: 128 + postal_code: + type: string + maxLength: 32 + gps_coordinates: type: string nullable: true maxLength: 64 - supplier_certificate: + manager_name: type: string - nullable: true maxLength: 64 - supplier_certificate_type: + manager_phone: type: string - nullable: true maxLength: 64 - transport_document_type: - $ref: "#/components/schemas/TransportDocumentTypeEnum" - transport_document_reference: + manager_email: type: string - nullable: true - maxLength: 128 - carbure_client: - allOf: - - $ref: "#/components/schemas/EntitySummary" + maxLength: 64 + inputs: + type: array + items: + $ref: "#/components/schemas/FeedStock" + readOnly: true + outputs: + type: array + items: + $ref: "#/components/schemas/Biofuel" + readOnly: true + certificates: + type: array + items: + $ref: "#/components/schemas/ProductionSiteCertificate" + readOnly: true + required: + - certificates + - country + - id + - inputs + - name + - outputs + - producer + DoubleCountingQuota: + type: object + properties: + approved_quota: + type: integer + biofuel: + $ref: "#/components/schemas/Biofuel" + feedstock: + $ref: "#/components/schemas/FeedStock" + id: + type: integer + lot_count: + type: integer + production_tonnes: + type: integer + quotas_progression: + type: integer + requested_quota: + type: integer + year: + type: integer + required: + - approved_quota + - biofuel + - feedstock + - id + - lot_count + - production_tonnes + - quotas_progression + - requested_quota + - year + DoubleCountingRegistration: + type: object + properties: + id: + type: integer readOnly: true - unknown_client: + certificate_id: type: string - nullable: true maxLength: 64 - dispatch_date: + valid_from: type: string format: date - nullable: true - carbure_dispatch_site: - allOf: - - $ref: "#/components/schemas/Depot" - readOnly: true - unknown_dispatch_site: - type: string - nullable: true - maxLength: 64 - dispatch_site_country: + producer: allOf: - - $ref: "#/components/schemas/Country" + - $ref: "#/components/schemas/EntitySummary" readOnly: true - delivery_date: + production_site: + $ref: "#/components/schemas/DoubleCountingProductionSite" + valid_until: type: string format: date - nullable: true - carbure_delivery_site: - allOf: - - $ref: "#/components/schemas/Depot" - readOnly: true - unknown_delivery_site: - type: string - nullable: true - maxLength: 64 - delivery_site_country: + status: allOf: - - $ref: "#/components/schemas/Country" + - $ref: "#/components/schemas/DoubleCountingAgreementStatus" readOnly: true - delivery_type: - $ref: "#/components/schemas/DeliveryTypeEnum" - lot_status: - $ref: "#/components/schemas/LotStatusEnum" - correction_status: - $ref: "#/components/schemas/CorrectionStatusEnum" - volume: - type: number - format: double - weight: - type: number - format: double - lhv_amount: + quotas_progression: type: number format: double - feedstock: - allOf: - - $ref: "#/components/schemas/FeedStock" readOnly: true - biofuel: - allOf: - - $ref: "#/components/schemas/Biofuel" + required: + - certificate_id + - id + - producer + - production_site + - quotas_progression + - status + - valid_from + - valid_until + DoubleCountingRegistrationDetails: + type: object + properties: + id: + type: integer readOnly: true - country_of_origin: + certificate_id: + type: string + maxLength: 64 + valid_from: + type: string + format: date + valid_until: + type: string + format: date + status: allOf: - - $ref: "#/components/schemas/Country" + - $ref: "#/components/schemas/DoubleCountingAgreementStatus" readOnly: true - eec: - type: number - format: double - el: - type: number - format: double - ep: - type: number - format: double - etd: - type: number - format: double - eu: - type: number - format: double - esca: - type: number - format: double - eccs: - type: number - format: double - eccr: - type: number - format: double - eee: - type: number - format: double - ghg_total: - type: number - format: double - ghg_reference: - type: number - format: double - ghg_reduction: - type: number - format: double - ghg_reference_red_ii: - type: number - format: double - ghg_reduction_red_ii: - type: number - format: double - free_field: + producer: type: string - nullable: true - added_by: - allOf: - - $ref: "#/components/schemas/EntitySummary" readOnly: true - created_at: + production_site: type: string - format: date-time readOnly: true - nullable: true - carbure_vendor: - allOf: - - $ref: "#/components/schemas/EntitySummary" + application: + $ref: "#/components/schemas/DoubleCountingApplication" + quotas: + type: array + items: + $ref: "#/components/schemas/DoubleCountingQuota" readOnly: true - vendor_certificate: - type: string - nullable: true - maxLength: 64 - vendor_certificate_type: - type: string - nullable: true - maxLength: 64 - data_reliability_score: - type: string - maxLength: 1 required: - - added_by - - biofuel - - carbure_client - - carbure_delivery_site - - carbure_dispatch_site - - carbure_producer - - carbure_production_site - - carbure_supplier - - carbure_vendor - - country_of_origin - - created_at - - delivery_site_country - - dispatch_site_country - - feedstock + - application + - certificate_id - id - - period - - production_country - - year - CategoryEnum: - enum: - - CONV - - ANN-IX-A - - ANN-IX-B - - TALLOL - - OTHER - type: string - description: |- - * `CONV` - Conventionnel - * `ANN-IX-A` - ANNEXE IX-A - * `ANN-IX-B` - ANNEXE IX-B - * `TALLOL` - Tallol - * `OTHER` - Autre - CertificateTypeEnum: - enum: - - SYSTEME_NATIONAL - - ISCC - - REDCERT - - 2BS - type: string - description: |- - * `SYSTEME_NATIONAL` - SYSTEME_NATIONAL - * `ISCC` - ISCC - * `REDCERT` - REDCERT - * `2BS` - 2BS - Comment: + - producer + - production_site + - quotas + - status + - valid_from + - valid_until + DoubleCountingRegistrationPublic: type: object properties: - comment: + production_site: + allOf: + - $ref: "#/components/schemas/FieldData" + readOnly: true + certificate_id: type: string - CorrectionStatusEnum: - enum: - - NO_PROBLEMO - - IN_CORRECTION - - FIXED - type: string - description: |- - * `NO_PROBLEMO` - NO_PROBLEMO - * `IN_CORRECTION` - IN_CORRECTION - * `FIXED` - FIXED - Country: - type: object - properties: - name: + maxLength: 64 + valid_from: type: string - maxLength: 128 - name_en: + format: date + valid_until: type: string - maxLength: 128 - code_pays: + format: date + biofuel_list: type: string - maxLength: 64 - is_in_europe: - type: boolean + readOnly: true required: - - code_pays - - name - - name_en - DeliveryTypeEnum: - enum: - - UNKNOWN - - RFC - - STOCK - - BLENDING - - EXPORT - - TRADING - - PROCESSING - - DIRECT - - FLUSHED - - CONSUMPTION - type: string - description: |- - * `UNKNOWN` - UNKNOWN - * `RFC` - RFC - * `STOCK` - STOCK - * `BLENDING` - BLENDING - * `EXPORT` - EXPORT - * `TRADING` - TRADING - * `PROCESSING` - PROCESSING - * `DIRECT` - DIRECT - * `FLUSHED` - FLUSHED - * `CONSUMPTION` - CONSUMPTION - Depot: + - biofuel_list + - certificate_id + - production_site + - valid_from + - valid_until + DoubleCountingSourcing: type: object properties: id: type: integer readOnly: true - name: - type: string - maxLength: 128 - city: - type: string - maxLength: 128 - customs_id: - type: string - maxLength: 32 - country: + year: + type: integer + readOnly: true + feedstock: + allOf: + - $ref: "#/components/schemas/FeedStock" + readOnly: true + origin_country: allOf: - $ref: "#/components/schemas/Country" readOnly: true - site_type: - $ref: "#/components/schemas/SiteTypeEnum" - address: - type: string - maxLength: 256 - postal_code: + supply_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + transit_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + metric_tonnes: + type: integer + readOnly: true + required: + - feedstock + - id + - metric_tonnes + - origin_country + - supply_country + - transit_country + - year + DoubleCountingSourcingHistory: + type: object + properties: + id: + type: integer + readOnly: true + year: + type: integer + maximum: 2147483647 + minimum: -2147483648 + feedstock: + allOf: + - $ref: "#/components/schemas/FeedStock" + readOnly: true + origin_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + supply_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + transit_country: + allOf: + - $ref: "#/components/schemas/Country" + readOnly: true + metric_tonnes: + type: integer + maximum: 2147483647 + minimum: -2147483648 + raw_material_supplier: type: string - maxLength: 32 - gps_coordinates: + maxLength: 128 + supplier_certificate_name: type: string - nullable: true maxLength: 64 - accise: - type: string - maxLength: 32 - electrical_efficiency: - type: number - format: double - maximum: 1 - minimum: 0 - nullable: true - description: Entre 0 et 1 - thermal_efficiency: - type: number - format: double - maximum: 1 - minimum: 0 - nullable: true - description: Entre 0 et 1 - useful_temperature: - type: number - format: double + supplier_certificate: + type: integer nullable: true - description: En degrés Celsius required: - - country + - feedstock - id - - name + - metric_tonnes + - origin_country + - supply_country + - transit_country + - year + DoubleCountingStatus: + enum: + - PENDING + - INPROGRESS + - REJECTED + - ACCEPTED + type: string + description: |- + * `PENDING` - PENDING + * `INPROGRESS` - INPROGRESS + * `REJECTED` - REJECTED + * `ACCEPTED` - ACCEPTED EmptyResponse: type: object properties: empty: type: string + EmptyResponseRequest: + type: object + properties: + empty: + type: string + minLength: 1 Entity: type: object properties: @@ -2071,10 +3778,13 @@ components: readOnly: true name: type: string - maxLength: 64 + readOnly: true entity_type: - $ref: "#/components/schemas/EntityTypeEnum" + allOf: + - $ref: "#/components/schemas/EntityTypeEnum" + readOnly: true required: + - entity_type - id - name EntityTypeEnum: @@ -2119,6 +3829,20 @@ components: type: string required: - message + ExtAdminPagesEnum: + enum: + - DCA + - AGRIMER + - TIRIB + - AIRLINE + - ELEC + type: string + description: |- + * `DCA` - DCA + * `AGRIMER` - AGRIMER + * `TIRIB` - TIRIB + * `AIRLINE` - AIRLINE + * `ELEC` - ELEC FeedStock: type: object properties: @@ -2139,6 +3863,129 @@ components: - code - name - name_en + FieldData: + type: object + properties: + name: + type: string + city: + type: string + address: + type: string + postal_code: + type: string + country: + type: string + required: + - address + - city + - country + - name + - postal_code + File: + type: object + properties: + file_name: + type: string + errors: + $ref: "#/components/schemas/FileErrors" + error_count: + type: integer + start_year: + type: integer + production_site: + type: string + producer_email: + type: string + format: email + production: + type: array + items: + $ref: "#/components/schemas/DoubleCountingProduction" + sourcing: + type: array + items: + $ref: "#/components/schemas/DoubleCountingSourcing" + sourcing_history: + type: array + items: + $ref: "#/components/schemas/DoubleCountingSourcingHistory" + production_history: + type: array + items: + $ref: "#/components/schemas/DoubleCountingProductionHistory" + has_dechets_industriels: + type: boolean + readOnly: true + required: + - error_count + - errors + - file_name + - has_dechets_industriels + - producer_email + - production + - production_history + - production_site + - sourcing + - sourcing_history + - start_year + FileError: + type: object + properties: + error: + type: string + is_blocking: + type: boolean + line_number: + type: integer + line_merged: + type: string + meta: + type: object + additionalProperties: {} + required: + - error + - is_blocking + - line_merged + - line_number + - meta + FileErrors: + type: object + properties: + sourcing_forecast: + type: array + items: + $ref: "#/components/schemas/FileError" + sourcing_history: + type: array + items: + $ref: "#/components/schemas/FileError" + production: + type: array + items: + $ref: "#/components/schemas/FileError" + production_history: + type: array + items: + $ref: "#/components/schemas/FileError" + global_errors: + type: array + items: + $ref: "#/components/schemas/FileError" + required: + - global_errors + - production + - production_history + - sourcing_forecast + - sourcing_history + FileTypeEnum: + enum: + - SOURCING + - DECISION + type: string + description: |- + * `SOURCING` - SOURCING + * `DECISION` - DECISION GenericCertificate: type: object properties: @@ -2213,6 +4060,13 @@ components: * `REJECTED` - REJECTED * `FROZEN` - FROZEN * `DELETED` - DELETED + OtpResponse: + type: object + properties: + valid_until: + type: string + required: + - valid_until PaginatedEntityPreviewList: type: object required: @@ -2319,37 +4173,170 @@ components: type: boolean dc_reference: type: string - maxLength: 64 - site_siret: + maxLength: 64 + site_siret: + type: string + maxLength: 64 + address: + type: string + maxLength: 256 + city: + type: string + maxLength: 128 + postal_code: + type: string + maxLength: 32 + gps_coordinates: + type: string + nullable: true + maxLength: 64 + manager_name: + type: string + maxLength: 64 + manager_phone: + type: string + maxLength: 64 + manager_email: + type: string + maxLength: 64 + required: + - country + - id + - name + - producer + ProductionSiteCertificate: + type: object + properties: + certificate_id: + type: string + maxLength: 64 + certificate_type: + $ref: "#/components/schemas/CertificateTypeEnum" + certificate_holder: + type: string + maxLength: 512 + certificate_issuer: + type: string + nullable: true + maxLength: 256 + address: + type: string + nullable: true + maxLength: 512 + valid_from: + type: string + format: date + valid_until: + type: string + format: date + download_link: + type: string + nullable: true + maxLength: 512 + scope: + nullable: true + input: + nullable: true + output: + nullable: true + required: + - certificate_holder + - certificate_id + - certificate_type + - valid_from + - valid_until + RejectDoubleCountingRequest: + type: object + properties: + dca_id: + type: integer + required: + - dca_id + RequestAccessRequest: + type: object + properties: + comment: + type: string + minLength: 1 + role: type: string - maxLength: 64 - address: + minLength: 1 + entity_id: + type: integer + required: + - entity_id + - role + RequestPasswordResetRequest: + type: object + properties: + username: type: string - maxLength: 256 - city: + minLength: 1 + maxLength: 150 + required: + - username + ResetPasswordRequest: + type: object + properties: + uidb64: type: string - maxLength: 128 - postal_code: + minLength: 1 + token: type: string - maxLength: 32 - gps_coordinates: + minLength: 1 + password1: type: string - nullable: true - maxLength: 64 - manager_name: + writeOnly: true + minLength: 1 + title: Mot de passe + password2: type: string - maxLength: 64 - manager_phone: + writeOnly: true + minLength: 1 + title: Confirmation du mot de passe + required: + - password1 + - password2 + - token + - uidb64 + Response: + type: object + properties: + status: type: string - maxLength: 64 - manager_email: + required: + - status + ResponseSuccess: + type: object + properties: + status: type: string - maxLength: 64 required: - - country - - id - - name - - producer + - status + RevokeAccessRequest: + type: object + properties: + entity_id: + type: integer + required: + - entity_id + RoleEnum: + enum: + - RO + - RW + - ADMIN + - AUDITOR + type: string + description: |- + * `RO` - Lecture Seule + * `RW` - Lecture/Écriture + * `ADMIN` - Administrateur + * `AUDITOR` - Auditeur + x-enum-varnames: + - ReadOnly + - ReadWrite + - Admin + - Auditor SafTicket: type: object properties: @@ -2369,7 +4356,7 @@ components: maximum: 2147483647 minimum: -2147483648 status: - $ref: "#/components/schemas/StatusEnum" + $ref: "#/components/schemas/saf.filters.TicketFilter.status" agreement_date: type: string format: date @@ -2427,7 +4414,7 @@ components: maximum: 2147483647 minimum: -2147483648 status: - $ref: "#/components/schemas/StatusEnum" + $ref: "#/components/schemas/saf.filters.TicketFilter.status" created_at: type: string format: date-time @@ -2560,7 +4547,7 @@ components: type: number format: double status: - $ref: "#/components/schemas/StatusEnum" + $ref: "#/components/schemas/saf.filters.TicketFilter.status" created_at: type: string format: date-time @@ -2657,6 +4644,29 @@ components: - assignment_period - client_id - volume + SafTicketSourceAssignmentRequest: + type: object + properties: + client_id: + type: integer + volume: + type: number + format: double + agreement_reference: + type: string + minLength: 1 + agreement_date: + type: string + minLength: 1 + free_field: + type: string + nullable: true + assignment_period: + type: integer + required: + - assignment_period + - client_id + - volume SafTicketSourceDetails: type: object properties: @@ -2777,7 +4787,7 @@ components: - parent_lot - total_volume - year - SafTicketSourceGroupAssignment: + SafTicketSourceGroupAssignmentRequest: type: object properties: client_id: @@ -2787,8 +4797,10 @@ components: format: double agreement_reference: type: string + minLength: 1 agreement_date: type: string + minLength: 1 free_field: type: string nullable: true @@ -2858,16 +4870,6 @@ components: * `COGENERATION PLANT` - COGENERATION PLANT * `PRODUCTION BIOLIQUID` - PRODUCTION BIOLIQUID * `EFCA` - EFCA - StatusEnum: - enum: - - PENDING - - ACCEPTED - - REJECTED - type: string - description: |- - * `PENDING` - En attente - * `ACCEPTED` - Accepté - * `REJECTED` - Refusé TransportDocumentTypeEnum: enum: - DAU @@ -2884,6 +4886,325 @@ components: * `DSAC` - DSAC * `DSP` - DSP * `OTHER` - OTHER + UpdatedQuotasRequest: + type: object + properties: + approved_quotas: + type: array + items: + type: array + items: + type: integer + maxItems: 2 + minItems: 2 + required: + - approved_quotas + UserCreation: + type: object + description: |- + Serializer for creating new users. Includes required fields + and repeated password validation. + properties: + email: + type: string + format: email + title: Adresse électronique + maxLength: 255 + name: + type: string + title: Nom + maxLength: 255 + required: + - email + - name + UserCreationRequest: + type: object + description: |- + Serializer for creating new users. Includes required fields + and repeated password validation. + properties: + email: + type: string + format: email + minLength: 1 + title: Adresse électronique + maxLength: 255 + name: + type: string + minLength: 1 + title: Nom + maxLength: 255 + password1: + type: string + writeOnly: true + minLength: 1 + title: Mot de passe + password2: + type: string + writeOnly: true + minLength: 1 + title: Confirmation du mot de passe + required: + - email + - name + - password1 + - password2 + UserEntity: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + readOnly: true + is_enabled: + type: boolean + readOnly: true + entity_type: + allOf: + - $ref: "#/components/schemas/EntityTypeEnum" + readOnly: true + has_mac: + type: boolean + readOnly: true + has_trading: + type: boolean + readOnly: true + has_direct_deliveries: + type: boolean + readOnly: true + has_stocks: + type: boolean + readOnly: true + legal_name: + type: string + readOnly: true + registration_id: + type: string + readOnly: true + sustainability_officer: + type: string + readOnly: true + sustainability_officer_phone_number: + type: string + readOnly: true + sustainability_officer_email: + type: string + readOnly: true + registered_address: + type: string + readOnly: true + registered_zipcode: + type: string + readOnly: true + registered_city: + type: string + readOnly: true + registered_country: + $ref: "#/components/schemas/Country" + default_certificate: + type: string + readOnly: true + nullable: true + preferred_unit: + allOf: + - $ref: "#/components/schemas/PreferredUnitEnum" + readOnly: true + has_saf: + type: boolean + readOnly: true + has_elec: + type: boolean + readOnly: true + activity_description: + type: string + readOnly: true + website: + type: string + format: uri + readOnly: true + vat_number: + type: string + readOnly: true + ext_admin_pages: + type: array + items: + $ref: "#/components/schemas/ExtAdminPagesEnum" + readOnly: true + required: + - activity_description + - default_certificate + - entity_type + - ext_admin_pages + - has_direct_deliveries + - has_elec + - has_mac + - has_saf + - has_stocks + - has_trading + - id + - is_enabled + - legal_name + - name + - preferred_unit + - registered_address + - registered_city + - registered_zipcode + - registration_id + - sustainability_officer + - sustainability_officer_email + - sustainability_officer_phone_number + - vat_number + - website + UserLoginRequest: + type: object + properties: + username: + type: string + minLength: 1 + maxLength: 150 + password: + type: string + writeOnly: true + minLength: 1 + required: + - password + - username + UserResendActivationLinkRequest: + type: object + description: A serializer for re-sending the user activation email. Includes + email field only. + properties: + email: + type: string + format: email + minLength: 1 + title: Courriel + required: + - email + UserRights: + type: object + properties: + name: + type: string + readOnly: true + email: + type: string + format: email + readOnly: true + entity: + $ref: "#/components/schemas/UserEntity" + role: + allOf: + - $ref: "#/components/schemas/RoleEnum" + readOnly: true + expiration_date: + type: string + format: date-time + nullable: true + required: + - email + - entity + - name + - role + UserRightsRequests: + type: object + properties: + id: + type: integer + readOnly: true + user: + type: array + items: + type: string + readOnly: true + entity: + $ref: "#/components/schemas/UserEntity" + date_requested: + type: string + format: date-time + readOnly: true + status: + allOf: + - $ref: "#/components/schemas/UserRightsRequestsStatusEnum" + readOnly: true + comment: + type: string + nullable: true + role: + allOf: + - $ref: "#/components/schemas/RoleEnum" + readOnly: true + expiration_date: + type: string + format: date-time + nullable: true + required: + - date_requested + - entity + - id + - role + - status + - user + UserRightsRequestsStatusEnum: + enum: + - PENDING + - ACCEPTED + - REJECTED + - REVOKED + type: string + description: |- + * `PENDING` - En attente de validation + * `ACCEPTED` - Accepté + * `REJECTED` - Refusé + * `REVOKED` - Révoqué + x-enum-varnames: + - Pending + - Accepted + - Rejected + - Revoked + UserSettingsResponseSeriaizer: + type: object + properties: + email: + type: string + format: email + rights: + type: array + items: + $ref: "#/components/schemas/UserRights" + requests: + type: array + items: + $ref: "#/components/schemas/UserRightsRequests" + required: + - email + - requests + - rights + VerifyOTPRequest: + type: object + description: A serializer for submitting the OTP sent via email. Includes + otp_token field only. + properties: + otp_token: + type: string + minLength: 6 + title: Entrez le code à 6 chiffres reçu par email + pattern: ^\d{6}$ + maxLength: 6 + required: + - otp_token + saf.filters.TicketFilter.status: + enum: + - PENDING + - ACCEPTED + - REJECTED + type: string + description: |- + * `PENDING` - En attente + * `ACCEPTED` - Accepté + * `REJECTED` - Refusé securitySchemes: basicAuth: type: http diff --git a/bin/post_deploy.sh b/bin/post_deploy.sh index 7287ac629..315341b55 100644 --- a/bin/post_deploy.sh +++ b/bin/post_deploy.sh @@ -1,7 +1,7 @@ #! /usr/bin/env bash # apply new migrations -# python3 ./web/manage.py migrate --noinput +python3 ./web/manage.py migrate --noinput # fill database with static fixtures python3 ./web/fixtures/load_biocarburants.py diff --git a/docker-compose.yml b/docker-compose.yml index ce22d18a9..9ba886e03 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: carbure-mariadb: - image: mysql:latest + image: mysql:8.0.39 container_name: carbure_mariadb environment: ENV: ${IMAGE_TAG} @@ -69,10 +69,9 @@ services: AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} AWS_STORAGE_BUCKET_NAME: ${AWS_STORAGE_BUCKET_NAME} - AWS_DCDOCS_STORAGE_BUCKET_NAME: ${AWS_DCDOCS_STORAGE_BUCKET_NAME} + AWS_ENV_FOLDER_NAME: ${AWS_ENV_FOLDER_NAME} AWS_S3_REGION_NAME: ${AWS_S3_REGION_NAME} AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL} - AWS_S3_USE_SSL: ${AWS_S3_USE_SSL} SCALINGO_TOKEN: ${SCALINGO_TOKEN} SCALINGO_MYSQL_UUID: ${SCALINGO_MYSQL_UUID} METABASE_SECRET_KEY: ${METABASE_SECRET_KEY} diff --git a/front/scripts/overrides-api-schema.ts b/front/scripts/overrides-api-schema.ts index 621c638e6..25d5cff1f 100644 --- a/front/scripts/overrides-api-schema.ts +++ b/front/scripts/overrides-api-schema.ts @@ -30,6 +30,22 @@ const res = mergeDeepRight(parsed, { "PowerOrHeatProducer", ], }, + UserRightsRequestsStatusEnum: { + "x-enum-varnames": [ + "Pending", // + "Accepted", + "Rejected", + "Revoked", + ], + }, + RoleEnum: { + "x-enum-varnames": [ + "ReadOnly", // + "ReadWrite", + "Admin", + "Auditor", + ], + }, }, }, }) diff --git a/front/src/account/api.ts b/front/src/account/api.ts index 177b5df96..b2e965125 100644 --- a/front/src/account/api.ts +++ b/front/src/account/api.ts @@ -1,14 +1,14 @@ -import api from "common/services/api" +import { api as apiFetch } from "common/services/api-fetch" import { UserRole } from "carbure/types" export function requestAccess(entity_id: number, role: UserRole, comment = "") { - return api.post("/user/request-access", { - entity_id, - comment, - role, + return apiFetch.POST("/user/request-access", { + body: { entity_id, role, comment }, }) } export function revokeMyself(entity_id: number) { - return api.post("/user/revoke-access", { entity_id }) + return apiFetch.POST("/user/revoke-access", { + body: { entity_id }, + }) } diff --git a/front/src/api-schema.ts b/front/src/api-schema.ts index 91821a72a..38a07c25a 100644 --- a/front/src/api-schema.ts +++ b/front/src/api-schema.ts @@ -4,7 +4,7 @@ */ export interface paths { - "/api/entities/{id}/enable/": { + "/api/auth/activate/": { parameters: { query?: never header?: never @@ -13,37 +13,37 @@ export interface paths { } get?: never put?: never - post: operations["entities_enable_create"] + post: operations["auth_activate_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/resources/biofuels": { + "/api/auth/login/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["resources_biofuels_list"] + get?: never put?: never - post?: never + post: operations["auth_login_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/resources/certificates": { + "/api/auth/logout/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["resources_certificates_list"] + get: operations["auth_logout_retrieve"] put?: never post?: never delete?: never @@ -52,46 +52,46 @@ export interface paths { patch?: never trace?: never } - "/api/resources/countries": { + "/api/auth/register/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["resources_countries_list"] + get?: never put?: never - post?: never + post: operations["auth_register_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/resources/depots": { + "/api/auth/request-activation-link/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["resources_depots_list"] + get?: never put?: never - post?: never + post: operations["auth_request_activation_link_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/resources/entities": { + "/api/auth/request-otp/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["resources_entities_list"] + get: operations["auth_request_otp_retrieve"] put?: never post?: never delete?: never @@ -100,14 +100,62 @@ export interface paths { patch?: never trace?: never } - "/api/resources/feedstocks": { + "/api/auth/request-password-reset/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["resources_feedstocks_list"] + get?: never + put?: never + post: operations["auth_request_password_reset_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/auth/reset-password/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["auth_reset_password_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/auth/verify-otp/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["auth_verify_otp_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/double-counting/agreements/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["double_counting_agreements_list"] put?: never post?: never delete?: never @@ -116,14 +164,14 @@ export interface paths { patch?: never trace?: never } - "/api/resources/production-sites": { + "/api/double-counting/agreements/{id}/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["resources_production_sites_list"] + get: operations["double_counting_agreements_retrieve"] put?: never post?: never delete?: never @@ -132,14 +180,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/clients/": { + "/api/double-counting/agreements/agreement-admin/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_clients_list"] + get: operations["double_counting_agreements_agreement_admin_retrieve"] put?: never post?: never delete?: never @@ -148,14 +196,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/clients/{id}/": { + "/api/double-counting/agreements/agreement-public/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_clients_retrieve"] + get: operations["double_counting_agreements_agreement_public_list"] put?: never post?: never delete?: never @@ -164,14 +212,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/snapshot/": { + "/api/double-counting/agreements/export/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_snapshot_retrieve"] + get: operations["double_counting_agreements_export_retrieve"] put?: never post?: never delete?: never @@ -180,14 +228,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/ticket-sources/": { + "/api/double-counting/applications/{id}/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_ticket_sources_list"] + get: operations["double_counting_applications_retrieve"] put?: never post?: never delete?: never @@ -196,14 +244,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/ticket-sources/{id}/": { + "/api/double-counting/applications/{id}/export/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_ticket_sources_retrieve"] + get: operations["double_counting_applications_export_retrieve"] put?: never post?: never delete?: never @@ -212,7 +260,7 @@ export interface paths { patch?: never trace?: never } - "/api/saf/ticket-sources/{id}/assign/": { + "/api/double-counting/applications/{id}/update-approved-quotas/": { parameters: { query?: never header?: never @@ -221,46 +269,46 @@ export interface paths { } get?: never put?: never - post: operations["saf_ticket_sources_assign_create"] + post: operations["double_counting_applications_update_approved_quotas_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/saf/ticket-sources/export/": { + "/api/double-counting/applications/add/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_ticket_sources_export_retrieve"] + get?: never put?: never - post?: never + post: operations["double_counting_applications_add_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/saf/ticket-sources/filters/": { + "/api/double-counting/applications/approve/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_ticket_sources_filters_retrieve"] + get?: never put?: never - post?: never + post: operations["double_counting_applications_approve_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/saf/ticket-sources/group-assign/": { + "/api/double-counting/applications/check-admin-files/": { parameters: { query?: never header?: never @@ -269,21 +317,37 @@ export interface paths { } get?: never put?: never - post: operations["saf_ticket_sources_group_assign_create"] + post: operations["double_counting_applications_check_admin_files_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/saf/tickets/": { + "/api/double-counting/applications/check-file/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_tickets_list"] + get?: never + put?: never + post: operations["double_counting_applications_check_file_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/double-counting/applications/export-application/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["double_counting_applications_export_application_retrieve"] put?: never post?: never delete?: never @@ -292,14 +356,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/tickets/{id}/": { + "/api/double-counting/applications/list-admin/": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_tickets_retrieve"] + get: operations["double_counting_applications_list_admin_retrieve"] put?: never post?: never delete?: never @@ -308,7 +372,7 @@ export interface paths { patch?: never trace?: never } - "/api/saf/tickets/{id}/accept/": { + "/api/double-counting/applications/reject/": { parameters: { query?: never header?: never @@ -317,14 +381,30 @@ export interface paths { } get?: never put?: never - post: operations["saf_tickets_accept_create"] + post: operations["double_counting_applications_reject_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/saf/tickets/{id}/cancel/": { + "/api/double-counting/snapshot/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["double_counting_snapshot_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/entities/{id}/enable/": { parameters: { query?: never header?: never @@ -333,21 +413,21 @@ export interface paths { } get?: never put?: never - post: operations["saf_tickets_cancel_create"] + post: operations["entities_enable_create"] delete?: never options?: never head?: never patch?: never trace?: never } - "/api/saf/tickets/{id}/credit-source/": { + "/api/resources/biofuels": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_tickets_credit_source_retrieve"] + get: operations["resources_biofuels_list"] put?: never post?: never delete?: never @@ -356,30 +436,30 @@ export interface paths { patch?: never trace?: never } - "/api/saf/tickets/{id}/reject/": { + "/api/resources/certificates": { parameters: { query?: never header?: never path?: never cookie?: never } - get?: never + get: operations["resources_certificates_list"] put?: never - post: operations["saf_tickets_reject_create"] + post?: never delete?: never options?: never head?: never patch?: never trace?: never } - "/api/saf/tickets/export/": { + "/api/resources/countries": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_tickets_export_retrieve"] + get: operations["resources_countries_list"] put?: never post?: never delete?: never @@ -388,14 +468,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/tickets/filters/": { + "/api/resources/depots": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_tickets_filters_retrieve"] + get: operations["resources_depots_list"] put?: never post?: never delete?: never @@ -404,14 +484,14 @@ export interface paths { patch?: never trace?: never } - "/api/saf/years/": { + "/api/resources/entities": { parameters: { query?: never header?: never path?: never cookie?: never } - get: operations["saf_years_retrieve"] + get: operations["resources_entities_list"] put?: never post?: never delete?: never @@ -420,97 +500,493 @@ export interface paths { patch?: never trace?: never } -} -export type webhooks = Record -export interface components { - schemas: { - Biofuel: { - name: string - name_en: string - code: string + "/api/resources/feedstocks": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never } - CarbureLotPublic: { - readonly id: number - year: number - period: number - carbure_id?: string - readonly carbure_producer: components["schemas"]["EntitySummary"] - unknown_producer?: string | null - readonly carbure_production_site: components["schemas"]["ProductionSite"] - unknown_production_site?: string | null - readonly production_country: components["schemas"]["Country"] - /** Format: date */ - production_site_commissioning_date?: string | null - production_site_certificate?: string | null - production_site_double_counting_certificate?: string | null - readonly carbure_supplier: components["schemas"]["EntitySummary"] - unknown_supplier?: string | null - supplier_certificate?: string | null - supplier_certificate_type?: string | null - transport_document_type?: components["schemas"]["TransportDocumentTypeEnum"] - transport_document_reference?: string | null - readonly carbure_client: components["schemas"]["EntitySummary"] - unknown_client?: string | null - /** Format: date */ - dispatch_date?: string | null - readonly carbure_dispatch_site: components["schemas"]["Depot"] - unknown_dispatch_site?: string | null - readonly dispatch_site_country: components["schemas"]["Country"] - /** Format: date */ - delivery_date?: string | null - readonly carbure_delivery_site: components["schemas"]["Depot"] - unknown_delivery_site?: string | null - readonly delivery_site_country: components["schemas"]["Country"] - delivery_type?: components["schemas"]["DeliveryTypeEnum"] - lot_status?: components["schemas"]["LotStatusEnum"] - correction_status?: components["schemas"]["CorrectionStatusEnum"] - /** Format: double */ - volume?: number - /** Format: double */ - weight?: number - /** Format: double */ - lhv_amount?: number - readonly feedstock: components["schemas"]["FeedStock"] - readonly biofuel: components["schemas"]["Biofuel"] - readonly country_of_origin: components["schemas"]["Country"] - /** Format: double */ - eec?: number - /** Format: double */ - el?: number - /** Format: double */ - ep?: number - /** Format: double */ - etd?: number - /** Format: double */ - eu?: number - /** Format: double */ - esca?: number - /** Format: double */ - eccs?: number - /** Format: double */ - eccr?: number - /** Format: double */ - eee?: number - /** Format: double */ - ghg_total?: number - /** Format: double */ - ghg_reference?: number - /** Format: double */ - ghg_reduction?: number - /** Format: double */ - ghg_reference_red_ii?: number - /** Format: double */ - ghg_reduction_red_ii?: number - free_field?: string | null - readonly added_by: components["schemas"]["EntitySummary"] - /** Format: date-time */ - readonly created_at: string | null - readonly carbure_vendor: components["schemas"]["EntitySummary"] - vendor_certificate?: string | null - vendor_certificate_type?: string | null - data_reliability_score?: string + get: operations["resources_feedstocks_list"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/resources/production-sites": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never } - /** + get: operations["resources_production_sites_list"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/clients/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_clients_list"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/clients/{id}/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_clients_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/snapshot/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_snapshot_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/ticket-sources/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_ticket_sources_list"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/ticket-sources/{id}/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_ticket_sources_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/ticket-sources/{id}/assign/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["saf_ticket_sources_assign_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/ticket-sources/export/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_ticket_sources_export_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/ticket-sources/filters/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_ticket_sources_filters_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/ticket-sources/group-assign/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["saf_ticket_sources_group_assign_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_tickets_list"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/{id}/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_tickets_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/{id}/accept/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["saf_tickets_accept_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/{id}/cancel/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["saf_tickets_cancel_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/{id}/credit-source/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_tickets_credit_source_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/{id}/reject/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["saf_tickets_reject_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/export/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_tickets_export_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/tickets/filters/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_tickets_filters_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/saf/years/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["saf_years_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/user/": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get: operations["user_retrieve"] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/user/request-access": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["user_request_access_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + "/api/user/revoke-access": { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations["user_revoke_access_create"] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } +} +export type webhooks = Record +export interface components { + schemas: { + ActivateAccountRequest: { + uidb64: string + token: string + invite?: number + } + ActivateResponse: { + message: string + token?: string + } + AgreementLists: { + active: components["schemas"]["DoubleCountingRegistration"][] + incoming: components["schemas"]["DoubleCountingRegistration"][] + expired: components["schemas"]["DoubleCountingRegistration"][] + } + ApplicationListe: { + rejected: components["schemas"]["DoubleCountingApplicationPartial"][] + pending: components["schemas"]["DoubleCountingApplicationPartial"][] + } + ApplicationSnapshot: { + applications_pending: number + applications_rejected: number + agreements_incoming: number + agreements_active: number + agreements_expired: number + } + ApprouveDoubleCountingRequest: { + dca_id: number + } + Biofuel: { + name: string + name_en: string + code: string + } + CarbureLotPublic: { + readonly id: number + year: number + period: number + carbure_id?: string + readonly carbure_producer: components["schemas"]["EntitySummary"] + unknown_producer?: string | null + readonly carbure_production_site: components["schemas"]["ProductionSite"] + unknown_production_site?: string | null + readonly production_country: components["schemas"]["Country"] + /** Format: date */ + production_site_commissioning_date?: string | null + production_site_certificate?: string | null + production_site_double_counting_certificate?: string | null + readonly carbure_supplier: components["schemas"]["EntitySummary"] + unknown_supplier?: string | null + supplier_certificate?: string | null + supplier_certificate_type?: string | null + transport_document_type?: components["schemas"]["TransportDocumentTypeEnum"] + transport_document_reference?: string | null + readonly carbure_client: components["schemas"]["EntitySummary"] + unknown_client?: string | null + /** Format: date */ + dispatch_date?: string | null + readonly carbure_dispatch_site: components["schemas"]["Depot"] + unknown_dispatch_site?: string | null + readonly dispatch_site_country: components["schemas"]["Country"] + /** Format: date */ + delivery_date?: string | null + readonly carbure_delivery_site: components["schemas"]["Depot"] + unknown_delivery_site?: string | null + readonly delivery_site_country: components["schemas"]["Country"] + delivery_type?: components["schemas"]["DeliveryTypeEnum"] + lot_status?: components["schemas"]["LotStatusEnum"] + correction_status?: components["schemas"]["CorrectionStatusEnum"] + /** Format: double */ + volume?: number + /** Format: double */ + weight?: number + /** Format: double */ + lhv_amount?: number + readonly feedstock: components["schemas"]["FeedStock"] + readonly biofuel: components["schemas"]["Biofuel"] + readonly country_of_origin: components["schemas"]["Country"] + /** Format: double */ + eec?: number + /** Format: double */ + el?: number + /** Format: double */ + ep?: number + /** Format: double */ + etd?: number + /** Format: double */ + eu?: number + /** Format: double */ + esca?: number + /** Format: double */ + eccs?: number + /** Format: double */ + eccr?: number + /** Format: double */ + eee?: number + /** Format: double */ + ghg_total?: number + /** Format: double */ + ghg_reference?: number + /** Format: double */ + ghg_reduction?: number + /** Format: double */ + ghg_reference_red_ii?: number + /** Format: double */ + ghg_reduction_red_ii?: number + free_field?: string | null + readonly added_by: components["schemas"]["EntitySummary"] + /** Format: date-time */ + readonly created_at: string | null + readonly carbure_vendor: components["schemas"]["EntitySummary"] + vendor_certificate?: string | null + vendor_certificate_type?: string | null + data_reliability_score?: string + } + /** * @description * `CONV` - Conventionnel * * `ANN-IX-A` - ANNEXE IX-A * * `ANN-IX-B` - ANNEXE IX-B @@ -518,453 +994,1557 @@ export interface components { * * `OTHER` - Autre * @enum {string} */ - CategoryEnum: CategoryEnum + CategoryEnum: CategoryEnum + /** + * @description * `SYSTEME_NATIONAL` - SYSTEME_NATIONAL + * * `ISCC` - ISCC + * * `REDCERT` - REDCERT + * * `2BS` - 2BS + * @enum {string} + */ + CertificateTypeEnum: CertificateTypeEnum + CheckAdminFileRequest: { + files: string[] + } + CheckFileResponse: { + file: components["schemas"]["File"] + /** Format: date-time */ + checked_at: string + } + CommentRequest: { + comment?: string + } + /** + * @description * `NO_PROBLEMO` - NO_PROBLEMO + * * `IN_CORRECTION` - IN_CORRECTION + * * `FIXED` - FIXED + * @enum {string} + */ + CorrectionStatusEnum: CorrectionStatusEnum + Country: { + name: string + name_en: string + code_pays: string + is_in_europe?: boolean + } + /** + * @description * `UNKNOWN` - UNKNOWN + * * `RFC` - RFC + * * `STOCK` - STOCK + * * `BLENDING` - BLENDING + * * `EXPORT` - EXPORT + * * `TRADING` - TRADING + * * `PROCESSING` - PROCESSING + * * `DIRECT` - DIRECT + * * `FLUSHED` - FLUSHED + * * `CONSUMPTION` - CONSUMPTION + * @enum {string} + */ + DeliveryTypeEnum: DeliveryTypeEnum + Depot: { + readonly id: number + name: string + city?: string + customs_id?: string + readonly country: components["schemas"]["Country"] + site_type?: components["schemas"]["SiteTypeEnum"] + address?: string + postal_code?: string + gps_coordinates?: string | null + accise?: string + /** + * Format: double + * @description Entre 0 et 1 + */ + electrical_efficiency?: number | null + /** + * Format: double + * @description Entre 0 et 1 + */ + thermal_efficiency?: number | null + /** + * Format: double + * @description En degrés Celsius + */ + useful_temperature?: number | null + } + DoubleCountingAdminAddRequest: { + certificate_id?: string + entity_id: number + producer_id: number + production_site_id: number + /** @default false */ + should_replace: boolean + /** Format: binary */ + file: string + } + /** + * @description * `ACTIVE` - ACTIVE + * * `EXPIRED` - EXPIRED + * * `EXPIRES_SOON` - EXPIRES_SOON + * * `INCOMING` - INCOMING + * @enum {string} + */ + DoubleCountingAgreementStatus: DoubleCountingAgreementStatus + DoubleCountingApplication: { + readonly id: number + /** Format: date-time */ + readonly created_at: string + readonly producer: components["schemas"]["Entity"] + /** + * Adresse électronique + * Format: email + */ + readonly producer_user: string + readonly production_site: components["schemas"]["DoubleCountingProductionSite"] + /** Format: date */ + period_start: string + /** Format: date */ + period_end: string + status?: components["schemas"]["DoubleCountingStatus"] + readonly sourcing: components["schemas"]["DoubleCountingSourcing"][] + readonly production: components["schemas"]["DoubleCountingProduction"][] + readonly documents: components["schemas"]["DoubleCountingDocFile"][] + } + DoubleCountingApplicationPartial: { + readonly id: number + /** Format: date-time */ + readonly created_at: string + readonly producer: components["schemas"]["EntitySummary"] + readonly production_site: components["schemas"]["DoubleCountingProductionSite"] + /** Format: date */ + period_start: string + /** Format: date */ + period_end: string + readonly status: components["schemas"]["DoubleCountingStatus"] + certificate_id: string + readonly agreement_id: number + /** Format: double */ + readonly quotas_progression: number + /** + * Adresse électronique + * Format: email + */ + readonly producer_user: string + } + DoubleCountingDocFile: { + readonly id: number + file_name?: string + file_type?: components["schemas"]["FileTypeEnum"] + } + DoubleCountingProduction: { + readonly id: number + readonly year: number + readonly biofuel: components["schemas"]["Biofuel"] + readonly feedstock: components["schemas"]["FeedStock"] + readonly max_production_capacity: number + readonly estimated_production: number + readonly requested_quota: number + readonly approved_quota: number + } + DoubleCountingProductionHistory: { + readonly id: number + readonly year: number + readonly biofuel: components["schemas"]["Biofuel"] + readonly feedstock: components["schemas"]["FeedStock"] + readonly max_production_capacity: number + readonly effective_production: number + } + DoubleCountingProductionSite: { + readonly id: number + readonly producer: components["schemas"]["Entity"] + name: string + readonly country: components["schemas"]["Country"] + /** Format: date */ + date_mise_en_service?: string | null + ges_option?: components["schemas"]["GesOptionEnum"] + eligible_dc?: boolean + dc_reference?: string + site_siret?: string + address?: string + city?: string + postal_code?: string + gps_coordinates?: string | null + manager_name?: string + manager_phone?: string + manager_email?: string + readonly inputs: components["schemas"]["FeedStock"][] + readonly outputs: components["schemas"]["Biofuel"][] + readonly certificates: components["schemas"]["ProductionSiteCertificate"][] + } + DoubleCountingQuota: { + approved_quota: number + biofuel: components["schemas"]["Biofuel"] + feedstock: components["schemas"]["FeedStock"] + id: number + lot_count: number + production_tonnes: number + quotas_progression: number + requested_quota: number + year: number + } + DoubleCountingRegistration: { + readonly id: number + certificate_id: string + /** Format: date */ + valid_from: string + readonly producer: components["schemas"]["EntitySummary"] + production_site: components["schemas"]["DoubleCountingProductionSite"] + /** Format: date */ + valid_until: string + readonly status: components["schemas"]["DoubleCountingAgreementStatus"] + /** Format: double */ + readonly quotas_progression: number + } + DoubleCountingRegistrationDetails: { + readonly id: number + certificate_id: string + /** Format: date */ + valid_from: string + /** Format: date */ + valid_until: string + readonly status: components["schemas"]["DoubleCountingAgreementStatus"] + readonly producer: string + readonly production_site: string + application: components["schemas"]["DoubleCountingApplication"] + readonly quotas: components["schemas"]["DoubleCountingQuota"][] + } + DoubleCountingRegistrationPublic: { + readonly production_site: components["schemas"]["FieldData"] + certificate_id: string + /** Format: date */ + valid_from: string + /** Format: date */ + valid_until: string + readonly biofuel_list: string + } + DoubleCountingSourcing: { + readonly id: number + readonly year: number + readonly feedstock: components["schemas"]["FeedStock"] + readonly origin_country: components["schemas"]["Country"] + readonly supply_country: components["schemas"]["Country"] + readonly transit_country: components["schemas"]["Country"] + readonly metric_tonnes: number + } + DoubleCountingSourcingHistory: { + readonly id: number + year: number + readonly feedstock: components["schemas"]["FeedStock"] + readonly origin_country: components["schemas"]["Country"] + readonly supply_country: components["schemas"]["Country"] + readonly transit_country: components["schemas"]["Country"] + metric_tonnes: number + raw_material_supplier?: string + supplier_certificate_name?: string + supplier_certificate?: number | null + } + /** + * @description * `PENDING` - PENDING + * * `INPROGRESS` - INPROGRESS + * * `REJECTED` - REJECTED + * * `ACCEPTED` - ACCEPTED + * @enum {string} + */ + DoubleCountingStatus: DoubleCountingStatus + EmptyResponse: { + empty?: string + } + EmptyResponseRequest: { + empty?: string + } + Entity: { + readonly id: number + name: string + entity_type?: components["schemas"]["EntityTypeEnum"] + has_mac?: boolean + has_trading?: boolean + has_direct_deliveries?: boolean + has_stocks?: boolean + preferred_unit?: components["schemas"]["PreferredUnitEnum"] + legal_name?: string + registration_id?: string + sustainability_officer_phone_number?: string + sustainability_officer?: string + registered_address?: string + registered_zipcode?: string + registered_city?: string + registered_country?: number | null + activity_description?: string + /** Format: uri */ + website?: string + vat_number?: string + } + EntityPreview: { + readonly id: number + readonly name: string + readonly entity_type: components["schemas"]["EntityTypeEnum"] + } + EntitySummary: { + readonly id: number + readonly name: string + readonly entity_type: components["schemas"]["EntityTypeEnum"] + } + /** + * @description * `Producteur` - Producteur + * * `Opérateur` - Opérateur + * * `Administration` - Administration + * * `Trader` - Trader + * * `Auditor` - Auditeur + * * `Administration Externe` - Administration Externe + * * `Charge Point Operator` - Charge Point Operator + * * `Compagnie aérienne` - Compagnie aérienne + * * `Unknown` - Unknown + * * `Power or Heat Producer` - Producteur d'électricité ou de chaleur + * @enum {string} + */ + EntityTypeEnum: EntityTypeEnum + ErrorResponse: { + message: string + } + /** + * @description * `DCA` - DCA + * * `AGRIMER` - AGRIMER + * * `TIRIB` - TIRIB + * * `AIRLINE` - AIRLINE + * * `ELEC` - ELEC + * @enum {string} + */ + ExtAdminPagesEnum: ExtAdminPagesEnum + FeedStock: { + name: string + name_en: string + code: string + category?: components["schemas"]["CategoryEnum"] + is_double_compte?: boolean + } + FieldData: { + name: string + city: string + address: string + postal_code: string + country: string + } + File: { + file_name: string + errors: components["schemas"]["FileErrors"] + error_count: number + start_year: number + production_site: string + /** Format: email */ + producer_email: string + production: components["schemas"]["DoubleCountingProduction"][] + sourcing: components["schemas"]["DoubleCountingSourcing"][] + sourcing_history: components["schemas"]["DoubleCountingSourcingHistory"][] + production_history: components["schemas"]["DoubleCountingProductionHistory"][] + readonly has_dechets_industriels: boolean + } + FileError: { + error: string + is_blocking: boolean + line_number: number + line_merged: string + meta: { + [key: string]: unknown + } + } + FileErrors: { + sourcing_forecast: components["schemas"]["FileError"][] + sourcing_history: components["schemas"]["FileError"][] + production: components["schemas"]["FileError"][] + production_history: components["schemas"]["FileError"][] + global_errors: components["schemas"]["FileError"][] + } + /** + * @description * `SOURCING` - SOURCING + * * `DECISION` - DECISION + * @enum {string} + */ + FileTypeEnum: FileTypeEnum + GenericCertificate: { + certificate_id: string + certificate_type: components["schemas"]["CertificateTypeEnum"] + certificate_holder: string + certificate_issuer?: string | null + address?: string | null + /** Format: date */ + valid_from: string + /** Format: date */ + valid_until: string + download_link?: string | null + scope?: unknown + input?: unknown + output?: unknown + } + /** + * @description * `Default` - Valeurs par défaut + * * `Actual` - Valeurs réelles + * * `NUTS2` - Valeurs NUTS2 + * @enum {string} + */ + GesOptionEnum: GesOptionEnum + GroupAssignmentResponse: { + assigned_tickets_count: number + } + /** + * @description * `DRAFT` - DRAFT + * * `PENDING` - PENDING + * * `ACCEPTED` - ACCEPTED + * * `REJECTED` - REJECTED + * * `FROZEN` - FROZEN + * * `DELETED` - DELETED + * @enum {string} + */ + LotStatusEnum: LotStatusEnum + OtpResponse: { + valid_until: string + } + PaginatedEntityPreviewList: { + /** @example 123 */ + count: number + /** + * Format: uri + * @example http://api.example.org/accounts/?page=4 + */ + next?: string | null + /** + * Format: uri + * @example http://api.example.org/accounts/?page=2 + */ + previous?: string | null + results: components["schemas"]["EntityPreview"][] + } + PaginatedSafTicketList: { + /** @example 123 */ + count: number + /** + * Format: uri + * @example http://api.example.org/accounts/?page=4 + */ + next?: string | null + /** + * Format: uri + * @example http://api.example.org/accounts/?page=2 + */ + previous?: string | null + results: components["schemas"]["SafTicket"][] + } + PaginatedSafTicketSourceList: { + /** @example 123 */ + count: number + /** + * Format: uri + * @example http://api.example.org/accounts/?page=4 + */ + next?: string | null + /** + * Format: uri + * @example http://api.example.org/accounts/?page=2 + */ + previous?: string | null + results: components["schemas"]["SafTicketSource"][] + } + /** + * @description * `l` - litres + * * `kg` - kg + * * `MJ` - MJ + * @enum {string} + */ + PreferredUnitEnum: PreferredUnitEnum + ProductionSite: { + readonly id: number + readonly producer: components["schemas"]["Entity"] + name: string + readonly country: components["schemas"]["Country"] + /** Format: date */ + date_mise_en_service?: string | null + ges_option?: components["schemas"]["GesOptionEnum"] + eligible_dc?: boolean + dc_reference?: string + site_siret?: string + address?: string + city?: string + postal_code?: string + gps_coordinates?: string | null + manager_name?: string + manager_phone?: string + manager_email?: string + } + ProductionSiteCertificate: { + certificate_id: string + certificate_type: components["schemas"]["CertificateTypeEnum"] + certificate_holder: string + certificate_issuer?: string | null + address?: string | null + /** Format: date */ + valid_from: string + /** Format: date */ + valid_until: string + download_link?: string | null + scope?: unknown + input?: unknown + output?: unknown + } + RejectDoubleCountingRequest: { + dca_id: number + } + RequestAccessRequest: { + comment?: string + role: string + entity_id: number + } + RequestPasswordResetRequest: { + username: string + } + ResetPasswordRequest: { + uidb64: string + token: string + /** Mot de passe */ + password1: string + /** Confirmation du mot de passe */ + password2: string + } + Response: { + status: string + } + ResponseSuccess: { + status: string + } + RevokeAccessRequest: { + entity_id: number + } + /** + * @description * `RO` - Lecture Seule + * * `RW` - Lecture/Écriture + * * `ADMIN` - Administrateur + * * `AUDITOR` - Auditeur + * @enum {string} + */ + RoleEnum: RoleEnum + SafTicket: { + readonly id: number + carbure_id?: string | null + year: number + assignment_period: number + status?: components["schemas"]["saf.filters.TicketFilter.status"] + /** Format: date */ + agreement_date?: string | null + readonly supplier: string + readonly client: string + /** Format: double */ + volume: number + readonly feedstock: components["schemas"]["FeedStock"] + readonly biofuel: components["schemas"]["Biofuel"] + readonly country_of_origin: components["schemas"]["Country"] + /** Format: double */ + ghg_reduction?: number + } + SafTicketDetails: { + readonly id: number + carbure_id?: string | null + year: number + assignment_period: number + status?: components["schemas"]["saf.filters.TicketFilter.status"] + /** Format: date-time */ + readonly created_at: string | null + readonly supplier: string + readonly client: string + free_field?: string | null + /** Format: date */ + agreement_date?: string | null + agreement_reference?: string | null + /** Format: double */ + volume: number + readonly feedstock: components["schemas"]["FeedStock"] + readonly biofuel: components["schemas"]["Biofuel"] + readonly country_of_origin: components["schemas"]["Country"] + readonly carbure_producer: components["schemas"]["EntityPreview"] + unknown_producer?: string | null + readonly carbure_production_site: components["schemas"]["ProductionSite"] + unknown_production_site?: string | null + /** Format: date */ + production_site_commissioning_date?: string | null + /** Format: double */ + eec?: number + /** Format: double */ + el?: number + /** Format: double */ + ep?: number + /** Format: double */ + etd?: number + /** Format: double */ + eu?: number + /** Format: double */ + esca?: number + /** Format: double */ + eccs?: number + /** Format: double */ + eccr?: number + /** Format: double */ + eee?: number + /** Format: double */ + ghg_reduction?: number + /** Format: double */ + ghg_total?: number + client_comment?: string | null + readonly parent_ticket_source: components["schemas"]["SafTicketSourcePreview"] + } + SafTicketPreview: { + readonly id: number + carbure_id?: string | null + readonly client: string + /** Format: date */ + agreement_date?: string | null + /** Format: double */ + volume: number + status?: components["schemas"]["saf.filters.TicketFilter.status"] + /** Format: date-time */ + readonly created_at: string | null + } + SafTicketSource: { + readonly id: number + carbure_id?: string | null + year: number + delivery_period: number + /** Format: date-time */ + readonly created_at: string | null + /** Format: double */ + total_volume: number + /** Format: double */ + assigned_volume: number + readonly feedstock: components["schemas"]["FeedStock"] + readonly biofuel: components["schemas"]["Biofuel"] + readonly country_of_origin: components["schemas"]["Country"] + /** Format: double */ + ghg_reduction?: number + readonly assigned_tickets: components["schemas"]["SafTicketPreview"][] + readonly parent_lot: components["schemas"]["SafTicketSourceParentLot"] + } + SafTicketSourceAssignment: { + client_id: number + /** Format: double */ + volume: number + agreement_reference?: string + agreement_date?: string + free_field?: string | null + assignment_period: number + } + SafTicketSourceAssignmentRequest: { + client_id: number + /** Format: double */ + volume: number + agreement_reference?: string + agreement_date?: string + free_field?: string | null + assignment_period: number + } + SafTicketSourceDetails: { + readonly id: number + carbure_id?: string | null + year: number + delivery_period: number + /** Format: date-time */ + readonly created_at: string | null + readonly added_by: components["schemas"]["EntityPreview"] + /** Format: double */ + total_volume: number + /** Format: double */ + assigned_volume: number + readonly feedstock: components["schemas"]["FeedStock"] + readonly biofuel: components["schemas"]["Biofuel"] + readonly country_of_origin: components["schemas"]["Country"] + readonly assigned_tickets: components["schemas"]["SafTicketPreview"][] + readonly carbure_producer: components["schemas"]["EntityPreview"] + unknown_producer?: string | null + readonly carbure_production_site: components["schemas"]["ProductionSite"] + unknown_production_site?: string | null + /** Format: date */ + production_site_commissioning_date?: string | null + /** Format: double */ + eec?: number + /** Format: double */ + el?: number + /** Format: double */ + ep?: number + /** Format: double */ + etd?: number + /** Format: double */ + eu?: number + /** Format: double */ + esca?: number + /** Format: double */ + eccs?: number + /** Format: double */ + eccr?: number + /** Format: double */ + eee?: number + /** Format: double */ + ghg_reduction?: number + /** Format: double */ + ghg_total?: number + parent_lot: components["schemas"]["CarbureLotPublic"] + } + SafTicketSourceGroupAssignmentRequest: { + client_id: number + /** Format: double */ + volume: number + agreement_reference?: string + agreement_date?: string + free_field?: string | null + assignment_period: number + ticket_sources_ids: number[] + } + SafTicketSourceParentLot: { + readonly id: number + carbure_id?: string + } + SafTicketSourcePreview: { + readonly id: number + carbure_id?: string | null + /** Format: double */ + total_volume: number + /** Format: double */ + assigned_volume: number + } + /** + * @description * `OTHER` - Autre + * * `EFS` - EFS + * * `EFPE` - EFPE + * * `OIL DEPOT` - OIL DEPOT + * * `BIOFUEL DEPOT` - BIOFUEL DEPOT + * * `HEAT PLANT` - HEAT PLANT + * * `POWER PLANT` - POWER PLANT + * * `COGENERATION PLANT` - COGENERATION PLANT + * * `PRODUCTION BIOLIQUID` - PRODUCTION BIOLIQUID + * * `EFCA` - EFCA + * @enum {string} + */ + SiteTypeEnum: SiteTypeEnum /** - * @description * `SYSTEME_NATIONAL` - SYSTEME_NATIONAL - * * `ISCC` - ISCC - * * `REDCERT` - REDCERT - * * `2BS` - 2BS + * @description * `DAU` - DAU + * * `DAE` - DAE + * * `DSA` - DSA + * * `DSAC` - DSAC + * * `DSP` - DSP + * * `OTHER` - OTHER * @enum {string} */ - CertificateTypeEnum: CertificateTypeEnum - Comment: { - comment?: string + TransportDocumentTypeEnum: TransportDocumentTypeEnum + UpdatedQuotasRequest: { + approved_quotas: number[][] + } + /** @description Serializer for creating new users. Includes required fields + * and repeated password validation. */ + UserCreation: { + /** + * Adresse électronique + * Format: email + */ + email: string + /** Nom */ + name: string + } + /** @description Serializer for creating new users. Includes required fields + * and repeated password validation. */ + UserCreationRequest: { + /** + * Adresse électronique + * Format: email + */ + email: string + /** Nom */ + name: string + /** Mot de passe */ + password1: string + /** Confirmation du mot de passe */ + password2: string + } + UserEntity: { + readonly id: number + readonly name: string + readonly is_enabled: boolean + readonly entity_type: components["schemas"]["EntityTypeEnum"] + readonly has_mac: boolean + readonly has_trading: boolean + readonly has_direct_deliveries: boolean + readonly has_stocks: boolean + readonly legal_name: string + readonly registration_id: string + readonly sustainability_officer: string + readonly sustainability_officer_phone_number: string + readonly sustainability_officer_email: string + readonly registered_address: string + readonly registered_zipcode: string + readonly registered_city: string + registered_country?: components["schemas"]["Country"] + readonly default_certificate: string | null + readonly preferred_unit: components["schemas"]["PreferredUnitEnum"] + readonly has_saf: boolean + readonly has_elec: boolean + readonly activity_description: string + /** Format: uri */ + readonly website: string + readonly vat_number: string + readonly ext_admin_pages: components["schemas"]["ExtAdminPagesEnum"][] + } + UserLoginRequest: { + username: string + password: string + } + /** @description A serializer for re-sending the user activation email. Includes email field only. */ + UserResendActivationLinkRequest: { + /** + * Courriel + * Format: email + */ + email: string + } + UserRights: { + readonly name: string + /** Format: email */ + readonly email: string + entity: components["schemas"]["UserEntity"] + readonly role: components["schemas"]["RoleEnum"] + /** Format: date-time */ + expiration_date?: string | null + } + UserRightsRequests: { + readonly id: number + readonly user: string[] + entity: components["schemas"]["UserEntity"] + /** Format: date-time */ + readonly date_requested: string + readonly status: components["schemas"]["UserRightsRequestsStatusEnum"] + comment?: string | null + readonly role: components["schemas"]["RoleEnum"] + /** Format: date-time */ + expiration_date?: string | null + } + /** + * @description * `PENDING` - En attente de validation + * * `ACCEPTED` - Accepté + * * `REJECTED` - Refusé + * * `REVOKED` - Révoqué + * @enum {string} + */ + UserRightsRequestsStatusEnum: UserRightsRequestsStatusEnum + UserSettingsResponseSeriaizer: { + /** Format: email */ + email: string + rights: components["schemas"]["UserRights"][] + requests: components["schemas"]["UserRightsRequests"][] + } + /** @description A serializer for submitting the OTP sent via email. Includes otp_token field only. */ + VerifyOTPRequest: { + /** Entrez le code à 6 chiffres reçu par email */ + otp_token: string + } + /** + * @description * `PENDING` - En attente + * * `ACCEPTED` - Accepté + * * `REJECTED` - Refusé + * @enum {string} + */ + "saf.filters.TicketFilter.status": PathsApiSafTicketsGetParametersQueryStatus + } + responses: never + parameters: never + requestBodies: never + headers: never + pathItems: never +} +export type $defs = Record +export interface operations { + auth_activate_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["ActivateAccountRequest"] + "application/x-www-form-urlencoded": components["schemas"]["ActivateAccountRequest"] + "multipart/form-data": components["schemas"]["ActivateAccountRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["ActivateResponse"] + } + } + /** @description Bad request - missing fields. */ + 400: { + headers: { + [name: string]: unknown + } + content: { + "application/json": unknown + } + } + } + } + auth_login_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["UserLoginRequest"] + "application/x-www-form-urlencoded": components["schemas"]["UserLoginRequest"] + "multipart/form-data": components["schemas"]["UserLoginRequest"] + } + } + responses: { + /** @description Request successful. */ + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": unknown + } + } + /** @description Bad request - missing fields. */ + 400: { + headers: { + [name: string]: unknown + } + content: { + "application/json": unknown + } + } + } + } + auth_logout_retrieve: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + /** @description Request successful. */ + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": unknown + } + } + } + } + auth_register_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["UserCreationRequest"] + "application/x-www-form-urlencoded": components["schemas"]["UserCreationRequest"] + "multipart/form-data": components["schemas"]["UserCreationRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["UserCreation"] + } + } + } + } + auth_request_activation_link_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["UserResendActivationLinkRequest"] + "application/x-www-form-urlencoded": components["schemas"]["UserResendActivationLinkRequest"] + "multipart/form-data": components["schemas"]["UserResendActivationLinkRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["UserCreation"] + } + } + } + } + auth_request_otp_retrieve: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["OtpResponse"] + } + } + } + } + auth_request_password_reset_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["RequestPasswordResetRequest"] + "application/x-www-form-urlencoded": components["schemas"]["RequestPasswordResetRequest"] + "multipart/form-data": components["schemas"]["RequestPasswordResetRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["UserCreation"] + } + } + } + } + auth_reset_password_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["ResetPasswordRequest"] + "application/x-www-form-urlencoded": components["schemas"]["ResetPasswordRequest"] + "multipart/form-data": components["schemas"]["ResetPasswordRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["UserCreation"] + } + } + } + } + auth_verify_otp_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["VerifyOTPRequest"] + "application/x-www-form-urlencoded": components["schemas"]["VerifyOTPRequest"] + "multipart/form-data": components["schemas"]["VerifyOTPRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["UserCreation"] + } + } + } + } + double_counting_agreements_list: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + /** @description Ordre + * + * * `production_site` - Production site + * * `-production_site` - Production site (décroissant) + * * `valid_until` - Valid until + * * `-valid_until` - Valid until (décroissant) */ + order_by?: PathsApiDoubleCountingAgreementsGetParametersQueryOrder_by[] + /** @description Which field to use when ordering the results. */ + ordering?: string + /** @description A search term. */ + search?: string + /** @description Year */ + year?: number + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["DoubleCountingApplicationPartial"][] + } + } + } + } + double_counting_agreements_retrieve: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path: { + /** @description A unique integer value identifying this Certificat Double Compte. */ + id: number + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["DoubleCountingRegistrationDetails"] + } + } + } + } + double_counting_agreements_agreement_admin_retrieve: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + /** @description Ordre + * + * * `production_site` - Production site + * * `-production_site` - Production site (décroissant) + * * `valid_until` - Valid until + * * `-valid_until` - Valid until (décroissant) */ + order_by?: PathsApiDoubleCountingAgreementsGetParametersQueryOrder_by[] + /** @description Which field to use when ordering the results. */ + ordering?: string + /** @description A search term. */ + search?: string + /** @description Year */ + year?: number + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["AgreementLists"] + } + } } - /** - * @description * `NO_PROBLEMO` - NO_PROBLEMO - * * `IN_CORRECTION` - IN_CORRECTION - * * `FIXED` - FIXED - * @enum {string} - */ - CorrectionStatusEnum: CorrectionStatusEnum - Country: { - name: string - name_en: string - code_pays: string - is_in_europe?: boolean + } + double_counting_agreements_agreement_public_list: { + parameters: { + query?: { + /** @description Ordre + * + * * `production_site` - Production site + * * `-production_site` - Production site (décroissant) + * * `valid_until` - Valid until + * * `-valid_until` - Valid until (décroissant) */ + order_by?: PathsApiDoubleCountingAgreementsGetParametersQueryOrder_by[] + /** @description Which field to use when ordering the results. */ + ordering?: string + /** @description A search term. */ + search?: string + } + header?: never + path?: never + cookie?: never } - /** - * @description * `UNKNOWN` - UNKNOWN - * * `RFC` - RFC - * * `STOCK` - STOCK - * * `BLENDING` - BLENDING - * * `EXPORT` - EXPORT - * * `TRADING` - TRADING - * * `PROCESSING` - PROCESSING - * * `DIRECT` - DIRECT - * * `FLUSHED` - FLUSHED - * * `CONSUMPTION` - CONSUMPTION - * @enum {string} - */ - DeliveryTypeEnum: DeliveryTypeEnum - Depot: { - readonly id: number - name: string - city?: string - customs_id?: string - readonly country: components["schemas"]["Country"] - site_type?: components["schemas"]["SiteTypeEnum"] - address?: string - postal_code?: string - gps_coordinates?: string | null - accise?: string - /** - * Format: double - * @description Entre 0 et 1 - */ - electrical_efficiency?: number | null - /** - * Format: double - * @description Entre 0 et 1 - */ - thermal_efficiency?: number | null - /** - * Format: double - * @description En degrés Celsius - */ - useful_temperature?: number | null + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["DoubleCountingRegistrationPublic"][] + } + } } - EmptyResponse: { - empty?: string + } + double_counting_agreements_export_retrieve: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + /** @description Ordre + * + * * `production_site` - Production site + * * `-production_site` - Production site (décroissant) + * * `valid_until` - Valid until + * * `-valid_until` - Valid until (décroissant) */ + order_by?: PathsApiDoubleCountingAgreementsGetParametersQueryOrder_by[] + /** @description Which field to use when ordering the results. */ + ordering?: string + /** @description A search term. */ + search?: string + /** @description Year */ + year?: number + } + header?: never + path?: never + cookie?: never } - Entity: { - readonly id: number - name: string - entity_type?: components["schemas"]["EntityTypeEnum"] - has_mac?: boolean - has_trading?: boolean - has_direct_deliveries?: boolean - has_stocks?: boolean - preferred_unit?: components["schemas"]["PreferredUnitEnum"] - legal_name?: string - registration_id?: string - sustainability_officer_phone_number?: string - sustainability_officer?: string - registered_address?: string - registered_zipcode?: string - registered_city?: string - registered_country?: number | null - activity_description?: string - /** Format: uri */ - website?: string - vat_number?: string + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": string + } + } } - EntityPreview: { - readonly id: number - readonly name: string - readonly entity_type: components["schemas"]["EntityTypeEnum"] + } + double_counting_applications_retrieve: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path: { + /** @description A unique integer value identifying this Dossier Double Compte. */ + id: number + } + cookie?: never } - EntitySummary: { - readonly id: number - name: string - entity_type?: components["schemas"]["EntityTypeEnum"] + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["DoubleCountingApplication"] + } + } } - /** - * @description * `Producteur` - Producteur - * * `Opérateur` - Opérateur - * * `Administration` - Administration - * * `Trader` - Trader - * * `Auditor` - Auditeur - * * `Administration Externe` - Administration Externe - * * `Charge Point Operator` - Charge Point Operator - * * `Compagnie aérienne` - Compagnie aérienne - * * `Unknown` - Unknown - * * `Power or Heat Producer` - Producteur d'électricité ou de chaleur - * @enum {string} - */ - EntityTypeEnum: EntityTypeEnum - ErrorResponse: { - message: string + } + double_counting_applications_export_retrieve: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path: { + /** @description A unique integer value identifying this Dossier Double Compte. */ + id: number + } + cookie?: never } - FeedStock: { - name: string - name_en: string - code: string - category?: components["schemas"]["CategoryEnum"] - is_double_compte?: boolean + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/force-download": string + } + } + } + } + double_counting_applications_update_approved_quotas_create: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path: { + /** @description A unique integer value identifying this Dossier Double Compte. */ + id: number + } + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["UpdatedQuotasRequest"] + "application/x-www-form-urlencoded": components["schemas"]["UpdatedQuotasRequest"] + "multipart/form-data": components["schemas"]["UpdatedQuotasRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["Response"] + } + } + } + } + double_counting_applications_add_create: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["DoubleCountingAdminAddRequest"] + "application/x-www-form-urlencoded": components["schemas"]["DoubleCountingAdminAddRequest"] + "multipart/form-data": components["schemas"]["DoubleCountingAdminAddRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["Response"] + } + } + } + } + double_counting_applications_approve_create: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path?: never + cookie?: never } - GenericCertificate: { - certificate_id: string - certificate_type: components["schemas"]["CertificateTypeEnum"] - certificate_holder: string - certificate_issuer?: string | null - address?: string | null - /** Format: date */ - valid_from: string - /** Format: date */ - valid_until: string - download_link?: string | null - scope?: unknown - input?: unknown - output?: unknown + requestBody: { + content: { + "application/json": components["schemas"]["ApprouveDoubleCountingRequest"] + "application/x-www-form-urlencoded": components["schemas"]["ApprouveDoubleCountingRequest"] + "multipart/form-data": components["schemas"]["ApprouveDoubleCountingRequest"] + } } - /** - * @description * `Default` - Valeurs par défaut - * * `Actual` - Valeurs réelles - * * `NUTS2` - Valeurs NUTS2 - * @enum {string} - */ - GesOptionEnum: GesOptionEnum - GroupAssignmentResponse: { - assigned_tickets_count: number + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["Response"] + } + } } - /** - * @description * `DRAFT` - DRAFT - * * `PENDING` - PENDING - * * `ACCEPTED` - ACCEPTED - * * `REJECTED` - REJECTED - * * `FROZEN` - FROZEN - * * `DELETED` - DELETED - * @enum {string} - */ - LotStatusEnum: LotStatusEnum - PaginatedEntityPreviewList: { - /** @example 123 */ - count: number - /** - * Format: uri - * @example http://api.example.org/accounts/?page=4 - */ - next?: string | null - /** - * Format: uri - * @example http://api.example.org/accounts/?page=2 - */ - previous?: string | null - results: components["schemas"]["EntityPreview"][] + } + double_counting_applications_check_admin_files_create: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + /** @description Which field to use when ordering the results. */ + ordering?: string + /** @description A search term. */ + search?: string + } + header?: never + path?: never + cookie?: never } - PaginatedSafTicketList: { - /** @example 123 */ - count: number - /** - * Format: uri - * @example http://api.example.org/accounts/?page=4 - */ - next?: string | null - /** - * Format: uri - * @example http://api.example.org/accounts/?page=2 - */ - previous?: string | null - results: components["schemas"]["SafTicket"][] + requestBody: { + content: { + "application/json": components["schemas"]["CheckAdminFileRequest"] + "application/x-www-form-urlencoded": components["schemas"]["CheckAdminFileRequest"] + "multipart/form-data": components["schemas"]["CheckAdminFileRequest"] + } } - PaginatedSafTicketSourceList: { - /** @example 123 */ - count: number - /** - * Format: uri - * @example http://api.example.org/accounts/?page=4 - */ - next?: string | null - /** - * Format: uri - * @example http://api.example.org/accounts/?page=2 - */ - previous?: string | null - results: components["schemas"]["SafTicketSource"][] + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["CheckFileResponse"][] + } + } } - /** - * @description * `l` - litres - * * `kg` - kg - * * `MJ` - MJ - * @enum {string} - */ - PreferredUnitEnum: PreferredUnitEnum - ProductionSite: { - readonly id: number - readonly producer: components["schemas"]["Entity"] - name: string - readonly country: components["schemas"]["Country"] - /** Format: date */ - date_mise_en_service?: string | null - ges_option?: components["schemas"]["GesOptionEnum"] - eligible_dc?: boolean - dc_reference?: string - site_siret?: string - address?: string - city?: string - postal_code?: string - gps_coordinates?: string | null - manager_name?: string - manager_phone?: string - manager_email?: string + } + double_counting_applications_check_file_create: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path?: never + cookie?: never } - SafTicket: { - readonly id: number - carbure_id?: string | null - year: number - assignment_period: number - status?: components["schemas"]["StatusEnum"] - /** Format: date */ - agreement_date?: string | null - readonly supplier: string - readonly client: string - /** Format: double */ - volume: number - readonly feedstock: components["schemas"]["FeedStock"] - readonly biofuel: components["schemas"]["Biofuel"] - readonly country_of_origin: components["schemas"]["Country"] - /** Format: double */ - ghg_reduction?: number + requestBody?: { + content: { + "multipart/form-data": { + /** Format: binary */ + file?: string + } + } } - SafTicketDetails: { - readonly id: number - carbure_id?: string | null - year: number - assignment_period: number - status?: components["schemas"]["StatusEnum"] - /** Format: date-time */ - readonly created_at: string | null - readonly supplier: string - readonly client: string - free_field?: string | null - /** Format: date */ - agreement_date?: string | null - agreement_reference?: string | null - /** Format: double */ - volume: number - readonly feedstock: components["schemas"]["FeedStock"] - readonly biofuel: components["schemas"]["Biofuel"] - readonly country_of_origin: components["schemas"]["Country"] - readonly carbure_producer: components["schemas"]["EntityPreview"] - unknown_producer?: string | null - readonly carbure_production_site: components["schemas"]["ProductionSite"] - unknown_production_site?: string | null - /** Format: date */ - production_site_commissioning_date?: string | null - /** Format: double */ - eec?: number - /** Format: double */ - el?: number - /** Format: double */ - ep?: number - /** Format: double */ - etd?: number - /** Format: double */ - eu?: number - /** Format: double */ - esca?: number - /** Format: double */ - eccs?: number - /** Format: double */ - eccr?: number - /** Format: double */ - eee?: number - /** Format: double */ - ghg_reduction?: number - /** Format: double */ - ghg_total?: number - client_comment?: string | null - readonly parent_ticket_source: components["schemas"]["SafTicketSourcePreview"] + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["CheckFileResponse"] + } + } } - SafTicketPreview: { - readonly id: number - carbure_id?: string | null - readonly client: string - /** Format: date */ - agreement_date?: string | null - /** Format: double */ - volume: number - status?: components["schemas"]["StatusEnum"] - /** Format: date-time */ - readonly created_at: string | null + } + double_counting_applications_export_application_retrieve: { + parameters: { + query: { + /** @description Doublecount application ID */ + dca_id: number + /** @description Dechet industriel */ + di?: string + /** @description Entity ID */ + entity_id: number + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": string + } + } + } + } + double_counting_applications_list_admin_retrieve: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path?: never + cookie?: never } - SafTicketSource: { - readonly id: number - carbure_id?: string | null - year: number - delivery_period: number - /** Format: date-time */ - readonly created_at: string | null - /** Format: double */ - total_volume: number - /** Format: double */ - assigned_volume: number - readonly feedstock: components["schemas"]["FeedStock"] - readonly biofuel: components["schemas"]["Biofuel"] - readonly country_of_origin: components["schemas"]["Country"] - /** Format: double */ - ghg_reduction?: number - readonly assigned_tickets: components["schemas"]["SafTicketPreview"][] - readonly parent_lot: components["schemas"]["SafTicketSourceParentLot"] + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["ApplicationListe"] + } + } } - SafTicketSourceAssignment: { - client_id: number - /** Format: double */ - volume: number - agreement_reference?: string - agreement_date?: string - free_field?: string | null - assignment_period: number + } + double_counting_applications_reject_create: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path?: never + cookie?: never } - SafTicketSourceDetails: { - readonly id: number - carbure_id?: string | null - year: number - delivery_period: number - /** Format: date-time */ - readonly created_at: string | null - readonly added_by: components["schemas"]["EntityPreview"] - /** Format: double */ - total_volume: number - /** Format: double */ - assigned_volume: number - readonly feedstock: components["schemas"]["FeedStock"] - readonly biofuel: components["schemas"]["Biofuel"] - readonly country_of_origin: components["schemas"]["Country"] - readonly assigned_tickets: components["schemas"]["SafTicketPreview"][] - readonly carbure_producer: components["schemas"]["EntityPreview"] - unknown_producer?: string | null - readonly carbure_production_site: components["schemas"]["ProductionSite"] - unknown_production_site?: string | null - /** Format: date */ - production_site_commissioning_date?: string | null - /** Format: double */ - eec?: number - /** Format: double */ - el?: number - /** Format: double */ - ep?: number - /** Format: double */ - etd?: number - /** Format: double */ - eu?: number - /** Format: double */ - esca?: number - /** Format: double */ - eccs?: number - /** Format: double */ - eccr?: number - /** Format: double */ - eee?: number - /** Format: double */ - ghg_reduction?: number - /** Format: double */ - ghg_total?: number - parent_lot: components["schemas"]["CarbureLotPublic"] + requestBody: { + content: { + "application/json": components["schemas"]["RejectDoubleCountingRequest"] + "application/x-www-form-urlencoded": components["schemas"]["RejectDoubleCountingRequest"] + "multipart/form-data": components["schemas"]["RejectDoubleCountingRequest"] + } } - SafTicketSourceGroupAssignment: { - client_id: number - /** Format: double */ - volume: number - agreement_reference?: string - agreement_date?: string - free_field?: string | null - assignment_period: number - ticket_sources_ids: number[] + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["Response"] + } + } } - SafTicketSourceParentLot: { - readonly id: number - carbure_id?: string + } + double_counting_snapshot_retrieve: { + parameters: { + query: { + /** @description Entity ID */ + entity_id: number + } + header?: never + path?: never + cookie?: never } - SafTicketSourcePreview: { - readonly id: number - carbure_id?: string | null - /** Format: double */ - total_volume: number - /** Format: double */ - assigned_volume: number + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["ApplicationSnapshot"] + } + } } - /** - * @description * `OTHER` - Autre - * * `EFS` - EFS - * * `EFPE` - EFPE - * * `OIL DEPOT` - OIL DEPOT - * * `BIOFUEL DEPOT` - BIOFUEL DEPOT - * * `HEAT PLANT` - HEAT PLANT - * * `POWER PLANT` - POWER PLANT - * * `COGENERATION PLANT` - COGENERATION PLANT - * * `PRODUCTION BIOLIQUID` - PRODUCTION BIOLIQUID - * * `EFCA` - EFCA - * @enum {string} - */ - SiteTypeEnum: SiteTypeEnum - /** - * @description * `PENDING` - En attente - * * `ACCEPTED` - Accepté - * * `REJECTED` - Refusé - * @enum {string} - */ - StatusEnum: StatusEnum - /** - * @description * `DAU` - DAU - * * `DAE` - DAE - * * `DSA` - DSA - * * `DSAC` - DSAC - * * `DSP` - DSP - * * `OTHER` - OTHER - * @enum {string} - */ - TransportDocumentTypeEnum: TransportDocumentTypeEnum } - responses: never - parameters: never - requestBodies: never - headers: never - pathItems: never -} -export type $defs = Record -export interface operations { entities_enable_create: { parameters: { query: { @@ -980,9 +2560,9 @@ export interface operations { } requestBody?: { content: { - "application/json": components["schemas"]["EmptyResponse"] - "application/x-www-form-urlencoded": components["schemas"]["EmptyResponse"] - "multipart/form-data": components["schemas"]["EmptyResponse"] + "application/json": components["schemas"]["EmptyResponseRequest"] + "application/x-www-form-urlencoded": components["schemas"]["EmptyResponseRequest"] + "multipart/form-data": components["schemas"]["EmptyResponseRequest"] } } responses: { @@ -1293,8 +2873,10 @@ export interface operations { production_sites?: string[] /** @description A search term. */ search?: string - status?: string - /** @description Les valeurs multiples doivent être séparées par des virgules. */ + /** @description * `HISTORY` - HISTORY + * * `AVAILABLE` - AVAILABLE */ + status?: PathsApiSafTicketSourcesGetParametersQueryStatus + /** @description Comma-separated list of supplier names */ suppliers?: string[] year?: number } @@ -1354,9 +2936,9 @@ export interface operations { } requestBody: { content: { - "application/json": components["schemas"]["SafTicketSourceAssignment"] - "application/x-www-form-urlencoded": components["schemas"]["SafTicketSourceAssignment"] - "multipart/form-data": components["schemas"]["SafTicketSourceAssignment"] + "application/json": components["schemas"]["SafTicketSourceAssignmentRequest"] + "application/x-www-form-urlencoded": components["schemas"]["SafTicketSourceAssignmentRequest"] + "multipart/form-data": components["schemas"]["SafTicketSourceAssignmentRequest"] } } responses: { @@ -1401,8 +2983,10 @@ export interface operations { production_sites?: string[] /** @description A search term. */ search?: string - status?: string - /** @description Les valeurs multiples doivent être séparées par des virgules. */ + /** @description * `HISTORY` - HISTORY + * * `AVAILABLE` - AVAILABLE */ + status?: PathsApiSafTicketSourcesGetParametersQueryStatus + /** @description Comma-separated list of supplier names */ suppliers?: string[] year?: number } @@ -1455,8 +3039,10 @@ export interface operations { production_sites?: string[] /** @description A search term. */ search?: string - status?: string - /** @description Les valeurs multiples doivent être séparées par des virgules. */ + /** @description * `HISTORY` - HISTORY + * * `AVAILABLE` - AVAILABLE */ + status?: PathsApiSafTicketSourcesGetParametersQueryStatus + /** @description Comma-separated list of supplier names */ suppliers?: string[] year?: number } @@ -1488,9 +3074,9 @@ export interface operations { } requestBody: { content: { - "application/json": components["schemas"]["SafTicketSourceGroupAssignment"] - "application/x-www-form-urlencoded": components["schemas"]["SafTicketSourceGroupAssignment"] - "multipart/form-data": components["schemas"]["SafTicketSourceGroupAssignment"] + "application/json": components["schemas"]["SafTicketSourceGroupAssignmentRequest"] + "application/x-www-form-urlencoded": components["schemas"]["SafTicketSourceGroupAssignmentRequest"] + "multipart/form-data": components["schemas"]["SafTicketSourceGroupAssignmentRequest"] } } responses: { @@ -1551,7 +3137,10 @@ export interface operations { production_sites?: string[] /** @description A search term. */ search?: string - status?: string + /** @description * `PENDING` - En attente + * * `ACCEPTED` - Accepté + * * `REJECTED` - Refusé */ + status?: PathsApiSafTicketsGetParametersQueryStatus /** @description Les valeurs multiples doivent être séparées par des virgules. */ suppliers?: string[] year?: number @@ -1612,9 +3201,9 @@ export interface operations { } requestBody?: { content: { - "application/json": components["schemas"]["Comment"] - "application/x-www-form-urlencoded": components["schemas"]["Comment"] - "multipart/form-data": components["schemas"]["Comment"] + "application/json": components["schemas"]["CommentRequest"] + "application/x-www-form-urlencoded": components["schemas"]["CommentRequest"] + "multipart/form-data": components["schemas"]["CommentRequest"] } } responses: { @@ -1651,9 +3240,9 @@ export interface operations { } requestBody?: { content: { - "application/json": components["schemas"]["Comment"] - "application/x-www-form-urlencoded": components["schemas"]["Comment"] - "multipart/form-data": components["schemas"]["Comment"] + "application/json": components["schemas"]["CommentRequest"] + "application/x-www-form-urlencoded": components["schemas"]["CommentRequest"] + "multipart/form-data": components["schemas"]["CommentRequest"] } } responses: { @@ -1715,9 +3304,9 @@ export interface operations { } requestBody?: { content: { - "application/json": components["schemas"]["Comment"] - "application/x-www-form-urlencoded": components["schemas"]["Comment"] - "multipart/form-data": components["schemas"]["Comment"] + "application/json": components["schemas"]["CommentRequest"] + "application/x-www-form-urlencoded": components["schemas"]["CommentRequest"] + "multipart/form-data": components["schemas"]["CommentRequest"] } } responses: { @@ -1774,7 +3363,10 @@ export interface operations { production_sites?: string[] /** @description A search term. */ search?: string - status?: string + /** @description * `PENDING` - En attente + * * `ACCEPTED` - Accepté + * * `REJECTED` - Refusé */ + status?: PathsApiSafTicketsGetParametersQueryStatus /** @description Les valeurs multiples doivent être séparées par des virgules. */ suppliers?: string[] year?: number @@ -1832,7 +3424,10 @@ export interface operations { production_sites?: string[] /** @description A search term. */ search?: string - status?: string + /** @description * `PENDING` - En attente + * * `ACCEPTED` - Accepté + * * `REJECTED` - Refusé */ + status?: PathsApiSafTicketsGetParametersQueryStatus /** @description Les valeurs multiples doivent être séparées par des virgules. */ suppliers?: string[] year?: number @@ -1883,6 +3478,81 @@ export interface operations { } } } + user_retrieve: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["UserSettingsResponseSeriaizer"] + } + } + } + } + user_request_access_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["RequestAccessRequest"] + "application/x-www-form-urlencoded": components["schemas"]["RequestAccessRequest"] + "multipart/form-data": components["schemas"]["RequestAccessRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["ResponseSuccess"] + } + } + } + } + user_revoke_access_create: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + "application/json": components["schemas"]["RevokeAccessRequest"] + "application/x-www-form-urlencoded": components["schemas"]["RevokeAccessRequest"] + "multipart/form-data": components["schemas"]["RevokeAccessRequest"] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + "application/json": components["schemas"]["ResponseSuccess"] + } + } + } + } +} +export enum PathsApiDoubleCountingAgreementsGetParametersQueryOrder_by { + ValueMinusproduction_site = "-production_site", + ValueMinusvalid_until = "-valid_until", + production_site = "production_site", + valid_until = "valid_until", } export enum PathsApiSafTicketSourcesGetParametersQueryOrder { ValueMinusfeedstock = "-feedstock", @@ -1894,6 +3564,10 @@ export enum PathsApiSafTicketSourcesGetParametersQueryOrder { period = "period", volume = "volume", } +export enum PathsApiSafTicketSourcesGetParametersQueryStatus { + AVAILABLE = "AVAILABLE", + HISTORY = "HISTORY", +} export enum PathsApiSafTicketsGetParametersQueryOrder { ValueMinusclient = "-client", ValueMinuscreated_at = "-created_at", @@ -1910,6 +3584,11 @@ export enum PathsApiSafTicketsGetParametersQueryOrder { suppliers = "suppliers", volume = "volume", } +export enum PathsApiSafTicketsGetParametersQueryStatus { + ACCEPTED = "ACCEPTED", + PENDING = "PENDING", + REJECTED = "REJECTED", +} export enum CategoryEnum { CONV = "CONV", ANN_IX_A = "ANN-IX-A", @@ -1940,6 +3619,18 @@ export enum DeliveryTypeEnum { FLUSHED = "FLUSHED", CONSUMPTION = "CONSUMPTION", } +export enum DoubleCountingAgreementStatus { + ACTIVE = "ACTIVE", + EXPIRED = "EXPIRED", + EXPIRES_SOON = "EXPIRES_SOON", + INCOMING = "INCOMING", +} +export enum DoubleCountingStatus { + PENDING = "PENDING", + INPROGRESS = "INPROGRESS", + REJECTED = "REJECTED", + ACCEPTED = "ACCEPTED", +} export enum EntityTypeEnum { Producer = "Producteur", Operator = "Op\u00E9rateur", @@ -1952,6 +3643,17 @@ export enum EntityTypeEnum { Unknown = "Unknown", PowerOrHeatProducer = "Power or Heat Producer", } +export enum ExtAdminPagesEnum { + DCA = "DCA", + AGRIMER = "AGRIMER", + TIRIB = "TIRIB", + AIRLINE = "AIRLINE", + ELEC = "ELEC", +} +export enum FileTypeEnum { + SOURCING = "SOURCING", + DECISION = "DECISION", +} export enum GesOptionEnum { Default = "Default", Actual = "Actual", @@ -1970,6 +3672,12 @@ export enum PreferredUnitEnum { kg = "kg", MJ = "MJ", } +export enum RoleEnum { + ReadOnly = "RO", + ReadWrite = "RW", + Admin = "ADMIN", + Auditor = "AUDITOR", +} export enum SiteTypeEnum { OTHER = "OTHER", EFS = "EFS", @@ -1982,11 +3690,6 @@ export enum SiteTypeEnum { PRODUCTION_BIOLIQUID = "PRODUCTION BIOLIQUID", EFCA = "EFCA", } -export enum StatusEnum { - PENDING = "PENDING", - ACCEPTED = "ACCEPTED", - REJECTED = "REJECTED", -} export enum TransportDocumentTypeEnum { DAU = "DAU", DAE = "DAE", @@ -1995,3 +3698,9 @@ export enum TransportDocumentTypeEnum { DSP = "DSP", OTHER = "OTHER", } +export enum UserRightsRequestsStatusEnum { + Pending = "PENDING", + Accepted = "ACCEPTED", + Rejected = "REJECTED", + Revoked = "REVOKED", +} diff --git a/front/src/auth/api.ts b/front/src/auth/api.ts index 03d08e560..aeb40ae46 100644 --- a/front/src/auth/api.ts +++ b/front/src/auth/api.ts @@ -1,4 +1,4 @@ -import { api } from "common/services/api" +import { api as apiFetch } from "common/services/api-fetch" export function register( email: string, @@ -6,27 +6,40 @@ export function register( password1: string, password2: string ) { - return api.post("/auth/register", { email, name, password1, password2 }) + return apiFetch.POST("/auth/register/", { + body: { + email, + name, + password1, + password2, + }, + }) } export function login(username: string, password: string) { - return api.post("auth/login", { username, password }) + return apiFetch.POST("/auth/login/", { + body: { username, password }, + }) } export function logout() { - return api.post("auth/logout") + return apiFetch.GET("/auth/logout/") } export function requestOTP() { - return api.post("auth/request-otp") + return apiFetch.GET("/auth/request-otp/") } export function verifyOTP(otp_token: string) { - return api.post("auth/verify-otp", { otp_token }) + return apiFetch.POST("/auth/verify-otp/", { + body: { otp_token }, + }) } export function requestResetPassword(username: string) { - return api.post("auth/request-password-reset", { username }) + return apiFetch.POST("/auth/request-password-reset/", { + body: { username }, + }) } export function resetPassword( @@ -39,16 +52,20 @@ export function resetPassword( throw new Error("Missing token for password reset") } - return api.post("auth/reset-password", { - uidb64, - token, - password1, - password2, + return apiFetch.POST("/auth/reset-password/", { + body: { + uidb64, + token, + password1, + password2, + }, }) } export function requestActivateAccount(email: string) { - return api.post("auth/request-activation-link", { email }) + return apiFetch.POST("/auth/request-activation-link/", { + body: { email }, + }) } export function activateAccount( @@ -63,9 +80,11 @@ export function activateAccount( throw new Error("Missing token for account activation") } - return api.post("auth/activate", { - uidb64, - token, - ...(inviteUser ? { invite: 1 } : {}), + return apiFetch.POST("/auth/activate/", { + body: { + uidb64, + token, + ...(inviteUser ? { invite: 1 } : {}), + }, }) } diff --git a/front/src/auth/components/activate.tsx b/front/src/auth/components/activate.tsx index 39d8620da..305d22119 100644 --- a/front/src/auth/components/activate.tsx +++ b/front/src/auth/components/activate.tsx @@ -48,7 +48,7 @@ export const Activate = () => { const userInvitedSearchParams = createSearchParams({ uidb64: uidb64 || "", - token: activate.result?.data.data.token || "", + token: activate.result?.data?.token || "", }) return ( diff --git a/front/src/auth/components/register.tsx b/front/src/auth/components/register.tsx index 27470a6dc..ddfe0d558 100644 --- a/front/src/auth/components/register.tsx +++ b/front/src/auth/components/register.tsx @@ -7,9 +7,8 @@ import { TextInput } from "common/components/input" import { Container, Switcher } from "./login" import { useNotify } from "common/components/notifications" import { useMutation } from "common/hooks/async" +import { HttpError } from "common/services/api-fetch" import * as api from "../api" -import { AxiosError } from "axios" -import { Api } from "common/services/api" export const Register = () => { const { t } = useTranslation() @@ -31,8 +30,7 @@ export const Register = () => { onError: (error) => { const errors = [] - const errorData = - (error as AxiosError>).response?.data?.data ?? {} + const errorData = (error as HttpError)?.data for (const field in errorData) { const fieldErrors = errorData[field] diff --git a/front/src/carbure/__test__/data.ts b/front/src/carbure/__test__/data.ts index 1695f0470..8d60c4810 100644 --- a/front/src/carbure/__test__/data.ts +++ b/front/src/carbure/__test__/data.ts @@ -44,6 +44,13 @@ export const company: Entity = { sustainability_officer: "", sustainability_officer_phone_number: "", preferred_unit: PreferredUnitEnum.l, + is_enabled: true, + sustainability_officer_email: "", + vat_number: "", + website: "", + activity_description: "", + has_saf: false, + ext_admin_pages: [], } export const producer: Entity = { @@ -65,6 +72,13 @@ export const producer: Entity = { sustainability_officer: "", sustainability_officer_phone_number: "", preferred_unit: PreferredUnitEnum.l, + is_enabled: true, + sustainability_officer_email: "", + vat_number: "", + website: "", + activity_description: "", + has_saf: false, + ext_admin_pages: [], } export const trader: Entity = { @@ -86,6 +100,13 @@ export const trader: Entity = { sustainability_officer: "", sustainability_officer_phone_number: "", preferred_unit: PreferredUnitEnum.l, + is_enabled: true, + sustainability_officer_email: "", + vat_number: "", + website: "", + activity_description: "", + has_saf: false, + ext_admin_pages: [], } export const operator: Entity = { @@ -107,6 +128,13 @@ export const operator: Entity = { sustainability_officer: "", sustainability_officer_phone_number: "", preferred_unit: PreferredUnitEnum.l, + is_enabled: true, + sustainability_officer_email: "", + vat_number: "", + website: "", + activity_description: "", + has_saf: false, + ext_admin_pages: [], } export const admin: Entity = { @@ -128,6 +156,13 @@ export const admin: Entity = { sustainability_officer: "", sustainability_officer_phone_number: "", preferred_unit: PreferredUnitEnum.l, + is_enabled: true, + sustainability_officer_email: "", + vat_number: "", + website: "", + activity_description: "", + has_saf: false, + ext_admin_pages: [], } export const cpo: Entity = { @@ -149,6 +184,13 @@ export const cpo: Entity = { sustainability_officer: "", sustainability_officer_phone_number: "", preferred_unit: PreferredUnitEnum.l, + is_enabled: true, + sustainability_officer_email: "", + vat_number: "", + website: "", + activity_description: "", + has_saf: false, + ext_admin_pages: [], } // DELIVERY SITES @@ -211,7 +253,8 @@ export const entityRight: UserRight = { entity: producer, role: UserRole.Admin, expiration_date: "", - date_added: "2020-12-23T16:18:27.233Z", + email: "test@test.test", + name: "test", } export const entityRequest: UserRightRequest = { diff --git a/front/src/carbure/__test__/helpers.ts b/front/src/carbure/__test__/helpers.ts index c796e901b..2c4b0e77f 100644 --- a/front/src/carbure/__test__/helpers.ts +++ b/front/src/carbure/__test__/helpers.ts @@ -1,6 +1,6 @@ import { screen, waitForElementToBeRemoved } from "@testing-library/react" import userEvent from "@testing-library/user-event" -import { http, HttpResponse } from "msw" +import { http, HttpResponse, JsonBodyType } from "msw" export async function waitWhileLoading() { const loaders = screen.queryAllByTestId("loader") @@ -68,14 +68,15 @@ export function setEntity(nextEntity: any) { Data.set("entity", nextEntity) } -export const mockGetWithResponseData = (url: string, data: T) => { +export const mockGetWithResponseData = ( + url: string, + data: T +) => { return http.get("/api" + url, () => { - return HttpResponse.json({ - status: "success", - data, - }) + return HttpResponse.json(data) }) } + export const mockPostWithResponseData = ( url: string, data?: any, diff --git a/front/src/carbure/api.ts b/front/src/carbure/api.ts index 20d98d12f..7707f658d 100644 --- a/front/src/carbure/api.ts +++ b/front/src/carbure/api.ts @@ -1,10 +1,10 @@ import api, { Api } from "common/services/api" import { AxiosResponse } from "axios" import { api as apiFetch } from "common/services/api-fetch" -import { User, Notification, EntityType, EntityCertificate } from "./types" +import { Notification, EntityType, EntityCertificate } from "./types" export function getUserSettings() { - return api.get>("/user") + return apiFetch.GET("/user/") } export function extract(res: AxiosResponse>) { diff --git a/front/src/carbure/hooks/entity.ts b/front/src/carbure/hooks/entity.ts index 1753ad312..305617d23 100644 --- a/front/src/carbure/hooks/entity.ts +++ b/front/src/carbure/hooks/entity.ts @@ -17,7 +17,7 @@ export interface EntityManager extends Entity { isIndustry: boolean isCPO: boolean canTrade: boolean - hasAdminRight: (page: ExternalAdminPages) => boolean + hasAdminRight: (page: ExternalAdminPages | `${ExternalAdminPages}`) => boolean hasRights: (...roles: UserRole[]) => boolean } @@ -35,6 +35,7 @@ export function useEntityManager( return { id: entityID, name: entity?.name ?? "", + is_enabled: entity?.is_enabled ?? false, entity_type: entity?.entity_type ?? EntityType.Operator, activity_description: entity?.activity_description ?? "", legal_name: entity?.legal_name ?? "", @@ -71,8 +72,8 @@ export function useEntityManager( website: entity?.website ?? "", vat_number: entity?.vat_number ?? "", - hasAdminRight: (page: ExternalAdminPages) => - entity?.ext_admin_pages?.includes(page) ?? false, + hasAdminRight: (page: ExternalAdminPages | `${ExternalAdminPages}`) => + entity?.ext_admin_pages?.includes(page as ExternalAdminPages) ?? false, hasRights: (...roles: UserRole[]) => (entityRights && roles.includes(entityRights.role)) ?? false, diff --git a/front/src/carbure/hooks/user.ts b/front/src/carbure/hooks/user.ts index 2c04c340a..8598e1af2 100644 --- a/front/src/carbure/hooks/user.ts +++ b/front/src/carbure/hooks/user.ts @@ -21,13 +21,13 @@ export function useUserManager(): UserManager { key: "user-settings", params: [], onSuccess: (response) => { - if (response.data?.data?.email) { - Sentry.setUser({ email: response.data.data.email }) + if (response.data?.email) { + Sentry.setUser({ email: response.data.email }) } }, }) - const res = settings.result?.data.data + const res = settings.result?.data const email = res?.email ?? "" const rights = res?.rights ?? [] const requests = res?.requests ?? [] @@ -45,7 +45,7 @@ export function useUserManager(): UserManager { } function getFirstEntity() { - return rights[0]?.entity ?? null + return (rights[0]?.entity as Entity) ?? null } function isAuthenticated() { diff --git a/front/src/carbure/types.ts b/front/src/carbure/types.ts index 4ff1377d6..dc0cf6b67 100644 --- a/front/src/carbure/types.ts +++ b/front/src/carbure/types.ts @@ -3,62 +3,21 @@ import { SiteTypeEnum as SiteType, GesOptionEnum as GESOption, PreferredUnitEnum as Unit, + UserRightsRequestsStatusEnum as UserRightStatus, + RoleEnum as UserRole, + ExtAdminPagesEnum as ExternalAdminPages, } from "api-schema" import { apiTypes } from "common/services/api-fetch.types" -export interface Entity { - id: number - name: string - entity_type: EntityType - legal_name: string - registration_id: string - sustainability_officer_phone_number: string - sustainability_officer_email?: string - sustainability_officer: string - registered_address: string - registered_city: string - registered_zipcode: string - registered_country?: Country - has_mac: boolean - has_trading: boolean - has_stocks: boolean - has_direct_deliveries: boolean - preferred_unit?: Unit - default_certificate?: string - ext_admin_pages?: ExternalAdminPages[] - has_saf?: boolean - has_elec: boolean - activity_description?: string - website?: string - vat_number?: string - is_enabled?: boolean -} +export type Entity = apiTypes["UserEntity"] export type EntityPreview = apiTypes["EntityPreview"] -export interface User { - email: string - rights: UserRight[] - requests: UserRightRequest[] -} +export type User = apiTypes["UserSettingsResponseSeriaizer"] -export interface UserRight { - entity: Entity - date_added: string - expiration_date: string - role: UserRole -} +export type UserRight = apiTypes["UserRights"] -export interface UserRightRequest { - id: number - user: [string] - entity: Entity - status: UserRightStatus - date_requested: string - expiration_date: string - comment: string - role: UserRole -} +export type UserRightRequest = apiTypes["UserRightsRequests"] export interface Notification { id: number @@ -117,21 +76,7 @@ export interface UploadCheckReportInfo { error_count: number } -export type ExternalAdminPages = "DCA" | "TIRIB" | "AIRLINE" | "ELEC" - -export enum UserRole { - ReadOnly = "RO", - ReadWrite = "RW", - Admin = "ADMIN", - Auditor = "AUDITOR", -} - -export enum UserRightStatus { - Pending = "PENDING", - Accepted = "ACCEPTED", - Rejected = "REJECTED", - Revoked = "REVOKED", -} +// export type ExternalAdminPages = `${apiTypes["ExtAdminPagesEnum"]}` export enum NotificationType { CorrectionRequest = "CORRECTION_REQUEST", @@ -171,3 +116,9 @@ export { EntityType } export { SiteType } export { GESOption, Unit } + +export { UserRightStatus } + +export { UserRole } + +export { ExternalAdminPages } diff --git a/front/src/carbure/utils/normalizers.ts b/front/src/carbure/utils/normalizers.ts index 6179d9077..93347aefd 100644 --- a/front/src/carbure/utils/normalizers.ts +++ b/front/src/carbure/utils/normalizers.ts @@ -80,6 +80,15 @@ export const normalizeEntity: Normalizer = (entity) => ({ sustainability_officer: entity.sustainability_officer, sustainability_officer_phone_number: entity.sustainability_officer_phone_number, + ext_admin_pages: entity.ext_admin_pages, + activity_description: entity.activity_description, + default_certificate: entity.default_certificate, + has_saf: entity.has_saf, + is_enabled: entity.is_enabled, + preferred_unit: entity.preferred_unit, + sustainability_officer_email: entity.sustainability_officer, + vat_number: entity.vat_number, + website: entity.website, }, }) diff --git a/front/src/common/hooks/query-builder-2.ts b/front/src/common/hooks/query-builder-2.ts index fbae63c30..5975fceb8 100644 --- a/front/src/common/hooks/query-builder-2.ts +++ b/front/src/common/hooks/query-builder-2.ts @@ -15,7 +15,7 @@ export type CBSnapshot = Record export type CBFilterSelection = Record -export const CBQUERY_RESET: Partial> = { +export const CBQUERY_RESET: Partial> = { limit: undefined, page: 1, order: undefined, @@ -33,37 +33,30 @@ const formatOrder = ( return [mapping[order.direction]] as Columns } -interface BaseCBQueryStates { +export type CBQueryStates< + S extends string | undefined, + T extends string | undefined, +> = { entity: Entity year: number filters: CBFilterSelection search?: string - status: string - type?: string // Extra info used when we have to call the same endpoint for two different views (See saf operator page) + status?: S + type?: T // Extra info used when we have to call the same endpoint for two different views (See saf operator page) selection: number[] page: number limit?: number order?: Order } -export type CBQueryStates< - GenericCBQueryStates extends BaseCBQueryStates = BaseCBQueryStates, -> = { - entity: GenericCBQueryStates["entity"] - year: GenericCBQueryStates["year"] - filters: GenericCBQueryStates["filters"] - search?: GenericCBQueryStates["search"] - status: GenericCBQueryStates["status"] - type?: GenericCBQueryStates["type"] - page: GenericCBQueryStates["page"] - selection: GenericCBQueryStates["selection"] - limit?: GenericCBQueryStates["limit"] - order?: GenericCBQueryStates["order"] -} -export interface CBQueryParams { +export interface CBQueryParams< + Columns extends string[], + Status extends string | undefined, + Type extends string | undefined, +> { entity_id: number year: number - status: string - type?: string + status?: Status + type?: Type search?: string page: number limit?: number @@ -71,10 +64,11 @@ export interface CBQueryParams { } /* Hooks */ - -export function useCBQueryBuilder( - params: CBQueryStates -): CBQueryParams { +export function useCBQueryBuilder< + Columns extends string[], + Status extends string | undefined, + Type extends string | undefined, +>(params: CBQueryStates): CBQueryParams { const { entity, year, @@ -87,7 +81,7 @@ export function useCBQueryBuilder( filters, } = params - return useMemo>( + return useMemo>( () => ({ entity_id: entity.id, year, @@ -104,8 +98,9 @@ export function useCBQueryBuilder( } export function useCBQueryParamsStore< - GenericCBQueryStates extends BaseCBQueryStates = BaseCBQueryStates, ->(entity: Entity, year: number, status: string, type?: string) { + S extends string, + T extends string | undefined, +>(entity: Entity, year: number, status: S, type?: T) { const [limit, saveLimit] = useLimit() const [{ page, ...filtersParams }, setFiltersParams] = useFilterSearchParams() @@ -123,7 +118,7 @@ export function useCBQueryParamsStore< selection: [], page: computedPage, limit, - } as CBQueryStates, + } as CBQueryStates, { setEntity: (entity: Entity) => ({ entity, @@ -139,7 +134,7 @@ export function useCBQueryParamsStore< page: 1, }), - setStatus: (status: string) => { + setStatus: (status: S) => { return { status, filters: filtersParams, @@ -148,7 +143,7 @@ export function useCBQueryParamsStore< } }, - setType: (type: string) => { + setType: (type: T) => { return { type, filters: filtersParams, diff --git a/front/src/double-counting-admin/api.ts b/front/src/double-counting-admin/api.ts index a5d348b9e..6252fe3c8 100644 --- a/front/src/double-counting-admin/api.ts +++ b/front/src/double-counting-admin/api.ts @@ -1,51 +1,36 @@ -import api, { Api, download } from "common/services/api" +import { download } from "common/services/api" import { - AgreementDetails, - CheckDoubleCountingFilesResponse, - DoubleCountingAgreementsOverview, - DoubleCountingApplicationDetails, - DoubleCountingApplicationsOverview, - DoubleCountingSnapshot, -} from "../double-counting/types" + api as apiFetch, + download as downloadFetch, +} from "common/services/api-fetch" +import { PathsApiDoubleCountingAgreementsGetParametersQueryOrder_by } from "api-schema" // GLOBAL -export function getYears(entity_id: number) { - return api.get>("/double-counting/admin/years", { - params: { entity_id }, - }) -} - export function getSnapshot(entity_id: number) { - return api.get>( - "/double-counting/admin/snapshot", - { - params: { entity_id }, - } - ) + return apiFetch.GET("/double-counting/snapshot/", { + params: { query: { entity_id } }, + }) } // APPLICATIONS export function getDoubleCountingApplicationList(entity_id: number) { - return api.get>( - "/double-counting/admin/applications", - { - params: { entity_id }, - } - ) + return apiFetch.GET("/double-counting/applications/list-admin/", { + params: { query: { entity_id } }, + }) } export function getDoubleCountingApplication( entity_id: number, dca_id: number ) { - return api.get>( - "/double-counting/admin/applications/details", - { - params: { entity_id, dca_id }, - } - ) + return apiFetch.GET("/double-counting/applications/{id}/", { + params: { + path: { id: dca_id }, + query: { entity_id }, + }, + }) } export function adminAddDoubleCountingApplication( @@ -56,13 +41,16 @@ export function adminAddDoubleCountingApplication( certificate_id?: string, should_replace = false ) { - return api.post("/double-counting/admin/applications/add", { - entity_id, - production_site_id, - producer_id, - certificate_id, - file, - should_replace, + return apiFetch.POST("/double-counting/applications/add/", { + params: { query: { entity_id } }, + body: { + entity_id, + producer_id, + production_site_id, + certificate_id, + should_replace, + file: file as unknown as string, // hacky cast for file upload + }, }) } @@ -71,12 +59,12 @@ export function approveDoubleCountingQuotas( dca_id: number, approved_quotas: number[][] ) { - return api.post( - "/double-counting/admin/applications/update-approved-quotas", + return apiFetch.POST( + "/double-counting/applications/{id}/update-approved-quotas/", { - entity_id, - dca_id, - approved_quotas: JSON.stringify(approved_quotas), + params: { query: { entity_id }, path: { id: dca_id } }, + body: { approved_quotas }, + bodySerializer: JSON.stringify, } ) } @@ -86,7 +74,8 @@ export function downloadDoubleCountingApplication( dca_id: number, industrial_wastes?: string ) { - return download("/double-counting/admin/applications/export", { + // TODO: rework downloadFetch() to typecheck for endpoints with variable paths + return download(`/double-counting/applications/export-application`, { entity_id, dca_id, ...(industrial_wastes ? { di: industrial_wastes } : {}), @@ -94,12 +83,12 @@ export function downloadDoubleCountingApplication( } export function approveDoubleCountingApplication( - entity_id: number | undefined, + entity_id: number, dca_id: number ) { - return api.post("/double-counting/admin/applications/approve", { - entity_id, - dca_id, + return apiFetch.POST("/double-counting/applications/approve/", { + params: { query: { entity_id } }, + body: { dca_id }, }) } @@ -107,48 +96,55 @@ export function rejectDoubleCountingApplication( entity_id: number, dca_id: number ) { - return api.post("/double-counting/admin/applications/reject", { - entity_id, - dca_id: dca_id, + return apiFetch.POST("/double-counting/applications/reject/", { + params: { query: { entity_id } }, + body: { dca_id }, }) } // AGREEMENTS export function downloadDoubleCountingAgreementList(entity_id: number) { - return download("/double-counting/admin/agreements", { + return downloadFetch("/double-counting/agreements/export/", { entity_id, - as_excel_file: true, }) } export function getDoubleCountingAgreementList( entity_id: number, order_by?: string, - direction?: string + ordering?: string ) { - return api.get>( - "/double-counting/admin/agreements", - { params: { entity_id, order_by, direction } } - ) + return apiFetch.GET("/double-counting/agreements/agreement-admin/", { + params: { + query: { + entity_id, + ordering, + order_by: order_by + ? [ + order_by as PathsApiDoubleCountingAgreementsGetParametersQueryOrder_by, + ] + : undefined, + }, + }, + }) } export function getDoubleCountingAgreement( entity_id: number, agreement_id: number ) { - return api.get>( - "/double-counting/admin/agreements/details", - { - params: { entity_id, agreement_id }, - } - ) + return apiFetch.GET("/double-counting/agreements/{id}/", { + params: { + query: { entity_id }, + path: { id: agreement_id }, + }, + }) } export function checkDoubleCountingFiles(entity_id: number, files: FileList) { - const res = api.post>( - "/double-counting/admin/applications/check-files", - { entity_id, files } - ) - return res + return apiFetch.POST("/double-counting/applications/check-admin-files/", { + params: { query: { entity_id } }, + body: { files: files as unknown as string[] }, // type hack for file upload + }) } diff --git a/front/src/double-counting-admin/components/agreements/agreement-details-dialog.tsx b/front/src/double-counting-admin/components/agreements/agreement-details-dialog.tsx index 5b5034b7a..19f6796ad 100644 --- a/front/src/double-counting-admin/components/agreements/agreement-details-dialog.tsx +++ b/front/src/double-counting-admin/components/agreements/agreement-details-dialog.tsx @@ -37,7 +37,7 @@ export const AgreementDetailsDialog = () => { }) const agreement: AgreementDetails | undefined = - applicationResponse.result?.data.data + applicationResponse.result?.data const application = agreement?.application @@ -95,7 +95,7 @@ export const AgreementDetailsDialog = () => { )} {application && - application.status !== DoubleCountingStatus.Accepted && ( + application.status !== DoubleCountingStatus.ACCEPTED && (

La demande est en cours de traitement...

)} {application && - application.status !== DoubleCountingStatus.Accepted && ( + application.status !== DoubleCountingStatus.ACCEPTED && (

La demande est en cours de traitement...

)} + + {focusedErrors.length === 0 && focus === "sourcing_history" && ( +
+ +
+ )} + + {focusedErrors.length === 0 && focus === "production_history" && ( +
+ +
+ )}