Lingara Lingara Mwongozo Miongozo API Maktaba Programu Unda Programu ya wavuti
Lugha: Kiswahili

Nyaraka za wasanidi programu za Lingara

Ukurasa huu umetafsiriwa kutoka Kiingereza. Ikiwa hizi mbili zinatofautiana, ukurasa wa Kiingereza ndio sahihi. Soma ukurasa wa Kiingereza

Muunganisho umeundwa kwa hatua, na hatua yoyote inaweza kubeba hati. Hati ya hatua ni mwili wa kitendakazi. Hupokea thamani mbili: lingara, API iliyo kwenye ukurasa huu, na input, sehemu za hatua yenyewe pamoja na mteja wake na hatua zilizounganishwa kabla yake. Aina ya input hutegemea aina ya hatua, kwa hivyo hati ya hatua ya webhook husoma sehemu za hatua ya webhook. Hati hurudisha kitu kimoja hasa, kilichojengwa na mojawapo ya visaidizi vilivyo hapa chini.

Hati haioni kamwe siri. Pale hatua inapomhitaji mteja wake, hupata kishikio, kama vile input.client, na kisaidizi hurekodi kishikio hicho. Lingara hujaza thamani halisi unapotumia muunganisho.

Kile ambacho hati haipaswi kufanya

Hati huendeshwa katika kivinjari chako mwenyewe, ndani ya worker isiyo na mtandao wala hifadhi. Inabanwa na mipaka hii:

  • Humaliza ndani ya sekunde 1.
  • Mfuatano wa herufi inaorudisha una urefu wa herufi 2048 zaidi.
  • Orodha inayorudisha ina vipengee 64 zaidi.
  • Matokeo yake yote ni 16 KiB zaidi.

Hati inayovunja mpaka, inayotupa hitilafu, au inayorudisha kitu kingine zaidi ya matokeo ya kisaidizi kimoja hufanya hatua yake ishindwe, na “Ikague” huonyesha ni hatua ipi na kwa nini.

Ahadi ya toleo

Kila kitu kwenye ukurasa huu ni lingara.v1. Ndani ya v1 API hukua tu: kisaidizi kipya, chaguo jipya la hiari au aina mpya ya hatua vinaweza kuonekana, lakini hakuna chochote unachoweza kutumia leo kitakachoondolewa, kubadilishwa jina au kupunguzwa. Badiliko ambalo lingevunja hati ni toleo jipya kando ya hili, na v1 hubaki kama lilivyo.

Matamko

Kila tamko lililo hapa chini limetolewa kutoka kwenye faili lilelile ambalo kihariri cha hati hukamilisha dhidi yake.

NodeHandle

Kitambulisho cha hatua nyingine, kama vile "n1". Hatua tegemezi humtaja mteja wake kwa kishikio.

export type NodeHandle = string;

Scope

Ruhusa ambayo mteja wa API anaweza kuwa nayo. Seva huamua ni zipi akaunti yako inaweza kutumia.

export type Scope = 'vocab:generate' | 'lesson_plans:read' | 'lesson_plans:write' | 'tutor:converse' | 'usage:read' | 'events:read' | 'events:write' | 'embed:mint' | 'embed:play';

AppSlot

Mahali katika programu ya Lingara ambapo kadi ya programu inaweza kuonekana.

export type AppSlot = 'plans.empty_detail' | 'home.side';

ContextSlice

Sehemu ya muktadha wa mwanafunzi ambayo programu inaweza kuomba kupokea.

export type ContextSlice = 'languages' | 'plan_summary' | 'review_due' | 'tutor_topic';

ClientOptions

Chaguo za lingara.client.

export interface ClientOptions {
    name: string;
    scopes: readonly Scope[];
    redirectUris?: readonly string[];
}
  • name (string) — Jina la mteja, kama Zana za wasanidi programu zinavyolionyesha.
  • scopes (readonly Scope[]) — Ruhusa ambazo mteja huomba.
  • redirectUris? (readonly string[]) — Mahali ambapo mtiririko wa msimbo wa uidhinishaji unaweza kumrudisha mwanafunzi. Iache kwa mteja wa seva-kwa-seva.

WebhookOptions

Chaguo za lingara.webhook.

export interface WebhookOptions {
    client: NodeHandle;
    url: string;
    events: readonly string[];
}
  • client (NodeHandle) — Hatua ya mteja ambayo webhook hii ni yake: input.client.
  • url (string) — Anwani ya HTTPS ambayo Lingara huwasilisha matukio kwake.
  • events (readonly string[]) — Aina za matukio za kuwasilisha, kama vile "lesson_plan.ready".

ManifestOptions

Chaguo za lingara.manifest, kwa camelCase; kisaidizi huandika umbo la manifest la kusafirishwa.

