Generated API data is missing closing tags

Describe the bug
When generating the api docs from the spec it seems to be missing closing tags such as <li>

Sample Spec:
{"openapi":"3.0.1","info":{"title":"ChargeOver REST API","description":"OpenAPI spec for accessing the ChargeOver REST API","version":"0.0.1"},"servers":[{"url":"https://{instance}.chargeover.com","variables":{"instance":{"default":"example","description":"ChargeOver instance/account name"}}}],"paths":{"/api/v3/customer":{"post":{"summary":"Create a customer","description":"Note that the response/id value will be the customer_id value for the newly created customer.","externalDocs":{"description":"Create a customer","url":"https://developer.chargeover.com/apidocs/rest/#create-a-customer"},"responses":{"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":400,"status":"Error","message":"Missing or invalid parameter.","details":{},"response":false}}}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":401,"status":"Error","message":"Invalid or incorrect authorization [Missing (basic) authorization header.]","details":{},"response":false}}}}}},"201":{"description":"Object was created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"object","properties":{"id":{"type":"integer"}}}}},"examples":{"Example 1":{"value":{"code":201,"status":"OK","message":"","details":{},"response":{"id":1234}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"parent_customer_id":{"type":"integer","nullable":true},"external_key":{"type":"string","nullable":true},"company":{"type":"string","nullable":true},"language_id":{"type":"integer","nullable":true},"currency_id":{"type":"integer","nullable":true},"class_id":{"type":"integer","nullable":true},"admin_id":{"type":"integer","nullable":true},"campaign_id":{"type":"integer","nullable":true},"campaign_details":{"type":"string","nullable":true},"superuser_username":{"type":"string","nullable":true},"superuser_email":{"type":"string","nullable":true},"superuser_name":{"type":"string","nullable":true},"superuser_first_name":{"type":"string","nullable":true},"superuser_last_name":{"type":"string","nullable":true},"superuser_phone":{"type":"string","nullable":true},"bill_addr1":{"type":"string","nullable":true},"bill_addr2":{"type":"string","nullable":true},"bill_addr3":{"type":"string","nullable":true},"bill_city":{"type":"string","nullable":true},"bill_state":{"type":"string","nullable":true},"bill_postcode":{"type":"string","nullable":true},"bill_country":{"type":"string","nullable":true},"ship_addr1":{"type":"string","nullable":true},"ship_addr2":{"type":"string","nullable":true},"ship_addr3":{"type":"string","nullable":true},"ship_city":{"type":"string","nullable":true},"ship_state":{"type":"string","nullable":true},"ship_postcode":{"type":"string","nullable":true},"ship_country":{"type":"string","nullable":true},"custom_1":{"type":"string","nullable":true},"custom_2":{"type":"string","nullable":true},"custom_3":{"type":"string","nullable":true},"custom_4":{"type":"string","nullable":true},"custom_5":{"type":"string","nullable":true},"custom_6":{"type":"string","nullable":true},"custom_7":{"type":"string","nullable":true},"custom_8":{"type":"string","nullable":true},"custom_9":{"type":"string","nullable":true},"custom_10":{"type":"string","nullable":true},"custom_11":{"type":"string","nullable":true},"custom_12":{"type":"string","nullable":true},"custom_13":{"type":"string","nullable":true},"custom_14":{"type":"string","nullable":true},"custom_15":{"type":"string","nullable":true},"custom_16":{"type":"string","nullable":true},"custom_17":{"type":"string","nullable":true},"custom_18":{"type":"string","nullable":true},"custom_19":{"type":"string","nullable":true},"custom_20":{"type":"string","nullable":true},"brand_id":{"type":"integer","nullable":true},"terms_id":{"type":"integer","nullable":true},"no_taxes":{"type":"boolean","nullable":true},"no_dunning":{"type":"boolean","nullable":true},"no_latefees":{"type":"boolean","nullable":true},"no_procfees":{"type":"boolean","nullable":true},"invoice_delivery":{"type":"string","nullable":true,"enum":["print","email"]},"dunning_delivery":{"type":"string","nullable":true,"enum":["print","email"]},"tax_ident":{"type":"string","nullable":true},"tags":{"type":"array","nullable":true,"items":{"type":"string"}}}},"examples":{"Example 1":{"value":"{\n    \"company\": \"Test Company Name\",\n    \"bill_addr1\": \"16 Dog Lane\",\n    \"bill_addr2\": \"Suite D\",\n    \"bill_city\": \"Storrs\",\n    \"bill_state\": \"CT\",\n    \"superuser_name\": \"Karli Marie\",\n    \"superuser_phone\": \"860-647-8567\",\n    \"superuser_email\": \"karli@example.com\",\n    \"tags\": [\n        \"tag1\",\n        \"tag2\"\n    ]\n}"}}}}}}},"/api/v3/user":{"post":{"summary":"Add a contact","description":"Notes:\r\n\u003Cul\u003E\r\n\t\u003Cli\u003EThe response/id value will be the user_id value for the newly created user.\u003C/li\u003E\r\n\u003C/ul\u003E","externalDocs":{"description":"Add a contact","url":"https://developer.chargeover.com/apidocs/rest/#create-a-user"},"responses":{"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":400,"status":"Error","message":"Missing or invalid parameter.","details":{},"response":false}}}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":401,"status":"Error","message":"Invalid or incorrect authorization [Missing (basic) authorization header.]","details":{},"response":false}}}}}},"201":{"description":"Object was created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"object","properties":{"id":{"type":"integer"}}}}},"examples":{"Example 1":{"value":{"code":201,"status":"OK","message":"","details":{},"response":{"id":1234}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"external_key":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"password":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"first_name":{"type":"string","nullable":true},"middle_name_glob":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"name_suffix":{"type":"string","nullable":true},"title":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"mobile":{"type":"string","nullable":true},"user_type_id":{"type":"integer","nullable":true},"customer_id":{"type":"integer","nullable":true},"custom_1":{"type":"string","nullable":true},"custom_2":{"type":"string","nullable":true},"custom_3":{"type":"string","nullable":true},"custom_4":{"type":"string","nullable":true},"custom_5":{"type":"string","nullable":true},"custom_6":{"type":"string","nullable":true},"custom_7":{"type":"string","nullable":true},"custom_8":{"type":"string","nullable":true},"custom_9":{"type":"string","nullable":true},"custom_10":{"type":"string","nullable":true},"custom_11":{"type":"string","nullable":true},"custom_12":{"type":"string","nullable":true},"custom_13":{"type":"string","nullable":true},"custom_14":{"type":"string","nullable":true},"custom_15":{"type":"string","nullable":true},"custom_16":{"type":"string","nullable":true},"custom_17":{"type":"string","nullable":true},"custom_18":{"type":"string","nullable":true},"custom_19":{"type":"string","nullable":true},"custom_20":{"type":"string","nullable":true}}},"examples":{"Example 1":{"value":"{\n    \"customer_id\": 21,\n    \"username\": \"my_test_username_393\",\n    \"password\": \"some test password\",\n    \"name\": \"Ryan Bantz\",\n    \"email\": \"ryan@adgadgagadg.com\",\n    \"phone\": \"888-555-1212\"\n}"}}}}}}},"/api/v3/invoice/{invoice_id}/_action/setPayMethod":{"post":{"summary":"Set the payment method for an invoice","description":"\u003Cp\u003E\n\tSet the payment method for an invoice.\n\u003C/p\u003E\n\u003Cul\u003E\n\t\u003Cli\u003EIf the invoice was created \u003Cb\u003Efrom a subscription\u003C/b\u003E, this \u003Ci\u003Eupdates the subscription payment method\u003C/i\u003E.\n\t\u003Cli\u003EIf the invoice has \u003Cb\u003Escheduled payments\u003C/b\u003E attached, this \u003Ci\u003Eupdates the payment method for the attached scheduled payments\u003C/i\u003E.\n\t\u003Cli\u003EIf the invoice is \u003Ci\u003Enot\u003C/i\u003E from an invoice, and has \u003Ci\u003Eno attached scheduled payments\u003C/i\u003E, this method does nothing.\n\u003C/ul\u003E\n\u003Cp\u003E\n\tIf you want to remove any payment methods from the scheduled payments/subscription, you can set a payment method of \u003Ccode\u003Epaymethod: \"inv\"\u003C/code\u003E.\n\u003C/p\u003E\n","externalDocs":{"description":"Set the payment method for an invoice","url":"https://developer.chargeover.com/apidocs/rest/#set-invoice-paymethod"},"responses":{"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":400,"status":"Error","message":"Missing or invalid parameter.","details":{},"response":false}}}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":401,"status":"Error","message":"Invalid or incorrect authorization [Missing (basic) authorization header.]","details":{},"response":false}}}}}},"200":{"description":"Action completed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":200,"status":"OK","message":"","details":{},"response":true}}}}}}},"parameters":[{"in":"path","name":"invoice_id","schema":{"type":"integer"},"required":true,"description":"The ID # of the invoice"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"paymethod":{"type":"string","enum":["crd","ach","tok","inv"]},"creditcard_id":{"type":"integer","nullable":true},"ach_id":{"type":"integer","nullable":true},"tokenized_id":{"type":"integer","nullable":true}}},"examples":{"Example 1":{"value":"{\n    \"_comment\": \"Specify a paymethod of: crd, ach, tok, inv\",\n    \"paymethod\": \"crd\",\n    \"creditcard_id\": 59\n}"}}}}}}},"/api/v3/transaction":{"post":{"summary":"Record offline payment","description":"\u003Cp\u003E\r\n\tA payment transaction is used to indicate an invoice has been paid (either entirely paid, or partially paid for).\r\n\u003C/p\u003E\r\n\u003Cp\u003E\r\n\t\u003Cstrong\u003ENote:\u003C/strong\u003E This does \u003Cstrong\u003Enot\u003C/strong\u003E actually charge a credit card or an ACH account. If you're trying to do that, please see the \u003Ca href=\"#pay-transaction\"\u003Eattempt a payment\u003C/a\u003E endpoint.\r\n\u003C/p\u003E\r\n\u003Cp\u003E\r\n\tNotes:\r\n\u003C/p\u003E\r\n\u003Cul\u003E\r\n\t\u003Cli\u003EThe transaction_type value MUST be “pay”\r\n\t\u003Cli\u003EThe gateway_status value should be either 1 (to indicate the payment was successful) or 0 (zero, to log a payment that failed/was declined)\r\n\t\u003Cli\u003EThe gateway_method value MUST be one of: \u003Ccode\u003Evisa\u003C/code\u003E, \u003Ccode\u003Emastercard\u003C/code\u003E, \u003Ccode\u003Eamerican-express\u003C/code\u003E, \u003Ccode\u003Ediscover\u003C/code\u003E, \u003Ccode\u003Echeck\u003C/code\u003E, \u003Ccode\u003Epaypal\u003C/code\u003E, \u003Ccode\u003Ecredit\u003C/code\u003E, \u003Ccode\u003Each\u003C/code\u003E\r\n\u003C/ul\u003E","externalDocs":{"description":"Record offline payment","url":"https://developer.chargeover.com/apidocs/rest/#create-transaction"},"responses":{"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":400,"status":"Error","message":"Missing or invalid parameter.","details":{},"response":false}}}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":401,"status":"Error","message":"Invalid or incorrect authorization [Missing (basic) authorization header.]","details":{},"response":false}}}}}},"201":{"description":"Object was created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"object","properties":{"id":{"type":"integer"}}}}},"examples":{"Example 1":{"value":{"code":201,"status":"OK","message":"","details":{},"response":{"id":1234}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"integer","nullable":true},"gateway_id":{"type":"integer","nullable":true},"gateway_status":{"type":"integer","nullable":true},"gateway_transid":{"type":"string","nullable":true},"gateway_method":{"type":"string","nullable":true},"gateway_msg":{"type":"string","nullable":true},"external_key":{"type":"string","nullable":true},"amount":{"type":"number","nullable":true,"format":"float"},"transaction_date":{"type":"string","nullable":true,"format":"date"},"transaction_type":{"type":"string","nullable":true},"transaction_method":{"type":"string","nullable":true},"transaction_detail":{"type":"string","nullable":true},"custom_1":{"type":"string","nullable":true},"custom_2":{"type":"string","nullable":true},"custom_3":{"type":"string","nullable":true},"custom_4":{"type":"string","nullable":true},"custom_5":{"type":"string","nullable":true},"memo":{"type":"string","nullable":true}}},"examples":{"Example 1":{"value":"null"}}}}}}},"/api/v3/item":{"post":{"summary":"Create an item","description":"\u003Cp\u003E\n\tThe response/id value will be the item_id value for the newly created item.\n\u003C/p\u003E\n\nValid values for \u003Ccode\u003Epaycycle\u003C/code\u003E\n\u003Cul\u003E\n\t\u003Cli\u003E\u003Ccode\u003Eevy\u003C/code\u003E - Every billing cycle\n\t\u003Cli\u003E\u003Ccode\u003Edly\u003C/code\u003E - Daily\n\t\u003Cli\u003E\u003Ccode\u003E1wk\u003C/code\u003E - Every week\n\t\u003Cli\u003E\u003Ccode\u003E2wk\u003C/code\u003E - Every other week\n\t\u003Cli\u003E\u003Ccode\u003E116\u003C/code\u003E - 1st and the 16th\n\t\u003Cli\u003E\u003Ccode\u003E4wk\u003C/code\u003E - Every four weeks\n\t\u003Cli\u003E\u003Ccode\u003E8wk\u003C/code\u003E - Every eight weeks\n\t\u003Cli\u003E\u003Ccode\u003E30d\u003C/code\u003E - Every 30 days\n\t\u003Cli\u003E\u003Ccode\u003Emon\u003C/code\u003E - Monthly\n\t\u003Cli\u003E\u003Ccode\u003E2mn\u003C/code\u003E - Every other month\n\t\u003Cli\u003E\u003Ccode\u003E12w\u003C/code\u003E - Every twelve weeks\n\t\u003Cli\u003E\u003Ccode\u003Eqtr\u003C/code\u003E - Quarterly\n\t\u003Cli\u003E\u003Ccode\u003Esix\u003C/code\u003E - Every six months\n\t\u003Cli\u003E\u003Ccode\u003Eyrl\u003C/code\u003E - Yearly\n\t\u003Cli\u003E\u003Ccode\u003E2yr\u003C/code\u003E - Every 2 years\n\t\u003Cli\u003E\u003Ccode\u003E3yr\u003C/code\u003E - Every 3 years\n\t\u003Cli\u003E\u003Ccode\u003E4yr\u003C/code\u003E - Every 4 years\n\t\u003Cli\u003E\u003Ccode\u003E5yr\u003C/code\u003E - Every 5 years\n\t\u003Cli\u003E\u003Ccode\u003E10y\u003C/code\u003E - Every 10 years\n\u003C/ul\u003E\n\nValid values for \u003Ccode\u003Epricemodel\u003C/code\u003E\n\u003Cul\u003E\n\t\u003Cli\u003E\u003Ccode\u003Efla\u003C/code\u003E - Flat Pricing (example: $X dollars every billing cycle)\n\t\u003Cli\u003E\u003Ccode\u003Euni\u003C/code\u003E - Unit Pricing (example: $X per unit every billing cycle)\n\t\u003Cli\u003E\u003Ccode\u003Evol\u003C/code\u003E - Volume Pricing (example: $X dollars every billing cycle, with different price levels depending on volume)\n\t\u003Cli\u003E\u003Ccode\u003Etie\u003C/code\u003E - Tiered Pricing (example: $X dollars every billing cycle for the first 10 units, then $Y dollars per month for the next 10 units, etc.)\n\t\u003Cli\u003E\u003Ccode\u003Epas\u003C/code\u003E - Pass-through from usage data (Pass-through pricing is for scenarios where the usage data \u003Ci\u003Eand\u003C/i\u003E the pricing is already known)\n\u003C/ul\u003E\n","externalDocs":{"description":"Create an item","url":"https://developer.chargeover.com/apidocs/rest/#create-item"},"responses":{"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":400,"status":"Error","message":"Missing or invalid parameter.","details":{},"response":false}}}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":401,"status":"Error","message":"Invalid or incorrect authorization [Missing (basic) authorization header.]","details":{},"response":false}}}}}},"201":{"description":"Object was created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"object","properties":{"id":{"type":"integer"}}}}},"examples":{"Example 1":{"value":{"code":201,"status":"OK","message":"","details":{},"response":{"id":1234}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"item_type":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"enabled":{"type":"boolean","nullable":true},"accounting_sku":{"type":"string","nullable":true},"accounting_account_income":{"type":"string","nullable":true},"external_key":{"type":"string","nullable":true},"units":{"type":"string","nullable":true},"tax_group_id":{"type":"integer","nullable":true},"expire_recurs":{"type":"integer","nullable":true},"trial_recurs":{"type":"integer","nullable":true},"custom_1":{"type":"string","nullable":true},"custom_2":{"type":"string","nullable":true},"custom_3":{"type":"string","nullable":true}}},"examples":{"Example 1":{"value":"{\n    \"name\": \"Multi-Currency Test Product\",\n    \"item_type\": \"service\",\n    \"pricemodels\": [\n        {\n            \"currency_iso4217\": \"USD\",\n            \"base\": 195.95,\n            \"paycycle\": \"mon\",\n            \"pricemodel\": \"fla\"\n        },\n        {\n            \"currency_iso4217\": \"CAD\",\n            \"base\": 195.95,\n            \"paycycle\": \"mon\",\n            \"pricemodel\": \"fla\"\n        }\n    ]\n}"}}}}}}},"/api/v3/creditcard":{"post":{"summary":"Store a credit card","description":"\u003Cp\u003E\nThis method can be used to store a new card or update an existing card.\n\u003Cbr\u003E\nTo update an existing card: Send a new POST request using an existing card number\nwith its updated values. The stored card will then be updated.\n\u003C/p\u003E\n","externalDocs":{"description":"Store a credit card","url":"https://developer.chargeover.com/apidocs/rest/#create-card"},"responses":{"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":400,"status":"Error","message":"Missing or invalid parameter.","details":{},"response":false}}}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":401,"status":"Error","message":"Invalid or incorrect authorization [Missing (basic) authorization header.]","details":{},"response":false}}}}}},"201":{"description":"Object was created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"object","properties":{"id":{"type":"integer"}}}}},"examples":{"Example 1":{"value":{"code":201,"status":"OK","message":"","details":{},"response":{"id":1234}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"integer","nullable":true},"external_key":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"number":{"type":"string","nullable":true},"cvv":{"type":"string","nullable":true},"expdate":{"type":"string","nullable":true},"expdate_year":{"type":"string","nullable":true},"expdate_month":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"postcode":{"type":"string","nullable":true},"country":{"type":"string","nullable":true}}},"examples":{"Example 1":{"value":"{\n    \"customer_id\": 475,\n    \"number\": \"4111 1111 1111 1111\",\n    \"expdate_year\": \"2015\",\n    \"expdate_month\": \"11\",\n    \"cvv\": 123,\n    \"name\": \"Keith Palmer\",\n    \"address\": \"72 E Blue Grass Road\",\n    \"city\": \"Willington\",\n    \"state\": \"CT\",\n    \"postcode\": \"06279\",\n    \"country\": \"United States\"\n}"}}}}}}},"/api/v3/ach":{"post":{"summary":"Store an ACH account","description":"\u003Cp\u003E\nThis method can be used to store a new ACH or  update an existing  ACH. \u003Cbr\u003E\nTo update an existing card: Send a new POST request using existing \u003Ccode\u003Erouting\u003C/code\u003E and \u003Ccode\u003Enumber\u003C/code\u003E\nfields with its updated values. The stored ACH will then be updated.\n\u003C/p\u003E\nNotes:\n\u003Cul\u003E\n\t\u003Cli\u003EThe type field must be one of: \u003Ccode\u003Echec\u003C/code\u003E (personal checking account), \u003Ccode\u003Ebusi\u003C/code\u003E (business checking account), or \u003Ccode\u003Esavi\u003C/code\u003E (savings account)\n\t\u003Cli\u003EThe number field should be a valid bank account number\n\u003C/ul\u003E\n\nRouting number formatting for Canadian bank accounts:\n\u003Cpre\u003E\n\u003Ccode\u003E0(3-digit institution code)(5 digit transit number)\nExample: 032012345\n\u003C/code\u003E\n\u003C/pre\u003E\n","externalDocs":{"description":"Store an ACH account","url":"https://developer.chargeover.com/apidocs/rest/#create-ach"},"responses":{"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":400,"status":"Error","message":"Missing or invalid parameter.","details":{},"response":false}}}}}},"401":{"description":"Authentication error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"boolean"}}},"examples":{"Example 1":{"value":{"code":401,"status":"Error","message":"Invalid or incorrect authorization [Missing (basic) authorization header.]","details":{},"response":false}}}}}},"201":{"description":"Object was created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer"},"status":{"type":"string"},"message":{"type":"string","nullable":true},"details":{"type":"object","nullable":true},"response":{"type":"object","properties":{"id":{"type":"integer"}}}}},"examples":{"Example 1":{"value":{"code":201,"status":"OK","message":"","details":{},"response":{"id":1234}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customer_id":{"type":"integer","nullable":true},"external_key":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"number":{"type":"string","nullable":true},"routing":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"bank":{"type":"string","nullable":true}}},"examples":{"Example 1":{"value":"{\n    \"customer_id\": \"8\",\n    \"type\": \"chec\",\n    \"routing\": \"072403004\",\n    \"number\": \"856667\",\n    \"name\": \"John Doe\"\n}"}}}}}}}},"components":{"securitySchemes":{"basic":{"type":"http","scheme":"basic"}}}}

