Files
PowderCoatingLogix/src/PowderCoating.Web/appsettings.json
T
spouliot 843d1c3c51 Add token-authenticated catalog import API endpoint
POST /PowderCatalog/ImportApi accepts the JSON scrape format in the request
body, authenticated by a shared secret in the X-Import-Token header (matched
constant-time against CatalogImport:Token), with the vendor in X-Vendor-Name.
Runs through the same ImportJsonAsync -> shared upsert as the manual upload, so
the offline PrismaticSync tool can push unattended.

ImportJsonAsync refactored to take a Stream (the form upload now passes
file.OpenReadStream()). Endpoint is AllowAnonymous + IgnoreAntiforgeryToken
(it's token-gated, not cookie-auth) and returns 401 until a token is configured,
so it's inert by default. README updated with the route + token wiring.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 11:35:30 -04:00

92 lines
3.2 KiB
JSON

{
"ConnectionStrings": {
"DefaultConnection": "Server=.\\SQLEXPRESS;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true;TrustServerCertificate=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.EntityFrameworkCore": "Warning"
}
},
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
}
},
"AllowedHosts": "*",
"AppSettings": {
"CompanyName": "Powder Coating Logix",
"DefaultQuoteValidityDays": 30,
"DefaultPaymentTerms": "Net 30",
"TaxRate": 0.0,
"Currency": "USD"
},
"AI": {
"Anthropic": {
"ApiKey": "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"
},
"OpenAI": {
"ApiKey": "your-openai-api-key-here",
"Model": "gpt-4",
"Endpoint": "https://api.openai.com/v1"
},
"SemanticKernel": {
"Enabled": false
},
"Serper": {
"ApiKey": "25651af3a4829559ef0dfa1758fa3edbf92b6b76"
}
},
"Columbia": {
"ApiKey": "cca_live_ffd5e355809e1d23007d82982684157de5727c226bc2b482",
"BaseUrl": "https://columbiacoatings.com",
"ApiBasePath": "/wp-json/cca/v1"
},
"CatalogImport": {
"Token": ""
},
"SendGrid": {
"ApiKey": "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",
"FromEmail": "spouliot@scppowdercoating.com",
"FromName": "Powder Coating App Staff",
"DevRedirectEmail": "spouliot@scppowdercoating.com"
},
"Twilio": {
"AccountSid": "your-twilio-account-sid",
"AuthToken": "your-twilio-auth-token",
"FromNumber": "your-twilio-from-number",
"DevRedirectPhone": ""
},
"Stripe": {
"SecretKey": "sk_test_51TM6ukDedBup3CZU5TLbLhbBZDuBYwwygoc58JZwIrYQ2SyhKPUFcbHkFV1Q5osqkIEPt3XkwgsuinSJbY58GLx300l7z2lvqg",
"PublishableKey": "pk_test_51TM6ukDedBup3CZUst45gg9UfLQsijWap9ITR8elK3QT7ytm5B2okzx3RXXNjCsxPYKFwep8aJPYsCSzUBHzgBn000Y37XPxIr",
"WebhookSecret": "whsec_8ZNvufdNh1dS6TaQ8Ixmd0OtEXqI3eYs",
"Connect": {
"SecretKey": "sk_test_51T4BhEDxnI5c0z540zij4p72qY2QxSfxYEHd4hbwOAQrSZ0u9WXNfppZrgMLVnRNVaGKA3rC4WDyIuchm1ibG0c300sRj0uIuK",
"PublishableKey": "pk_test_51T4BhEDxnI5c0z54zY7enH5xgtmi8tAPH6JimphpZxuxva5PB3xC4QQmlM7XEICln38PDvLtolbRxo097XPLbeAo00w3NkPfuX",
"ConnectClientId": "ca_UBboV3dCLqOJgTzjp2vOMIMh0wLIOeGD",
"ConnectWebhookSecret": "whsec_cDFfVKGSV6aSIgOd3j2sZ2lo3Ly04KP9"
},
"Prices": {
"Basic": "price_basic_monthly_id_here",
"Pro": "price_pro_monthly_id_here",
"Enterprise": "price_enterprise_monthly_id_here"
}
},
"Storage": {
"ConnectionString": "DefaultEndpointsProtocol=https;AccountName=powdercoatingappdev;AccountKey=DN3eVfhytXb7aBC0md9h/6jE0Uzg6FJ+PK6MFc772qyqpf0kgTeXH0C2VCBBun9PiuItPd9CDKTP+ASthFCuCg==;EndpointSuffix=core.windows.net",
"Containers": {
"ProfileImages": "profileimages",
"JobImages": "jobimages",
"Manuals": "manuals",
"CompanyLogos": "companylogos",
"ReceiptImages": "receiptimages",
"CatalogImages": "catalogimages"
}
}
}