export interface ManifestOptions {
    name: string | Readonly<Record<string, string>>;
    description: string | Readonly<Record<string, string>>;
    renderUrl: string;
    slots: readonly AppSlot[];
    context?: readonly ContextSlice[];
    scopes?: readonly Scope[];
    tutorNote?: boolean;
    defaultLocale?: string;
}
  • name (string | Readonly<Record<string, string>>) — Jina la programu: mfuatano mmoja, au mfuatano mmoja kwa kila msimbo wa lugha.
  • description (string | Readonly<Record<string, string>>) — Sentensi moja kuhusu programu: mfuatano mmoja, au mfuatano mmoja kwa kila msimbo wa lugha.
  • renderUrl (string) — Anwani ya HTTPS ambayo Lingara huiomba kadi ya programu.
  • slots (readonly AppSlot[]) — Mahali ambapo kadi ya programu inaweza kuonekana.
  • context? (readonly ContextSlice[]) — Sehemu za muktadha ambazo programu hupokea. Chaguomsingi ni hakuna.
  • scopes? (readonly Scope[]) — Ruhusa ambazo programu humwomba mwanafunzi. Chaguomsingi ni hakuna.
  • tutorNote? (boolean) — Kama programu inaweza kuacha dokezo kwa mkufunzi. Chaguomsingi ni false.
  • defaultLocale? (string) — Lugha ambayo jina au maelezo yaliyo mfuatano wa kawaida huhifadhiwa chini yake. Chaguomsingi ni "en".

AppOptions

Chaguo za lingara.app.

export interface AppOptions {
    client: NodeHandle;
    manifest: Manifest;
}
  • client (NodeHandle) — Hatua ya mteja ambayo programu hii ni yake: input.client.
  • manifest (Manifest) — Manifest ya programu, iliyojengwa kwa lingara.manifest.

ClientSpec

Kile ambacho hatua ya mteja huunda: mteja wa API.

export interface ClientSpec {
    readonly kind: 'client';
    readonly name: string;
    readonly scopes: readonly Scope[];
    readonly redirectUris?: readonly string[];
}
  • kind ('client') — Daima "client".
  • name (string) — Jina la mteja.
  • scopes (readonly Scope[]) — Ruhusa ambazo mteja huomba.
  • redirectUris? (readonly string[]) — URI za kuelekeza upya za mteja, akiwa nazo.

SecretSpec

Kile ambacho hatua ya siri huunda: siri mpya kwa mteja wake.

export interface SecretSpec {
    readonly kind: 'secret';
    readonly client: NodeHandle;
}
  • kind ('secret') — Daima "secret".
  • client (NodeHandle) — Hatua ya mteja ambayo siri ni yake.

WebhookSpec

Kile ambacho hatua ya webhook huunda: kituo cha webhook.

export interface WebhookSpec {
    readonly kind: 'webhook';
    readonly client: NodeHandle;
    readonly url: string;
    readonly events: readonly string[];
}
  • kind ('webhook') — Daima "webhook".
  • client (NodeHandle) — Hatua ya mteja ambayo webhook ni yake.
  • url (string) — Anwani ambayo matukio huwasilishwa kwake.
  • events (readonly string[]) — Aina za matukio zinazowasilishwa.

AppSpec

Kile ambacho hatua ya programu huunda: programu inayoonyesha kadi ndani ya Lingara.

export interface AppSpec {
    readonly kind: 'app';
    readonly client: NodeHandle;
    readonly manifest: Manifest;
}
  • kind ('app') — Daima "app".
  • client (NodeHandle) — Hatua ya mteja ambayo programu ni yake.
  • manifest (Manifest) — Manifest ya programu.

Manifest

Manifest ya programu katika umbo lake la kusafirishwa, kama seva inavyoihifadhi.

export interface Manifest {
    readonly manifest_version: 1;
    readonly default_locale: string;
    readonly name: Readonly<Record<string, string>>;
    readonly description: Readonly<Record<string, string>>;
    readonly render_url: string;
    readonly slots: readonly AppSlot[];
    readonly context: readonly ContextSlice[];
    readonly scopes: readonly Scope[];
    readonly tutor_note: boolean;
}
  • manifest_version (1) — Daima 1.
  • default_locale (string) — Lugha inayoonyeshwa wakati lugha ya mwanafunzi mwenyewe haina ingizo.
  • name (Readonly<Record<string, string>>) — Jina la programu, kwa kila msimbo wa lugha.
  • description (Readonly<Record<string, string>>) — Sentensi moja kuhusu programu, kwa kila msimbo wa lugha.
  • render_url (string) — Anwani ya HTTPS ambayo Lingara huiomba kadi ya programu.
  • slots (readonly AppSlot[]) — Mahali ambapo kadi ya programu inaweza kuonekana.
  • context (readonly ContextSlice[]) — Sehemu za muktadha ambazo programu hupokea.
  • scopes (readonly Scope[]) — Ruhusa ambazo programu humwomba mwanafunzi.
  • tutor_note (boolean) — Kama programu inaweza kuacha dokezo kwa mkufunzi.