Sample Output file missing tags:
---
id: create-an-item
title: "Create an item"
description: "<p>"
sidebar_label: "Create an item"
hide_title: true
hide_table_of_contents: true
api: eJztWFtv2zYU/isE14cWUCzZTrrVMAKkaQYUQ5CsSYsVcWDQ1LHFhiJVXuxohv/7QEq2ZElNHWDAHhY/GBT5nQt5yO8cco1j0FSxzDAp8AiPs9OJmJjbBJACnUmhIWQxWhJuAa0Y52gGyCSAmIF0uhuZS+V7Bax4jqgCYiD2mN5EjEOvVHwhfCugvcSYyhhOM5LTnHIYh/5zIsaWeyfGnJ0WEFjm5Sg6QhdLUDmaMc6ZWCAvuo+OeQ39gTCe74/3Vw9NbSuAh33QoA2SJgHVAe3331bQvjaIiNivRv+tSfahx22tc2kLpXof+lsbCmyRmC7sMIqb2GGEYpI3cKkUFe5SCpM012aQiu5ppw7dmPdg1cSaFfAldLn43agK/KclyoBqGtfssalQs8fCdENdrngF/QqkpWuQq6auAcqBqObStXHDLtxxG3fchTtp4066cP2otaX70RY4Dosj8MMjoxiFVMbAnzg0c04qC79zYtC1YtSdmdfwSNKMwwi9+gvFknOiNIL2sXqzr9AKVin8LNgPFGagkHWjP9e4lLUofpHcpvBsJwO0YiZBMZvPQYEwyC8O4rAErlEMGYjYgaVAS2+h4YNhUPlwy0BB/Gwfdvw3Z0obF0i3ADpwfQK9+rqTzbYnqcaYj3UBMLTXcDAjunLwmmh9ZBIl7SJBcyVTZDVZAIqJIej13mhWToIVO0dTEEQxqdEqAVWQeE12zE6JiMchO/UjNWHCFZA4Rw9CrsSb3ebEAYZHA0oQ/kFSjUfrRio591kAEeHzAA6wVRyPcGJMpkdhGLsAyQxUjyZELUAuXVOmIclYLKkOFWgT/lLkkiOvYhPgbVLy9gZRv232avYNqEErond5SFtKQeu55TzHAaZSGBDGiZIs44wSJxp+005+jTVNICWuZfIM8AhLrxEHOFPOX8MK6y4kNRQTBhagnJPaEGN1bUwbxcTCDaWg3Zq3xwIsLOdkxgGPjLKwCXAMhjCuuzxpYbfr8nO3WdzltPu5gPrt7nEXRRv5JfYMVE16EPWrWeKrP3BtYhjXPW+45oz3B8Pjzaa0eBxF7RC+JzFS8N2CNv+fcM2k5EAEflYgjqOoFogLpaTai8Ul09qTn0JMLH0yyYgiKRhQvR8Hak64hipEHafszDpqM2UwEJSWX2L1VKz6T8bqYxkgHysqlXI0RqxJpGJ/F8t8t43n6xnRjL5pDCdAYlC9+4MC6/v9GXsv47xw818Jnr8ZFJADIiFIemjIavvvADwI9xl3RK0DTCiVVhgmFlP9YA/SXxMpm1MXtgNns02d0wfIDxLw9cFBSEMepwslbTbtpPpOZzKmYKqAWqUPEzGKEf4sCWq1kem0f9AcSvDgOeDhAeBDziteTwRCCE383pzgEZrgS8sNOzq3SoGgOboF7YpfGVtqJjjY4nc7vxDSoJaMQg1Q1e3aQe6KfvdbV80CSktbU6bl8aD/a6Hy882HnboKOyPam+y/O+m9O2kNby/YhYpUig4VlWcFas7JBFegTfBsV8/P/iNXi+b9RGy2ZU0KJpExHuFM+ooiIybBI+wqzXA5DMvy1IUL3G6+WzdK1TUT2hBBYdOoVXGAl0Qxt8EK6itxRb6cE8sNHm03HA6aBbLXdbUER/iFYFhSCfK0uNls7p1f1Cpm8hvHv4Udz/617e4cdTPwCMd0ftxN3ZH3p4rmy/3eoOnacfFsXH3vO7zr3nGrO1Rt9qyAT5BkTdseF1b9JeVVHfvMFrWIK2ryUlSnnUpPxS6tvuFeScHEXPplZsYtWj1iny5ubtHZ9cfWIl1lIM6uPyKdAfUXL+IvHy5ru4tVtwq38QrxqBf1+s6226sp8bmujErrQtVIibv8/fKK9/KK9/KK9/KK9/KK9/KK9/NXvLIGMPBowowTJlz28QXQuqyU7jDJmMtSQxz4ugHfBzhxtdToDq/Xrqb7rPhm47q/W1A5Ht3dV6WR+9oEuLid+vKqSPTnRb46unUOBLvyu3X33ARbiTNKITNPYu9r5d711c0tDvCsvN+m/hqOFVnhwP/7tyrp86cvq3zfGnMiFra4kxc63e8fgN5K/Q==
sidebar_class_name: "post api-method"
info_path: docs/petstore/chargeover-rest-api
custom_edit_url: null
---

