mirror of
https://github.com/hanzoai/insights.git
synced 2026-10-30 16:15:31 +00:00
`insights/mount.py` is explicit: `/v1/` is the mount and `/api/` is the older spelling, kept on the wire for released CLI builds and personal-API-key holders and rewritten once at the edge by `ApiRewriteMiddleware`. Our own frontend was still on the older spelling: the orval clients were generated two days before the mount moved and the move did not regenerate them, so 70 files and 2323 paths said `/api/`. That is not only a spelling. `prepareUrl` in `lib/api.ts` rewrites `/v1/*` to the selected region's host in OAuth mode and nothing else, because that is what the cloud CORS allowlist covers — so every generated call quietly stayed same-origin, and `getExportsContentRetrieveUrl` builds an `<img src>` that never reaches `lib/api.ts` at all. The clients are regenerated from a spec that needs postgres, the datastore and Django, so this is the path strings only, which is the whole of what the mount move changes in them: orval copies paths verbatim from the spec, and the spec takes them from the URLconf. Doc comments carried the same stale prefix and move with them; their Python docstrings already say `/v1/`. The two frozen OAuth client-metadata paths are identifiers rather than API surface and appear in none of these files. The Slack task prompt told the agent to POST to `$INSIGHTS_API_URL/api/projects/...`, which is a live request path, not prose.
236 lines
8.4 KiB
TypeScript
Generated
236 lines
8.4 KiB
TypeScript
Generated
/**
|
|
* Auto-generated from the Django backend OpenAPI schema.
|
|
* To modify these types, update the Django serializers or views, then run:
|
|
* insightscli build:openapi
|
|
* Questions or issues? #team-devex on Slack
|
|
*
|
|
* Insights API - generated
|
|
* OpenAPI spec version: 1.0.0
|
|
*/
|
|
import { apiMutator } from '../../../../frontend/src/lib/api-orval-mutator'
|
|
import type { FileSystemApi } from './api.schemas'
|
|
|
|
// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497
|
|
type IfEquals<X, Y, A = X, B = never> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? A : B
|
|
|
|
type WritableKeys<T> = {
|
|
[P in keyof T]-?: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, P>
|
|
}[keyof T]
|
|
|
|
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never
|
|
type DistributeReadOnlyOverUnions<T> = T extends any ? NonReadonly<T> : never
|
|
|
|
type Writable<T> = Pick<T, WritableKeys<T>>
|
|
type NonReadonly<T> = [T] extends [UnionToIntersection<T>]
|
|
? {
|
|
[P in keyof Writable<T>]: T[P] extends object ? NonReadonly<NonNullable<T[P]>> : T[P]
|
|
}
|
|
: DistributeReadOnlyOverUnions<T>
|
|
|
|
export type environmentsFileSystemLinkCreateResponse200 = {
|
|
data: void
|
|
status: 200
|
|
}
|
|
|
|
export type environmentsFileSystemLinkCreateResponseSuccess = environmentsFileSystemLinkCreateResponse200 & {
|
|
headers: Headers
|
|
}
|
|
export type environmentsFileSystemLinkCreateResponse = environmentsFileSystemLinkCreateResponseSuccess
|
|
|
|
export const getEnvironmentsFileSystemLinkCreateUrl = (projectId: string, id: string) => {
|
|
return `/v1/environments/${projectId}/file_system/${id}/link/`
|
|
}
|
|
|
|
export const environmentsFileSystemLinkCreate = async (
|
|
projectId: string,
|
|
id: string,
|
|
fileSystemApi: NonReadonly<FileSystemApi>,
|
|
options?: RequestInit
|
|
): Promise<environmentsFileSystemLinkCreateResponse> => {
|
|
return apiMutator<environmentsFileSystemLinkCreateResponse>(getEnvironmentsFileSystemLinkCreateUrl(projectId, id), {
|
|
...options,
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json', ...options?.headers },
|
|
body: JSON.stringify(fileSystemApi),
|
|
})
|
|
}
|
|
|
|
export type environmentsIntegrationsLinkedinAdsAccountsRetrieveResponse200 = {
|
|
data: void
|
|
status: 200
|
|
}
|
|
|
|
export type environmentsIntegrationsLinkedinAdsAccountsRetrieveResponseSuccess =
|
|
environmentsIntegrationsLinkedinAdsAccountsRetrieveResponse200 & {
|
|
headers: Headers
|
|
}
|
|
export type environmentsIntegrationsLinkedinAdsAccountsRetrieveResponse =
|
|
environmentsIntegrationsLinkedinAdsAccountsRetrieveResponseSuccess
|
|
|
|
export const getEnvironmentsIntegrationsLinkedinAdsAccountsRetrieveUrl = (projectId: string, id: number) => {
|
|
return `/v1/environments/${projectId}/integrations/${id}/linkedin_ads_accounts/`
|
|
}
|
|
|
|
export const environmentsIntegrationsLinkedinAdsAccountsRetrieve = async (
|
|
projectId: string,
|
|
id: number,
|
|
options?: RequestInit
|
|
): Promise<environmentsIntegrationsLinkedinAdsAccountsRetrieveResponse> => {
|
|
return apiMutator<environmentsIntegrationsLinkedinAdsAccountsRetrieveResponse>(
|
|
getEnvironmentsIntegrationsLinkedinAdsAccountsRetrieveUrl(projectId, id),
|
|
{
|
|
...options,
|
|
method: 'GET',
|
|
}
|
|
)
|
|
}
|
|
|
|
export type environmentsIntegrationsLinkedinAdsConversionRulesRetrieveResponse200 = {
|
|
data: void
|
|
status: 200
|
|
}
|
|
|
|
export type environmentsIntegrationsLinkedinAdsConversionRulesRetrieveResponseSuccess =
|
|
environmentsIntegrationsLinkedinAdsConversionRulesRetrieveResponse200 & {
|
|
headers: Headers
|
|
}
|
|
export type environmentsIntegrationsLinkedinAdsConversionRulesRetrieveResponse =
|
|
environmentsIntegrationsLinkedinAdsConversionRulesRetrieveResponseSuccess
|
|
|
|
export const getEnvironmentsIntegrationsLinkedinAdsConversionRulesRetrieveUrl = (projectId: string, id: number) => {
|
|
return `/v1/environments/${projectId}/integrations/${id}/linkedin_ads_conversion_rules/`
|
|
}
|
|
|
|
export const environmentsIntegrationsLinkedinAdsConversionRulesRetrieve = async (
|
|
projectId: string,
|
|
id: number,
|
|
options?: RequestInit
|
|
): Promise<environmentsIntegrationsLinkedinAdsConversionRulesRetrieveResponse> => {
|
|
return apiMutator<environmentsIntegrationsLinkedinAdsConversionRulesRetrieveResponse>(
|
|
getEnvironmentsIntegrationsLinkedinAdsConversionRulesRetrieveUrl(projectId, id),
|
|
{
|
|
...options,
|
|
method: 'GET',
|
|
}
|
|
)
|
|
}
|
|
|
|
/**
|
|
* Generate an unsubscribe link for the current user's email address
|
|
*/
|
|
export type environmentsMessagingPreferencesGenerateLinkCreateResponse200 = {
|
|
data: void
|
|
status: 200
|
|
}
|
|
|
|
export type environmentsMessagingPreferencesGenerateLinkCreateResponseSuccess =
|
|
environmentsMessagingPreferencesGenerateLinkCreateResponse200 & {
|
|
headers: Headers
|
|
}
|
|
export type environmentsMessagingPreferencesGenerateLinkCreateResponse =
|
|
environmentsMessagingPreferencesGenerateLinkCreateResponseSuccess
|
|
|
|
export const getEnvironmentsMessagingPreferencesGenerateLinkCreateUrl = (projectId: string) => {
|
|
return `/v1/environments/${projectId}/messaging_preferences/generate_link/`
|
|
}
|
|
|
|
export const environmentsMessagingPreferencesGenerateLinkCreate = async (
|
|
projectId: string,
|
|
options?: RequestInit
|
|
): Promise<environmentsMessagingPreferencesGenerateLinkCreateResponse> => {
|
|
return apiMutator<environmentsMessagingPreferencesGenerateLinkCreateResponse>(
|
|
getEnvironmentsMessagingPreferencesGenerateLinkCreateUrl(projectId),
|
|
{
|
|
...options,
|
|
method: 'POST',
|
|
}
|
|
)
|
|
}
|
|
|
|
export type fileSystemLinkCreateResponse200 = {
|
|
data: void
|
|
status: 200
|
|
}
|
|
|
|
export type fileSystemLinkCreateResponseSuccess = fileSystemLinkCreateResponse200 & {
|
|
headers: Headers
|
|
}
|
|
export type fileSystemLinkCreateResponse = fileSystemLinkCreateResponseSuccess
|
|
|
|
export const getFileSystemLinkCreateUrl = (projectId: string, id: string) => {
|
|
return `/v1/projects/${projectId}/file_system/${id}/link/`
|
|
}
|
|
|
|
export const fileSystemLinkCreate = async (
|
|
projectId: string,
|
|
id: string,
|
|
fileSystemApi: NonReadonly<FileSystemApi>,
|
|
options?: RequestInit
|
|
): Promise<fileSystemLinkCreateResponse> => {
|
|
return apiMutator<fileSystemLinkCreateResponse>(getFileSystemLinkCreateUrl(projectId, id), {
|
|
...options,
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json', ...options?.headers },
|
|
body: JSON.stringify(fileSystemApi),
|
|
})
|
|
}
|
|
|
|
export type integrationsLinkedinAdsAccountsRetrieveResponse200 = {
|
|
data: void
|
|
status: 200
|
|
}
|
|
|
|
export type integrationsLinkedinAdsAccountsRetrieveResponseSuccess =
|
|
integrationsLinkedinAdsAccountsRetrieveResponse200 & {
|
|
headers: Headers
|
|
}
|
|
export type integrationsLinkedinAdsAccountsRetrieveResponse = integrationsLinkedinAdsAccountsRetrieveResponseSuccess
|
|
|
|
export const getIntegrationsLinkedinAdsAccountsRetrieveUrl = (projectId: string, id: number) => {
|
|
return `/v1/projects/${projectId}/integrations/${id}/linkedin_ads_accounts/`
|
|
}
|
|
|
|
export const integrationsLinkedinAdsAccountsRetrieve = async (
|
|
projectId: string,
|
|
id: number,
|
|
options?: RequestInit
|
|
): Promise<integrationsLinkedinAdsAccountsRetrieveResponse> => {
|
|
return apiMutator<integrationsLinkedinAdsAccountsRetrieveResponse>(
|
|
getIntegrationsLinkedinAdsAccountsRetrieveUrl(projectId, id),
|
|
{
|
|
...options,
|
|
method: 'GET',
|
|
}
|
|
)
|
|
}
|
|
|
|
export type integrationsLinkedinAdsConversionRulesRetrieveResponse200 = {
|
|
data: void
|
|
status: 200
|
|
}
|
|
|
|
export type integrationsLinkedinAdsConversionRulesRetrieveResponseSuccess =
|
|
integrationsLinkedinAdsConversionRulesRetrieveResponse200 & {
|
|
headers: Headers
|
|
}
|
|
export type integrationsLinkedinAdsConversionRulesRetrieveResponse =
|
|
integrationsLinkedinAdsConversionRulesRetrieveResponseSuccess
|
|
|
|
export const getIntegrationsLinkedinAdsConversionRulesRetrieveUrl = (projectId: string, id: number) => {
|
|
return `/v1/projects/${projectId}/integrations/${id}/linkedin_ads_conversion_rules/`
|
|
}
|
|
|
|
export const integrationsLinkedinAdsConversionRulesRetrieve = async (
|
|
projectId: string,
|
|
id: number,
|
|
options?: RequestInit
|
|
): Promise<integrationsLinkedinAdsConversionRulesRetrieveResponse> => {
|
|
return apiMutator<integrationsLinkedinAdsConversionRulesRetrieveResponse>(
|
|
getIntegrationsLinkedinAdsConversionRulesRetrieveUrl(projectId, id),
|
|
{
|
|
...options,
|
|
method: 'GET',
|
|
}
|
|
)
|
|
}
|