Spec

Spec yoyote ambayo kisaidizi hurudisha. Hati hurudisha moja hasa.

export type Spec = ClientSpec | SecretSpec | WebhookSpec | AppSpec;

Upstream

Matokeo ya kila hatua iliyotangulia moja kwa moja, kwa kishikio.

export type Upstream = Readonly<Record<NodeHandle, Spec & {
    readonly handle: NodeHandle;
}>>;

ClientInput

Ingizo la hatua ya mteja: sehemu zake, ambazo ndizo chaguo za lingara.client.

export interface ClientInput {
    readonly name: string;
    readonly scopes: readonly Scope[];
    readonly redirectUris?: readonly string[];
    readonly upstream: Upstream;
}
  • name (string) — Jina la mteja.
  • scopes (readonly Scope[]) — Ruhusa ambazo mteja huomba.
  • redirectUris? (readonly string[]) — URI za kuelekeza upya za mteja, hatua ikiwa nazo.
  • upstream (Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.

SecretInput

Ingizo la hatua ya siri. client ni hatua moja ya mteja iliyounganishwa na hii.

export interface SecretInput {
    readonly client: NodeHandle;
    readonly upstream: Upstream;
}
  • client (NodeHandle) — Hatua ya mteja iliyounganishwa na hii.
  • upstream (Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.

WebhookInput

Ingizo la hatua ya webhook: sehemu zake, pamoja na mteja aliyeunganishwa.

export interface WebhookInput {
    readonly client: NodeHandle;
    readonly url: string;
    readonly events: readonly string[];
    readonly upstream: Upstream;
}
  • client (NodeHandle) — Hatua ya mteja iliyounganishwa na hii.
  • url (string) — Anwani ambayo sehemu za hatua zinaitaja.
  • events (readonly string[]) — Aina za matukio ambazo sehemu za hatua zinazitaja.
  • upstream (Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.

AppInput

Ingizo la hatua ya programu: sehemu zake za manifest, pamoja na mteja aliyeunganishwa.

export interface AppInput {
    readonly client: NodeHandle;
    readonly manifest: ManifestOptions;
    readonly upstream: Upstream;
}
  • client (NodeHandle) — Hatua ya mteja iliyounganishwa na hii.
  • manifest (ManifestOptions) — Manifest ambayo sehemu za hatua zinaieleza.
  • upstream (Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.

InputFor

Ingizo ambalo hati ya aina fulani ya hatua hupokea.

export type InputFor<K extends Spec['kind']> = K extends 'client' ? ClientInput : K extends 'secret' ? SecretInput : K extends 'webhook' ? WebhookInput : AppInput;

LingaraV1

Visaidizi ambavyo hati huita. Kila kimoja hurudisha spec iliyogandishwa, na chaguo la aina isiyo sahihi hutupa TypeError inayolitaja.

export interface LingaraV1 {
    readonly version: 'v1';
    client(options: ClientOptions): ClientSpec;
    secret(client: NodeHandle): SecretSpec;
    webhook(options: WebhookOptions): WebhookSpec;
    app(options: AppOptions): AppSpec;
    manifest(options: ManifestOptions): Manifest;
}
  • version ('v1') — Daima "v1".
  • client(options: ClientOptions): ClientSpec — Mteja wa API.
  • secret(client: NodeHandle): SecretSpec — Siri mpya kwa hatua ya mteja.
  • webhook(options: WebhookOptions): WebhookSpec — Kituo cha webhook kwenye hatua ya mteja.
  • app(options: AppOptions): AppSpec — Programu kwenye hatua ya mteja.
  • manifest(options: ManifestOptions): Manifest — Manifest katika umbo lake la kusafirishwa, ikiwa chaguo ambazo v1 huziacha za hiari zimejazwa.
return lingara.client({ name: input.name, scopes: input.scopes })
return lingara.secret(input.client)
return lingara.webhook({ client: input.client, url: input.url, events: input.events })
return lingara.app({ client: input.client, manifest: lingara.manifest(input.manifest) })

NodeScript

Hati ya hatua ni mwili wa kitendakazi hiki: return lingara.webhook({ client: input.client, url: input.url, events: input.events }).

export type NodeScript<K extends Spec['kind']> = (lingara: LingaraV1, input: InputFor<K>) => Spec;

Tazama pia