import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Heading from "@theme/Heading";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Create an item"}
>
</Heading>

<MethodEndpoint
  method={"post"}
  path={"/api/v3/item"}
>

</MethodEndpoint>

<p>
	The response/id value will be the item_id value for the newly created item.
</p>

Valid values for <code>paycycle</code>
<ul>
    <li><code>evy</code> - Every billing cycle
	<li><code>dly</code> - Daily
	<li><code>1wk</code> - Every week
	<li><code>2wk</code> - Every other week
	<li><code>116</code> - 1st and the 16th
	<li><code>4wk</code> - Every four weeks
	<li><code>8wk</code> - Every eight weeks
	<li><code>30d</code> - Every 30 days
	<li><code>mon</code> - Monthly
	<li><code>2mn</code> - Every other month
	<li><code>12w</code> - Every twelve weeks
	<li><code>qtr</code> - Quarterly
	<li><code>six</code> - Every six months
	<li><code>yrl</code> - Yearly
	<li><code>2yr</code> - Every 2 years
	<li><code>3yr</code> - Every 3 years
	<li><code>4yr</code> - Every 4 years
	<li><code>5yr</code> - Every 5 years
	<li><code>10y</code> - Every 10 years
</ul>

Valid values for <code>pricemodel</code>
<ul>
	<li><code>fla</code> - Flat Pricing (example: $X dollars every billing cycle)
	<li><code>uni</code> - Unit Pricing (example: $X per unit every billing cycle)
	<li><code>vol</code> - Volume Pricing (example: $X dollars every billing cycle, with different price levels depending on volume)
	<li><code>tie</code> - Tiered Pricing (example: $X dollars every billing cycle for the first 10 units, then $Y dollars per month for the next 10 units, etc.)
	<li><code>pas</code> - Pass-through from usage data (Pass-through pricing is for scenarios where the usage data <i>and</i> the pricing is already known)
</ul>

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<MimeTabs
  className={"openapi-tabs__mime"}
>
  <TabItem
    label={"application/json"}
    value={"application/json-schema"}
  >
    <details
      style={{}}
      className={"openapi-markdown__details mime"}
      data-collapsed={false}
      open={true}
    >
      <summary
        style={{}}
        className={"openapi-markdown__details-summary-mime"}
      >
        <h3
          className={"openapi-markdown__details-summary-header-body"}
        >
          Body
        </h3>
      </summary><div
        style={{"textAlign":"left","marginLeft":"1rem"}}
      >

      </div><ul
        style={{"marginLeft":"1rem"}}
      >
        <SchemaItem
          collapsible={false}
          name={"item_type"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"name"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"description"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"enabled"}
          required={false}
          schemaName={"boolean"}
          qualifierMessage={undefined}
          schema={{"type":"boolean","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"accounting_sku"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"accounting_account_income"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"external_key"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"units"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"tax_group_id"}
          required={false}
          schemaName={"integer"}
          qualifierMessage={undefined}
          schema={{"type":"integer","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"expire_recurs"}
          required={false}
          schemaName={"integer"}
          qualifierMessage={undefined}
          schema={{"type":"integer","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"trial_recurs"}
          required={false}
          schemaName={"integer"}
          qualifierMessage={undefined}
          schema={{"type":"integer","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"custom_1"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"custom_2"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem><SchemaItem
          collapsible={false}
          name={"custom_3"}
          required={false}
          schemaName={"string"}
          qualifierMessage={undefined}
          schema={{"type":"string","nullable":true}}
        >

        </SchemaItem>
      </ul>
    </details>
  </TabItem>
</MimeTabs><div>
  <div>
    <ApiTabs
      label={undefined}
      id={undefined}
    >
      <TabItem
        label={"201"}
        value={"201"}
      >
        <div>

          Object was created successfully

        </div><div>
          <MimeTabs
            className={"openapi-tabs__mime"}
            schemaType={"response"}
          >
            <TabItem
              label={"application/json"}
              value={"application/json"}
            >
              <SchemaTabs
                className={"openapi-tabs__schema"}
              >
                <TabItem
                  label={"Schema"}
                  value={"Schema"}
                >
                  <details
                    style={{}}
                    className={"openapi-markdown__details response"}
                    data-collapsed={false}
                    open={true}
                  >
                    <summary
                      style={{}}
                      className={"openapi-markdown__details-summary-response"}
                    >
                      <strong>
                        Schema
                      </strong>
                    </summary><div
                      style={{"textAlign":"left","marginLeft":"1rem"}}
                    >

                    </div><ul
                      style={{"marginLeft":"1rem"}}
                    >
                      <SchemaItem
                        collapsible={false}
                        name={"code"}
                        required={false}
                        schemaName={"integer"}
                        qualifierMessage={undefined}
                        schema={{"type":"integer"}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"status"}
                        required={false}
                        schemaName={"string"}
                        qualifierMessage={undefined}
                        schema={{"type":"string"}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"message"}
                        required={false}
                        schemaName={"string"}
                        qualifierMessage={undefined}
                        schema={{"type":"string","nullable":true}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"details"}
                        required={false}
                        schemaName={"object"}
                        qualifierMessage={undefined}
                        schema={{"type":"object","nullable":true}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={true}
                        className={"schemaItem"}
                      >
                        <details
                          style={{}}
                          className={"openapi-markdown__details"}
                        >
                          <summary
                            style={{}}
                          >
                            <span
                              className={"openapi-schema__container"}
                            >
                              <strong
                                className={"openapi-schema__property"}
                              >
                                response
                              </strong><span
                                className={"openapi-schema__name"}
                              >
                                 object
                              </span>
                            </span>
                          </summary><div
                            style={{"marginLeft":"1rem"}}
                          >
                            <SchemaItem
                              collapsible={false}
                              name={"id"}
                              required={false}
                              schemaName={"integer"}
                              qualifierMessage={undefined}
                              schema={{"type":"integer"}}
                            >

                            </SchemaItem>
                          </div>
                        </details>
                      </SchemaItem>
                    </ul>
                  </details>
                </TabItem><TabItem
                  label={"Example (from schema)"}
                  value={"Example (from schema)"}
                >
                  <ResponseSamples
                    responseExample={"{\n  \"code\": 0,\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"details\": {},\n  \"response\": {\n    \"id\": 0\n  }\n}"}
                    language={"json"}
                  >

                  </ResponseSamples>
                </TabItem><TabItem
                  label={"Example 1"}
                  value={"Example 1"}
                >
                  <ResponseSamples
                    responseExample={"{\n  \"code\": 201,\n  \"status\": \"OK\",\n  \"message\": \"\",\n  \"details\": {},\n  \"response\": {\n    \"id\": 1234\n  }\n}"}
                    language={"json"}
                  >

                  </ResponseSamples>
                </TabItem>
              </SchemaTabs>
            </TabItem>
          </MimeTabs>
        </div>
      </TabItem><TabItem
        label={"400"}
        value={"400"}
      >
        <div>

          Bad request

        </div><div>
          <MimeTabs
            className={"openapi-tabs__mime"}
            schemaType={"response"}
          >
            <TabItem
              label={"application/json"}
              value={"application/json"}
            >
              <SchemaTabs
                className={"openapi-tabs__schema"}
              >
                <TabItem
                  label={"Schema"}
                  value={"Schema"}
                >
                  <details
                    style={{}}
                    className={"openapi-markdown__details response"}
                    data-collapsed={false}
                    open={true}
                  >
                    <summary
                      style={{}}
                      className={"openapi-markdown__details-summary-response"}
                    >
                      <strong>
                        Schema
                      </strong>
                    </summary><div
                      style={{"textAlign":"left","marginLeft":"1rem"}}
                    >

                    </div><ul
                      style={{"marginLeft":"1rem"}}
                    >
                      <SchemaItem
                        collapsible={false}
                        name={"code"}
                        required={false}
                        schemaName={"integer"}
                        qualifierMessage={undefined}
                        schema={{"type":"integer"}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"status"}
                        required={false}
                        schemaName={"string"}
                        qualifierMessage={undefined}
                        schema={{"type":"string"}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"message"}
                        required={false}
                        schemaName={"string"}
                        qualifierMessage={undefined}
                        schema={{"type":"string","nullable":true}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"details"}
                        required={false}
                        schemaName={"object"}
                        qualifierMessage={undefined}
                        schema={{"type":"object","nullable":true}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"response"}
                        required={false}
                        schemaName={"boolean"}
                        qualifierMessage={undefined}
                        schema={{"type":"boolean"}}
                      >

                      </SchemaItem>
                    </ul>
                  </details>
                </TabItem><TabItem
                  label={"Example (from schema)"}
                  value={"Example (from schema)"}
                >
                  <ResponseSamples
                    responseExample={"{\n  \"code\": 0,\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"details\": {},\n  \"response\": true\n}"}
                    language={"json"}
                  >

                  </ResponseSamples>
                </TabItem><TabItem
                  label={"Example 1"}
                  value={"Example 1"}
                >
                  <ResponseSamples
                    responseExample={"{\n  \"code\": 400,\n  \"status\": \"Error\",\n  \"message\": \"Missing or invalid parameter.\",\n  \"details\": {},\n  \"response\": false\n}"}
                    language={"json"}
                  >

                  </ResponseSamples>
                </TabItem>
              </SchemaTabs>
            </TabItem>
          </MimeTabs>
        </div>
      </TabItem><TabItem
        label={"401"}
        value={"401"}
      >
        <div>

          Authentication error

        </div><div>
          <MimeTabs
            className={"openapi-tabs__mime"}
            schemaType={"response"}
          >
            <TabItem
              label={"application/json"}
              value={"application/json"}
            >
              <SchemaTabs
                className={"openapi-tabs__schema"}
              >
                <TabItem
                  label={"Schema"}
                  value={"Schema"}
                >
                  <details
                    style={{}}
                    className={"openapi-markdown__details response"}
                    data-collapsed={false}
                    open={true}
                  >
                    <summary
                      style={{}}
                      className={"openapi-markdown__details-summary-response"}
                    >
                      <strong>
                        Schema
                      </strong>
                    </summary><div
                      style={{"textAlign":"left","marginLeft":"1rem"}}
                    >

                    </div><ul
                      style={{"marginLeft":"1rem"}}
                    >
                      <SchemaItem
                        collapsible={false}
                        name={"code"}
                        required={false}
                        schemaName={"integer"}
                        qualifierMessage={undefined}
                        schema={{"type":"integer"}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"status"}
                        required={false}
                        schemaName={"string"}
                        qualifierMessage={undefined}
                        schema={{"type":"string"}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"message"}
                        required={false}
                        schemaName={"string"}
                        qualifierMessage={undefined}
                        schema={{"type":"string","nullable":true}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"details"}
                        required={false}
                        schemaName={"object"}
                        qualifierMessage={undefined}
                        schema={{"type":"object","nullable":true}}
                      >

                      </SchemaItem><SchemaItem
                        collapsible={false}
                        name={"response"}
                        required={false}
                        schemaName={"boolean"}
                        qualifierMessage={undefined}
                        schema={{"type":"boolean"}}
                      >

                      </SchemaItem>
                    </ul>
                  </details>
                </TabItem><TabItem
                  label={"Example (from schema)"}
                  value={"Example (from schema)"}
                >
                  <ResponseSamples
                    responseExample={"{\n  \"code\": 0,\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"details\": {},\n  \"response\": true\n}"}
                    language={"json"}
                  >

                  </ResponseSamples>
                </TabItem><TabItem
                  label={"Example 1"}
                  value={"Example 1"}
                >
                  <ResponseSamples
                    responseExample={"{\n  \"code\": 401,\n  \"status\": \"Error\",\n  \"message\": \"Invalid or incorrect authorization [Missing (basic) authorization header.]\",\n  \"details\": {},\n  \"response\": false\n}"}
                    language={"json"}
                  >

                  </ResponseSamples>
                </TabItem>
              </SchemaTabs>
            </TabItem>
          </MimeTabs>
        </div>
      </TabItem>
    </ApiTabs>
  </div>
</div>

Expected behavior
The tags should properly close
Current behavior
They are missing the closing tags
Possible solution

Steps to reproduce

Copy the contents of my sample open API json
yarn docusaurus clean-api-docs all
yarn docusaurus gen-api-docs all
look at the output and see its missing closing tags

Screenshots

Context
Its frustrating as we have to go correct these manually on every generation and cannot automate it with CI/CD, if there's no fix we may have to try another package
Your Environment

Version used: "docusaurus-plugin-openapi-docs": "4.0.1"  "docusaurus-theme-openapi-docs": "4.0.1",
Environment name and version (e.g. Chrome 59, node.js 5.4, python 3.7.3): node v21.5.0
Operating System and version (desktop or mobile): mac
Link to your project: N/a on a VPN'd gitlab repo

Hi @Celtech, you're free to use whichever package works best for you. FWIW, the broken tags seem to be coming from descriptions in your spec, particularly the ones with URL encoded chars. If you haven't already, I recommend reading the official Docusaurus MDXv3 migration docs: https://docusaurus.io/docs/migration/v3#upgrading-mdx
The docusaurus-mdx-checker is especially helpful at catching MDX parsing/syntax issues.

Hi @Celtech, you're free to use whichever package works best for you. FWIW, the broken tags seem to be coming from descriptions in your spec, particularly the ones with URL encoded chars. If you haven't already, I recommend reading the official Docusaurus MDXv3 migration docs: https://docusaurus.io/docs/migration/v3#upgrading-mdx
The docusaurus-mdx-checker is especially helpful at catching MDX parsing/syntax issues.

Awesome, thanks for the reply. It's not that I want to use a different package, I just unfortunately have a 6 week deadline. However what you said seems to make a lot of sense, I will look into this and see if I can get it working! I'll report back soon.
Thanks!

@sserrata that infact was the root cause, gonna go ahead and close this.
Thanks for your help!


Add nightly build workflow with build matrix

The workflows are written such that most of the code is reusable. As a result, there are a lot of reused code where the only difference is the repo and snap name leading to much replication.
Moreover, the workflows include a local build job which produces artifacts that are never used. The launchpad action triggers an separate build of the snaps.
This PR replaces the workflows with one that uses a build matrix and doesn't perform any local build.

I've removed the PR trigger but the previous runs can be reviewed at https://github.com/canonical/edgex-sync/actions/workflows/nightly.yml


Test proxy logs - sanitizer info

Test Proxy Logs - Impacted recordings and sanitizers
Introducing improvements to the test proxy logging in terms of which sanitizers are applied and how.
Key changes below:

RecordedTestSanitizer.cs

Added a SanitizerId property to the RecordedTestSanitizer class to uniquely identify each sanitizer used.

Central sanitizers (ids) from test-proxy are prefixed with "AZSDK-".
Sanitizers(ids) added by the users are numbered, starting from "1".

RecordEntry.cs

Added ToString() method to provide a detailed string representation of the RecordEntry object, including request and response details.

RecordSession.cs

logging sanitizer modifications by capturing and comparing the state of entries before and after sanitization.
Abstracted LogSanitizerModification method to log changes made by sanitizers, improving traceability and debugging capabilities.

Impact
These changes enhance the transparency and traceability of the sanitizers in test proxy by adding detailed logging for request and response modifications. This will aid in debugging and understanding the effects of sanitizers during test sessions.
Fixes https://github.com/Azure/azure-sdk-tools/issues/8474
Example Output

Central sanitizer from test proxy
User registered sanitizer

 Output 1
 Output 2

I like the idea, but we are adding a ton of workload to every single request. Every time we sanitize we write all the entries out. We have to put this behind a debug flag somehow. I'm not certain how big of an impact there will be, so my thoughts is once you get these tests resolved, I will help you get this upgrade to a branch off of azure-sdk-tools to publish it.
Easiest way to check performance of a proxy upgrade is to simply try updating the target_version.txt and see how all the repos handle it.


[terra-table] Single selectable table header row screen reader accessibility issue

Bug Report
Description
When focus is on terra table(single selection) header row and voice over on, header row checkbox(invisible) is supposed to be dimmed(/unselectable) but screen reader is reading "single selection, unchecked, checkbox column 1 of 3. To select this click option+control+space". This error occurs even when isDisabled prop set to true for header.
Steps to Reproduce

With screen reader on, focus on header row of single selectable table example https://engineering.cerner.com/terra-ui/components/terra-table/table/guides/single-select-table
Use the above example and set isDisabled prop to true for headerData,
selectAllColumn: {
checkLabel: 'Single Selection',
isDisabled: true,
}

Additional Context / Screenshots

Expected Behavior
Screen reader should read following or some more descriptive statement for header row.

"single selection, unchecked, checkbox, dimmed column 1 of 3. "

Possible Solution
Seems like isDisabled prop is only spread to attribute that are visible.
Environment

Component Name and Version: Table/ terra-table 4.7.0
Browser Name and Version: safari
Operating System and version (desktop or mobile): Mac

@ Mentions

Apparently the isDisabled property is applied to the checkbox only if it is intractable(i,e selectable). The checkbox becomes selectable only upon providing checkStyle="toggle" and providing an onCheckAction function.
We could tweak the visually hidden content fed to the screenreaders to set role="checkbox" only if the checkbox is intractable.
@dkasper-was-taken  any thoughts?


PowerShellGet crashes in Bash on Ubuntu on Windows (alpha 18)

Steps to reproduce
Open PowerShell Core as administrator on Windows 10 Creator Update
Install and open Bash on Ubuntu on Windows
Open PowerShell in Bash
Find-Module or Install-Module
Expected behavior
Return search results from PSGallery or install named module
Actual behavior
Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/proc/sys/net/ipv4/conf/eth0/forwarding'.
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
   at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent)
   at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.File.InternalReadAllText(String path, Encoding encoding)
   at System.Net.NetworkInformation.StringParsingHelpers.ParseRawIntFile(String filePath)
   at System.Net.NetworkInformation.LinuxIPv4InterfaceProperties.GetIsForwardingEnabled()
   at System.Net.NetworkInformation.LinuxIPv4InterfaceProperties..ctor(LinuxNetworkInterface linuxNetworkInterface)
   at System.Net.NetworkInformation.LinuxIPInterfaceProperties..ctor(LinuxNetworkInterface lni)
   at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name)
   at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name)
   at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.<GetLinuxNetworkInterfaces>b__2(String name, LinkLayerAddressInfo* llAddr)
   at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound)
   at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces()
   at System.Net.NetworkInformation.NetworkInterfacePal.GetIsNetworkAvailable()
   at CallSite.Target(Closure , CallSite , Type )
Aborted (core dumped)

Environment data
> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.0.0-alpha
PSEdition                      Core
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   <IP_ADDRESS>
GitCommitId                    v6.0.0-alpha.18
CLRVersion
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

Confirmed!
Windows 10 Pro Build 16170.rs_prerelease.170331_1532
PowerShell Core in Windows - is fine!

PowerShell Core in "Bash On Ubuntu On Windows" - fails!

:)

@SteveL-MSFT I'm also positive this is a WSL or CoreCLR issue

@joeyaiello I briefly looked at this, looks like corefx is making a P/Invoke call to a native api to enumerate network interfaces.  Not sure if WSL is expected to have that file path above or not or if the native api is making incorrect assumptions about the OS.  Agree it's WSL or CoreFx issue.

This is fixed.


Wanted to Let Everyone Know a GUI Was Created for This Vocal Remover!

This isn't an issue, but I wanted to let you and the community here know. This GUI is 100% based on your vocal remover, options included. This was a joint project between another coder and myself. Feel free to use, edit, and implement as you wish! Great job on this AI!
I also included 2 additional models that I trained myself. One trained on 700 pairs and another trained on trained data. Both of them came out GREAT!
You can access it via the following:

Main page here
Release page with models here

Traceback (most recent call last):
File "VocalRemover.py", line 27, in
os.chdir(base_path)  # Change the current working directory to the base path
OSError: [WinError 123] La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte: ''

Hi, do you have a link to google colab program from tsurumeso-vocal-remover, or maybe there is a video tutorial on how to install it, I can't? (

Where can I find dataset , i want dataset

The Multi-Genre model is sick, cannot wait for next updates. Keep the training on!
No tool made such good quality separation yet like this. Props to both of you!
I noticed that organ (mostly hammond), some electric guitars, and saxophones are treated as vocals while backing voices are leaking to instruments but it's editable.

The Multi-Genre model is sick, cannot wait for next updates. Keep the training on!
No tool made such good quality separation yet like this. Props to both of you!
I noticed that organ (mostly hammond), some electric guitars, trumpets, electronic sythesizers and saxophones are treated as vocals while backing voices are leaking to instruments but it's editable.

Thank you! I released new models that don't bleed like the one that comes with it does. Check it out!
I'm also in the process of training new models that are set to outperform all of the ones I've released thus far.

To be honest didn't notice the extra package, gonna watch out.
Got an idea to unlearn the model to treat some of the instruments as voice: get an track that has no any traces of words/singing and put it in instrumentals and mixtures.
Vice versa for voice/podcast/narration recordings where instrumental contains silent track and mixture the voice only.
Some songs contain regular speaking and melodeclamation.
Good resource for free songs in lossless FLAC format (and MP3 too): https://free-mp3-download.net/ .
I have MUSDB18-HQ music multitrack dataset if you mind sending it to you (it weighs 22GB).

To be honest didn't notice the extra package, gonna watch out.
Got an idea to unlearn the model to treat some of the instruments as voice: get an track that has no any traces of words/singing and put it in instrumentals and mixtures.
Good examples of bands with difficult instruments are 4Bars, Bert Weedon, Hillary Thaddeus, Jack McDuff, Mezzoforte, T-Square, Walter Wanderley...
Vice versa for voice/podcast/narration recordings where instrumental contains silent track and mixture the voice only.
Some songs contain regular speaking and melodeclamation.
Good resource for free songs in lossless FLAC format (and MP3 too): https://free-mp3-download.net/ .
I have a MUSDB18-HQ multitrack music data set if you want it to be sent to you (it weighs 22GB).

I would love to try exploring with the MUSDB18-HQ dataset! You can send it to me at<EMAIL_ADDRESS>

To be honest didn't notice the extra package, gonna watch out.
Got an idea to unlearn the model to treat some of the instruments as voice: get an track that has no any traces of words/singing and put it in instrumentals and mixtures.
Good examples of bands with difficult instruments are 4Bars, Bert Weedon, Hillary Thaddeus, Jack McDuff, Mezzoforte, T-Square, Walter Wanderley...
Vice versa for voice/podcast/narration recordings where instrumental contains silent track and mixture the voice only.
Some songs contain regular speaking and melodeclamation.
Good resource for free songs in lossless FLAC format (and MP3 too): https://free-mp3-download.net/ .
I have a MUSDB18-HQ multitrack music data set if you want it to be sent to you (it weighs 22GB).

That would be awesome! I would love to try that dataset, here's my e-mail -<EMAIL_ADDRESS>

https://mega.nz/file/OVgRXZaS#KzNQ6zvd7qMmd9mraOj8Ow29N3v7EAMjFC6WQGjVro0

https://mega.nz/file/OVgRXZaS#KzNQ6zvd7qMmd9mraOj8Ow29N3v7EAMjFC6WQGjVro0

Thanks!

@Zcooger Thanks, but most of this database is DSD100 and it has already been used in the MGM dataset.

I can't get this thing to work... having trouble installing the prereq's. Before I waste time typing my issue, does anyone care to help me out?

You'll need to provide details. What's the error and what OS are you using?

While working with image datasets I got an idea to increase dataset variety by reversing the audio samples in time.

This is probably a good idea. But we already have a dataset that barely fits into 64 GB of RAM.


feat(ingest): add ability to preserve dbt table identifier casing

Summary
Resolve the issue https://github.com/datahub-project/datahub/issues/7853.
Checklist

[x] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[x] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable). If a new feature has been added a Usage Guide has been added for the same.
[ ] For any breaking change/potential downtime/deprecation/big changes an entry has been made in Updating DataHub

@viplazylmht the code overall looks good here
However, I've generally found that the approach of setting convert_dataset_urns to True everywhere more reliably produced correct lineage. As such, I'm curious to understand the motivation behind this PR

Hi @viplazylmht - we haven't seen activity on this PR for a little bit, are you still interested in contributing? If not we'll go ahead and close it if we haven't heard back from you in a week!

@hsheth2 @laulpogan I'm here. Well, convert_dataset_urns_to_lowercase currently has the default value as True, so it will not break any lineages.
In my case, I use datahub with dbt and Bigquery, and the Bigquery adapter said that they have a convert_urns_to_lowercase configuration, but default to False. So the urns they produced are completely different (because our bigquery tables are in UPPERCASE).

I am planning to integrate dbt to the existing datahub x bigquery production environment, so dbt should have the above config, instead of dropping all current metadata and ingesting all again.


Genesis GV70 2023: add missing FW versions

Fingerprint GV70

Cabana here

If you need another test drive file lmk. Happy to do another one that is longer perhaps

Looks good!


updated path to additional scripts

I observed that separate folders were created for the vqe.py and transpile_parallel.py scripts, hence the need to update the path referencing the scripts.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Add missing users for 24h

Needs to be rolled back when we decide

The repository has been rolled back.
I kept the corrections for the == username and a fix when a message comes with  ' breaking the SQL statement


Preview page throws errors on nuxt generate

Hi there @levimykel, with a fresh clone of this repo I'm getting an error from the preview page when I run npm run generate. It seems to be originating from the api.previewSession call, which uses the node-fetch package. Any ideas how to resolve this?
ERROR   /Preview

TypeError: Only absolute URLs are supported
    at getNodeRequestOptions (/Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/cross-fetch/node_modules/node-fetch/lib/index.js:1284:9)
    at /Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/cross-fetch/node_modules/node-fetch/lib/index.js:1370:19
    at new Promise (<anonymous>)
    at Object.fetch (/Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/cross-fetch/node_modules/node-fetch/lib/index.js:1367:9)
    at Object.fetch (/Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/cross-fetch/dist/node-ponyfill.js:10:20)
    at /Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/prismic-javascript/dist/prismic-javascript.min.js:1:15462
    at u (/Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/prismic-javascript/dist/prismic-javascript.min.js:1:15788)
    at t.request (/Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/prismic-javascript/dist/prismic-javascript.min.js:1:15965)
    at t.request (/Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/prismic-javascript/dist/prismic-javascript.min.js:1:18843)
    at /Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/prismic-javascript/dist/prismic-javascript.min.js:1:4349
    at new Promise (<anonymous>)
    at t.previewSession (/Users/brittanychiang/Documents/personal/nuxtjs-blog/node_modules/prismic-javascript/dist/prismic-javascript.min.js:1:4310)
    at asyncData (prismic.config.js:5:0)
    at process._tickCallback (internal/process/next_tick.js:68:7)

Hi @bchiang7 ,
The nuxt plugin does not currently support preview in when generating a static site. For the time being we suggest deploying as a server side rendered app using a service like Heroku .
Thanks,
Phil.

Gotcha, thanks!

I realize this is closed and the answer makes sense, but if you wanted to have the generate command work with this example you could exclude the Preview route with configuration:
nuxt.config.js:
 generate: {
    exclude: [
      /^(?=.*\bPreview\b).*$/
    ]
  }

This sample has now changed, so it works with the generate command. So including the above exclude will break the now break the generate process.
Check out this article for migrating old projects to the new module.
https://prismic.io/docs/vuejs/getting-started/the-new-prismic-nuxt-module


Allow default presenters to be overridden

Previously you could only pass in a presenter to use for a component
if the component's view type had no default presenter registered.
This change allows you to override the default presenter for any
component by setting the Component's presenter field

Found a better way to do this.


Issue #5001 - fix inittab syntax highlighting

Problem
The syntax highlighting for inittab requires that the process field has a leading slash, else it will be highlighted as an error.
See #5001
Solution

Replaced the required leading slash from the inittabProcess region with \S.
Removed the required leading slash from the inittabShCommand match.

Have you tried contacting the maintainer?
The URL in the header does not appear to work, this should be cleaned up.

The user who originally reported the issue contacted the maintainer who responded that they are no longer involved. If you are looking for a new maintainer I would like to volunteer.
What URL doesn't seem to work? I'm uncertain what you're referring to.

Thanks for volunteering to maintain the file.
Please update the header to mention you as the maintainer and move the existing one to "Previous Maintainer".
You perhaps want to remove the "GENERATED FILE" note?
The URL I referred to is the URL entry in the header.

My pleasure. I've made the proper changes.

I'll include it now, thanks.


IDVA6-1912 - user not being logged out

Link to Jira:
https://companieshouse.atlassian.net/browse/IDVA6-1912
Changes:

Updated package json file

CI: No security warnings found


About the Affine layer

Hi, sorry to bother you.
I'm trying to transfer the model to pytorch version but I'm not sure whether I understood the Affine layer correctly. Is the Affine layer a batch normalization layer that freezes the gamma and beta value and without tracking runnable status?

Hi @coocoo90 , yes, Affine layer is a frozen batch norm. The gamma/beta and running statistics are all fixed, so it reduces an affine transform.
The combination of gamma/beta and running mean/var is done at
https://github.com/facebookresearch/video-long-term-feature-banks/blob/master/lib/utils/checkpoints.py#L88

Thanks for the answer. I have reimplemented the affine layer based on your instruction.
But got another question about the weights with "momentum" postfix such as "nonlocal_conv3_1_out_w_momentum".
I thought these weights only needs to be removed but I got confused when I trying to load the weights from nonlocal blocks. It seems some layer only have weights with "momentum".
For example, in the baseline model "charades_r101_baseline", at nonlocal block "nonlocal_conv3_1", there are only weights for "nonlocal_conv3_1_g_w', "nonlocal_conv3_1_out" and "nonlocal_conv3_1_phi" without "nonlocal_conv3_1_theta".
But there are "nonlocal_conv3_1_theta_w_momentum" and "nonlocal_conv3_1_theta_b_momentum".
Is there any special merging method for merge weights from regular and "momentum'?
Sorry for bothering you again. This is an excellent work, I really want to transfer it into PyTorch.

Hi @coocoo90 , many thanks for your efforts porting this to PyTorch! :)
I'm not sure if I understand your question correctly:
When I do
[x for x in data['blobs'] if 'nonlocal_conv3_1' in x]
I see
`
nonlocal_conv3_1_bn_b
nonlocal_conv3_1_bn_s
nonlocal_conv3_1_g_b
nonlocal_conv3_1_g_b_momentum
nonlocal_conv3_1_g_w
nonlocal_conv3_1_g_w_momentum
nonlocal_conv3_1_out_b
nonlocal_conv3_1_out_b_momentum
nonlocal_conv3_1_out_w
nonlocal_conv3_1_out_w_momentum
nonlocal_conv3_1_phi_b
nonlocal_conv3_1_phi_b_momentum
nonlocal_conv3_1_phi_w
nonlocal_conv3_1_phi_w_momentum
nonlocal_conv3_1_theta_b
nonlocal_conv3_1_theta_b_momentum
nonlocal_conv3_1_theta_w
nonlocal_conv3_1_theta_w_momentum
`
Could you please elaborate on your question?

Hi @chaoyuaw, thanks for the clarifying.
I find out the problem.
It seems I didn't load the complete model file previously. Because I'm using  python3 instead of python2 (there will be an error if I load the .pkl file using python3 directly), I need to transfer the ".pkl" file to ".mat" using python2 environment then load it using python3.
I just can't see the "nonlocal_conv3_1_theta_w" and "nonlocal_conv3_1_theta_b" at the previous transferred ".mat" file. That's why I got confused.
I got the complete one after trying it again, although I still don't know why they are lost during the previous transferring Lol.
Just double confirm, all the "***_momentum" can be ignored right?

Hi @coocoo90 , Glad that you figured it out.
If you just want to evaluate the models, yes, the momentums are not needed. However, if you would like to continue training from these model weights, I think it's better to have these momentums.

Hi, @chaoyuaw again Lol.
I have successfully got the exactly same result after porting the model to the PyTorch version.
I got 38.3% MAP for res-50 nl and 40.38% for res-101 nl, thanks for your instruction. I'm trying to do the same thing for kinetics-400. I have tried using the same config as the charade for evaluating kinetics. But it seems the model only got around 50% accuracy. I think it might be some parameters unmatched such as the "dilation after conv5".
Is that possible to share your config file when you are pretraining the model on kinetics-400?
I'm not sure whether it needs to be held because of the privacy, it would be perfect if you can provide the configuration file for the k400.

Hi @coocoo90 , Glad to hear that you reproduced the baseline numbers!
The architecture for K400-pre-training is from the non-local net paper. You can compare the architecture table in non-local paper, and the one in LFB paper's supplementary material/appendix (Table 5 of https://arxiv.org/pdf/1812.05038.pdf).  Dilation is 1 for Kinetics.

Hi @chaoyuaw thanks for the answer. I will double-check the configurations in the LFB paper again.
And BTW, when you evaluating the kinetics dataset, is that the same with charades for sampling 10 clips and 3-crops per video and combine the predictions using max-pooling?
And the mean and std for input normalizing are 0.45 and 0.225.

Hi @coocoo90,  Yes, Kinetics uses the same 3-crop * 10 clips testing, but combined by average pooling (following prior work, e.g. non-local). Yes, input normalization mean/std are the same.

Hi @chaoyuaw Thanks for the confirm. I still didn't find out the issue (〒︿〒).
I have tried to fine-tune the model on Kinetics but only got around 74% on video level.
If it is correct, is the video level accuracy for Res-101 NL same as the one reported on the non-local paper (77.7% top 1 and 93.3 top5) ?

Hi @coocoo90, the pre-trained models should work on K400 without further fine-tuning. Maybe it worths checking https://github.com/Tushar-N/pytorch-resnet3d
I did not read too carefully, but my understanding is that Tushar's repository should work with the pre-trained models we provide here. I have check for the exact number for R101, but the expected R50 accuracy is reported in LFB paper.

Closing it now, but feel free to reopen if you have additional questions.


[Event Request] Codeunit 2610 "Feature Management Impl." - UpdateData

Hi,
We would like to have an event added to codeunit 2610 "Feature Management Impl.", procedure UpdateData() to be able to trigger our own extension data upgrade when the standard data upgrade is completed for standard tables.
Attention point is that extending the feature management facade (Access = Internal) is currently not possible.
Event:
/// Runs the interface's data update method and updates the feature status.
procedure   UpdateData(var FeatureDataUpdateStatus: Record "Feature Data Update   Status"; FeatureDataUpdate: Interface "Feature Data Update")
  begin
    SetSessionInProgress(FeatureDataUpdateStatus);
    FeatureDataUpdate.UpdateData(FeatureDataUpdateStatus);
    FeatureDataUpdateStatus."Feature Status" := "Feature Status"::Complete;
    FeatureDataUpdateStatus.Modify();
    FeatureDataUpdate.AfterUpdate(FeatureDataUpdateStatus);
    // START EVENT ++
    OnAfterUpdateData(FeatureDataUpdateStatus);
    // END EVENT --
end;

Publisher function:
[InternalEvent(false)]
local procedure OnAfterUpdateData (var FeatureDataUpdateStatus: Record "Feature Data Update Status")
begin
end;

Thanks in advance!

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Preview mode ends in cut segment

When the preview mode is enabled in the cutting view, the player should only play back the non-cut segments. But if the end of the video is cut, the player will jump to the end of the video after playing and not stay at the end of the last segment or (actually preferably) jump to the beginning of the first non-cut segment and stop there.

I didn't really notice at first glance, but you actually end up behind the last element. You also never leave play mode, so if you jump back by clicking on the waveform area, the player starts playing again.


Add to HACS default repositories

Description
https://hacs.xyz/docs/publish/include

https://github.com/hacs/default/pull/1872


Commands out of sync

What did you do?
 The queue contains the same function with other variables. The database has a limit of logged instances on the same credentials.
What happened instead?
Unfortunately, despite the fact that I was able to log in one time and invoke many commands, I get this error after first positive result:
2020-04-09 23:47:48.503632+0200 app[4332:387694] -[OHMySQLQueryContext executeQueryRequest:error:] -[ERROR] The connection is broken: Commands out of sync; you can't run this command now
2020-04-09 23:47:48.503779+0200 app[4332:387694] -[OHMySQLQueryContext executeQueryRequest:error:] -[ERROR] Cannot connect to DB. Check your configuration properties.
2020-04-09 23:47:48.504129+0200 app[4332:387694] -[OHMySQLQueryContext executeQueryRequestAndFetchResult:error:] -[ERROR] Cannot get results: Error Domain=mysql.error.domain Code=2000 "Cannot connect to DB. Check your configuration properties." UserInfo={NSLocalizedDescription=Cannot connect to DB. Check your configuration properties.}
What did you expect?
I want to fetch the completed queue by call many queries of the same function with different variables.
Demo Project
Sample code:
let user = OHMySQLUser(userName: "username", password: "password", serverName: "www.example.com", dbName: "name", port: 123456, socket: nil)!
self.coordinator = OHMySQLStoreCoordinator(user: user)
self.coordinator!.connect()

let context = OHMySQLQueryContext()
context.storeCoordinator = self.coordinator!

var i = 1001
var requestArray: [[String: Any]] = []
repeat {
        let query = "CALL fetch_data_with_parameters('\(i)', '01', null)"
        let request = OHMySQLQueryRequest.init(queryString: query)

        let response = try context.storeCoordinator.executeQueryRequestAndFetchResult(request)

       if let add = response {
              requestArray += add
       }

       sleep(10)

      i += 1
} while i < 1900

self.coordinator!.disconnect()

Hi @piotrekjeremicz,
Feels like threading issue. I know the response is too late 😄 but I'll try to find a time to investigate that.

Hi @oleghnidets
Thank you very much! I did not solve this problem. To skip it I moved a part of the code to php scripts but still I will prefer to refactor it into the swift if there will be a possibility.

Hi @piotrekjeremicz
Could you check out a new version 3.0.0? Fingers crossed it's fixed.


right to left direction not work

I'm using the stepper in an RTL layout and confirm it's working just fine.


Error when running bash run-miner.sh

I get this following error when I try to run the miner.
0|chunking | │    28 from nltk.tokenize import sent_tokenize                                │
0|chunking | ╰──────────────────────────────────────────────────────────────────────────────╯
0|chunking | ModuleNotFoundError: No module named 'chunking'
0|chunking | ╭───────────────────── Traceback (most recent call last) ──────────────────────╮
0|chunking | │ /home/user/chunking_subnet/neurons/miner.py:25 in                    │
0|chunking | │                                                                              │
0|chunking | │    22                                                                        │
0|chunking | │    23 import bittensor as bt                                                 │
0|chunking | │    24                                                                        │
0|chunking | │ ❱  25 from chunking.base.miner import BaseMinerNeuron                        │
0|chunking | │    26 from chunking.protocol import chunkSynapse                             │
0|chunking | │    27                                                                        │
0|chunking | │    28 from nltk.tokenize import sent_tokenize                                │
0|chunking | ╰──────────────────────────────────────────────────────────────────────────────╯
0|chunking | ModuleNotFoundError: No module named 'chunking'

Hey @officialsahyaboutorabi, it looks like you need to run pip3 install -e . in your virtual environment. Did you use setup.sh when setting up your machine for mining? We would also be able to help easier in the discord subnet channel.

I did run the pip3 install -e . command, however nothing changed, the same error still.

Have you tried adding PYTHONPATH=. to your .env file?

I also tried that. I fixed the error because of an issue with finding the folder. I basically copied the chunking folder into where the miner script is and that fixed it.


Implement help system feedback.

closes: #867
Implements the requested feedback from the linked issue for the dormant command, allowing claimants to close their own channel, restore their send permissions to available channels and delete the invokation message.
I'm not entirely satisfied with the check here but couldn't think of a nice way to make it a decorator, so I'm open to other ideas if there are any.
await self.available_category.set_permissions(member, send_messages=None)

Was not sure if the send_messages should be reset here or the whole overwrite (and if it matters), but left it at send_messages

@MarkKoz To be clear here, how do we want the error handling to pan out?
Is the issue described in the comment also present now if the task fails?
So we want to remove from the cache as early as possible to make sure it can't be ran more than once, then try to reset the permissions and if that fails move the channel and attempt it again?
Got a bit confused here

If the channel remains intact, then at the least the dormant command could be invoked again by staff. I say staff because there should be error handling to ensure the channel is still dormant even if resetting permissions fails

Is intact here remain in use?

Sorry, meant to write "if the cache remains intact". I don't have a clear idea of how to do it. Ideally if something fails, it'd still be possible to repeat the command to try again. If the cache is cleared, then repeating the command wouldn't work for resetting permissions. Furthermore, the operations should be independent of each other. If the permissions can't be reset, still move the channel and vice versa.

How should it be handled for the instances where the channel can be moved but the permissions aren't reset? Currently the command will only work for channels that are in use, skipping execution outside of them so we can't attempt it again to reset the permissions after it has been moved in case of some kind of an api error.

Right. My idea was to have staff use it in dormant channels but that's not really going to work out it seems. Maybe nothing can be done besides waiting it out in that case.

The least we could do is notify staff but I'd like more opinion on that.

I'm not sure if I'm really worried if a permissions update doesn't work out; the worst that can happen is that the user has to wait the normal period of 15 minutes, right? Could be annoying, but it's not the end of the world for the people involved.
A far greater issue at the moment is that the overwrites system doesn't work reliably. Despite there being no reason for it, as far as I can see, channels keep getting out of sync with the category permissions even with the resent mitigation effort in place.
I think that, at the moment, the best we can do is get this PR out of the way so we can switch the permissions system to a role based one, because the overwrites issue is something that currently happens multiple times per day. I think we can worry about permissions not resetting during the execution of this command later.
(To be sure, I obviously see the value in the discussion; it's just that the other thing is quite critical.)

Sorry, didn't get the time to look at this yesterday.
Pushed in changes without the handling now.
In here would it make more sense to cancel the task after moving the channel, in case the moving fails?
https://github.com/python-discord/bot/blob/12c80fb664e612a2319dfde7d341737159934e9c/bot/cogs/help_channels.py#L197-L198

In here would it make more sense to cancel the task after moving the channel, in case the moving fails?

Yes.

I'm not sure if I'm really worried if a permissions update doesn't work out; the worst that can happen is that the user has to wait the normal period of 15 minutes, right? Could be annoying, but it's not the end of the world for the people involved.

OK let's just delete the channel from help_channel_claimants and leave it at that.

Pushed in a fix for logging on win with this cog in the latest commit.
Should be ready now without the handling, but not sure how to handle the discarded config change that went through the merge with master.

I just remembered that some docstrings (at least the class's docstring) will need to be updated because the command is no longer solely role restricted as I believe it currently states. The message constants should maybe also be updated to mention the command, but that may require some discussion.


Invalid Access Token (@nestjs-cognito/auth)

Hi Loïk,
do you have an idea why I am getting the Invalid Access Token in auth/lib/cognito/cognito.service.ts:42:13?
I am passing the JWT within Authorization header prefixed with Bearer to my backend system. On my frontend I am using Amplify-Auth and I am generating the token with:
const session = await Auth.currentSession();
jwt = session.getIdToken().getJwtToken();

That never made any troubles before 🙈

Hello Maik,
I guess it's because you send the id token instead of the access one.
session.getAccessToken().getJwtToken();

I'm waiting for your response before investigating further.
I hope now everything is working as expected.

Hello Maik, I cannot reproduce this issue with a valid access token.
I'm closing this as stale. Please let me know if this is resolved on your end afterwards.
Thank you!

Hi Loïk,
sorry for the late response, I haven't had time the last couple of days. Thanks for the hint to use getAccessToken(), it seems to work but with the access token I am facing now another error Request is undefined or null. I am researching which library is causing this, I will let you know in case it's this library.

I found the issue on my end 🙈
I used AuthorizationGuard from @nestjs-cognito/auth within my resolver but it needs to be the AuthorizationGuard from @nestjs-cognito/graphql 💡

I'm glad everything is working as expected 😄
I hesitated to name it with the Gql prefix, but I chose to keep the same naming convention.
Maybe I was wrong 😮


Error: Cannot find module 'react-native-svg-transformer/expo'

Build/Submit details page URL
No response
Summary
I have been facing an issue with npx eas build --platform android --local for the past 2 days. Below is the output.
[RUN_GRADLEW] Error: Cannot find module 'react-native-svg-transformer/expo'
[RUN_GRADLEW] Require stack:
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/metro.config.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/node_modules/import-fresh/index.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/dist/loaders.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/dist/createExplorer.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/dist/index.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/metro-config/src/loadConfig.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/metro-config/src/index.js
[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/@expo/cli/build/bin/cli
[RUN_GRADLEW] Error: Cannot find module 'react-native-svg-transformer/expo'
[RUN_GRADLEW] Require stack:
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/metro.config.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/node_modules/import-fresh/index.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/dist/loaders.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/dist/createExplorer.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/dist/index.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/metro-config/src/loadConfig.js
[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/metro-config/src/index.js
[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] -<EMAIL_ADDRESS>[RUN_GRADLEW] - /private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/@expo/cli/build/bin/cli
[RUN_GRADLEW]     at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
[RUN_GRADLEW]     at Function.resolve (node:internal/modules/helpers:187:19)
[RUN_GRADLEW]     at Object.<anonymous> (/private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/metro.config.js:2:22)
[RUN_GRADLEW]     at Module._compile (node:internal/modules/cjs/loader:1376:14)
[RUN_GRADLEW]     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
[RUN_GRADLEW]     at Module.load (node:internal/modules/cjs/loader:1207:32)
[RUN_GRADLEW]     at Function.Module._load (node:internal/modules/cjs/loader:1023:12)
[RUN_GRADLEW]     at Module.require (node:internal/modules/cjs/loader:1235:19)
[RUN_GRADLEW]     at require (node:internal/modules/helpers:176:18)
[RUN_GRADLEW]     at module.exports (/private/var/folders/70/xsvn9hb50tx5ybbjl2q_qb2h0000gp/T/eas-build-local-nodejs/2a9cef2a-550c-466c-afab-1a64315882b0/build/node_modules/cosmiconfig/node_modules/import-fresh/index.js:28:9)
[RUN_GRADLEW] FAILURE: Build failed with an exception.
[RUN_GRADLEW] * What went wrong:
[RUN_GRADLEW] Execution failed for task ':app:createBundleReleaseJsAndAssets'.
[RUN_GRADLEW] > Process 'command 'node'' finished with non-zero exit value 1
[RUN_GRADLEW] * Try:
[RUN_GRADLEW] > Run with --stacktrace option to get the stack trace.
[RUN_GRADLEW] > Run with --info or --debug option to get more log output.
[RUN_GRADLEW] > Run with --scan to get full insights.
[RUN_GRADLEW] > Get more help at https://help.gradle.org.
[RUN_GRADLEW] BUILD FAILED in 28s
[RUN_GRADLEW] Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
[RUN_GRADLEW] You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
[RUN_GRADLEW] For more on this, please refer to https://docs.gradle.org/8.8/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
[RUN_GRADLEW] 21 actionable tasks: 21 executed
[RUN_GRADLEW] Error: Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.

Build failed
Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.
npx exited with non-zero code: 1

Here's my metro.config.js
const { getDefaultConfig } = require('expo/metro-config');

module.exports = (() => {
	const config = getDefaultConfig(__dirname);

	const { transformer, resolver } = config;

	config.transformer = {
		...transformer,
		babelTransformerPath: require.resolve(
			'react-native-svg-transformer/expo'
		),
	};
	config.resolver = {
		...resolver,
		assetExts: resolver.assetExts.filter((ext) => ext !== 'svg'),
		sourceExts: [...resolver.sourceExts, 'svg'],
	};

	return config;
})();

The package is installed. I have confirmed that.
Need help.
Managed or bare?
Managed
Environment
  expo-env-info 1.2.0 environment info:
    System:
      OS: macOS 15.1
      Shell: 5.9 - /bin/zsh
    Binaries:
      Node: 20.11.1 - /usr/local/bin/node
      Yarn: 1.22.22 - /usr/local/bin/yarn
      npm: 10.2.4 - /usr/local/bin/npm
    Managers:
      CocoaPods: 1.15.2 - /Users/xxxx/.rvm/rubies/ruby-3.2.1/bin/pod
    SDKs:
      iOS SDK:
        Platforms: DriverKit 24.0, iOS 18.0, macOS 15.0, tvOS 18.0, visionOS 2.0, watchOS 11.0
    IDEs:
      Android Studio: 2023.2 AI-232.10227.8.2321.11479570
      Xcode: 16.0/16A242d - /usr/bin/xcodebuild
    npmPackages:
      expo: ~51.0.37 => 51.0.37
      expo-router: ~3.5.23 => 3.5.23
      react: 18.2.0 => 18.2.0
      react-dom: 18.2.0 => 18.2.0
      react-native: 0.74.5 => 0.74.5
      react-native-web: ~0.19.10 => 0.19.12
    npmGlobalPackages:
      eas-cli: 12.6.0
    Expo Workflow: managed

✔ Check Expo config for common issues
✖ Check package.json for common issues
✔ Check if the project meets version requirements for submission to app stores
✔ Check dependencies for packages that should not be installed directly
✔ Check for common project setup issues
✔ Check for issues with Metro config
✔ Check npm/ yarn versions
✖ Check for app config fields that may not be synced in a non-CNG project
✔ Check Expo config (app.json/ app.config.js) schema
✔ Check native tooling versions
✖ Check that packages match versions required by installed Expo SDK
✔ Check for legacy global CLI installed locally
✔ Check that native modules do not use incompatible support packages
✖ Check that native modules use compatible support package versions for installed Expo SDK

Detailed check results:

Expected package<EMAIL_ADDRESS>Found invalid:
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>  (for more info, run: npm why @expo/config-plugins)
Expected package<EMAIL_ADDRESS>Found invalid:
<EMAIL_ADDRESS>  (for more info, run: npm why @expo/prebuild-config)
Advice: Upgrade dependencies that are using the invalid package versions.

The following scripts in package.json conflict with the contents of node_modules/.bin: eas.

This project contains native project folders but also has native configuration properties in app.json, indicating it is configured to use Prebuild. When the android/ios folders are present, EAS Build will not sync the following properties: orientation, icon, scheme, userInterfaceStyle, splash, ios, android, plugins.

Advice: Add '/android' and '/ios' to your .gitignore file if you intend to use CNG / Prebuild. Learn more: https://docs.expo.dev/workflow/prebuild/#usage-with-eas-build

Warning: Root-level "expo" object found. Ignoring extra key in Expo config: "build"
Learn more: https://expo.fyi/root-expo-object
The following packages should be updated for best compatibility with the installed expo version:
<EMAIL_ADDRESS>- expected version: ~51.0.38
Your project may not work correctly until you install the expected versions of the packages.
Found outdated dependencies
Advice: Use 'npx expo install --check' to review and upgrade your dependencies.

Error output
No response
Reproducible demo or steps to reproduce from a blank project
The issue occurs by simply running the build command.

I was able to resolve it by removing the said package and then adding it back again as a normal dependency rather than a devDependency. Not sure how that works.

I was able to resolve it by removing the said package and then adding it back again as a normal dependency rather than a devDependency. Not sure how that works.

I am having the same issue now. I'll try to do what you said!