> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OAuth klienta akreditācijas dati

> Izveidojiet ierobežota apjoma pakalpojuma konta klientu, rīkojieties ar vienreiz izsniedzamiem noslēpumiem un droši atgūstiet darbību pēc neskaidriem pieprasījumiem.

Izmantojiet OAuth klienta akreditācijas datus, ja jūsu aizmugursistēmas integrācijai ir nepieciešami īslaicīgi
piekļuves tokeni vai to pieprasa jūsu drošības politika. Katrs klients pieder
vienam pakalpojuma kontam un vienai organizācijai. **OAuth nav obligāts:** privātai servera integrācijai, kas spēj droši glabāt
un rotēt atslēgu, pietiek ar ierobežota apjoma
API atslēgu. Skatiet [Authentication](/lv/developers/v1/authentication), lai izvēlētos
starp abām metodēm un izprastu, kā tajās iekļaujas pakalpojumu konti.

<Note>
  Jūsu organizācijai ir jābūt iespējotai OAuth piekļuvei. Iestatīšanas laikā tiek nodrošināts
  reģionālais tokenu galapunkts, izdevējs, mērķauditorija un klienta autentifikācijas metode.
  Ja jums ir nepieciešami šie iestatījumi vai nevarat piekļūt klientu pārvaldībai, sazinieties ar
  Living Security atbalsta dienestu.
</Note>

Klienta akreditācijas datu piešķīrums (client credentials grant) pārstāv jūsu pakalpojuma kontu. Tas nepierakstīta personu
un neprasa klientam autorizēt lietojumprogrammu. Deleģētā autorizācija, izmantojot
pārlūkprogrammu, ir atsevišķa OAuth iespēja, un šīs darbības to nenodrošina.

## Pirms sākat

* Izveidojiet [pakalpojuma kontu](/lv/developers/developer-hub/service-accounts) tikai ar
  tām atļaujām, kas nepieciešamas integrācijai.
* Izmantojiet pārvaldības akreditācijas datus ar `service_account:manage` un katru atļauju,
  ko vēlaties piešķirt jaunajam klientam. Mērķa kontam ir jābūt arī šīm
  atļaujām. Klients nevar paplašināt neviena konta pilnvaras.
* Izvēlieties organizācijas [reģionu](/lv/developers/v1/regions). API akreditācijas dati un
  OAuth piekļuves tokeni attiecas uz atbilstošo reģionālo API resursdatoru.
* Glabājiet klienta noslēpumu un tokenus savā servera puses noslēpumu krātuvē. Nekad neievietojiet
  tos pārlūkprogrammas kodā, mobilajās lietojumprogrammās, versiju kontrolē vai pieprasījumu žurnālos.

## Klienta izveide

`POST /v1/oauth_clients` nepieciešams `service_account_id`, netukšs skaidri norādīta
`scopes` saraksts un `Idempotency-Key`. Aizstājējzīmes netiek pieņemtas. Klients atbalsta
līdz 100 darbības jomām (scopes) ar kopējo garumu ne vairāk kā 4 096 rakstzīmes. Katram pakalpojuma
kontam var būt ne vairāk kā 20 klientu vai neatrisinātu izveides/tīrīšanas darbību.
Atsaukšana nekavējoties liedz piekļuvi API. Klients vai neskaidra pakalpojumu sniedzēja
puses izveide turpina ieskaitīties limitā, līdz ir apstiprināta attālā tīrīšana.
Pamesta rezervācija vai izveide, par kuru pierādīts, ka tā neizdevās pirms pakalpojumu sniedzēja
darbības sākuma, var droši atbrīvot savu vietu. Tās atkārtošanas atslēga joprojām pieder sākotnējam
mēģinājumam; pirms izlemjat izveidot aizstājēju, atgūstiet šo kvīti.

Izvēlieties vienu atkārtošanas atslēgu šim izveides mēģinājumam un saglabājiet to **pirms** pieprasījuma
nosūtīšanas. Izmantojiet 1–255 redzamas ASCII rakstzīmes bez atstarpēm. Izmantojiet to atkārtoti ar to pašu kontu,
darbības jomām, pārvaldības principālu, reģionu un API versiju pēc zaudētas atbildes. Pārvaldības akreditācijas datu rotēšana
zem tā paša pakalpojuma konta neveido jaunu atkārtošanas identitāti.

Instalējiet Python pakotni `requests`. Ielādējiet turpmākās vides vērtības, izmantojot
savu ierasto noslēpumu un konfigurācijas pārvaldību:

| Variable | Value |
| - | - |
| `LIVING_SECURITY_API_KEY` | Pārvaldības API atslēga |
| `LIVING_SECURITY_REGION` | `us` vai `eu` |
| `LIVING_SECURITY_SERVICE_ACCOUNT_ID` | Mērķa pakalpojuma konta ID |
| `LIVING_SECURITY_OAUTH_CREATE_KEY` | Iepriekš saglabātā atkārtošanas atslēga |

```python Python theme={null}
import os
import requests

HOSTS = {
    "us": "https://api.us-east-1.livingsecurity.ai/v1",
    "eu": "https://api.eu-west-1.livingsecurity.ai/v1",
}
base = HOSTS[os.environ["LIVING_SECURITY_REGION"]]
response = requests.post(
    f"{base}/oauth_clients",
    auth=("apikey", os.environ["LIVING_SECURITY_API_KEY"]),
    headers={
        "Living-Security-Version": "2026-07-01",
        "Idempotency-Key": os.environ["LIVING_SECURITY_OAUTH_CREATE_KEY"],
    },
    json={
        "service_account_id": os.environ["LIVING_SECURITY_SERVICE_ACCOUNT_ID"],
        "scopes": ["organization:read"],
    },
    timeout=(5, 30),
    allow_redirects=False,
)
try:
    if response.status_code != 201:
        raise RuntimeError(
            f"Client creation needs review: HTTP {response.status_code}; "
            f"request_id={response.headers.get('Request-Id', 'unknown')}"
        )
    client = response.json()
    if client.get("object") != "oauth_client" or not client.get("id"):
        raise RuntimeError("Unexpected client receipt; preserve the retry key")
    if client.get("status") != "active" or not client.get("client_secret"):
        raise RuntimeError(
            f"Client {client['id']} needs recovery; no usable secret was returned"
        )
    # Persist client['id'], client['client_id'], and client['client_secret']
    # directly in your secret manager before using the client. Do not print them.
finally:
    response.close()
```

Piemērs veic vienu pieprasījumu un glabā rezultātu atmiņā. Pirms izmantošanas produkcijā norādītajā vietā pievienojiet
sava noslēpumu pārvaldnieka rakstīšanas darbību.
Piemērs apzināti pieprasa lēmumu pēc neskaidra rezultāta, nevis klusi
izveido citu klientu. Arī tīkla izņēmumiem nepieciešamas tālāk aprakstītās atgūšanas darbības.

Izveides un kvīts atbildēs tiek izmantots `201`, un tās satur `oauth_client` resursu
ar `id`, `service_account_id`, `client_id`, `scopes`, `status`, `created_at` un
`client_secret`. Atbildes ir atzīmētas ar `Cache-Control: no-store`.

* **`id`** identificē platformas resursu. Saglabājiet to iegūšanai un atsaukšanai.
* **`client_id`** identificē klientu tokenu apmaiņas laikā. Tas nav
  platformas resursa ID. Kamēr izveide ir nepabeigta, tas var būt `null`.
* **`client_secret`** tiek atgriezts tikai tam pieprasījumam, kas pabeidz izveidi.
  Katrs atkārtots izveides pieprasījums atgriež `null`, tostarp atkārtojums pēc zaudētas
  veiksmīgas atbildes. Iegūšana nekad neatgriež noslēpumu.

## Zaudētas vai pārtrauktas atbildes atgūšana

Atkārtojiet to pašu izveides pieprasījumu ar saglabāto atkārtošanas atslēgu, lai atgūtu resursa
kvīti. Kvīts atspoguļo pašreizējo stāvokli, tāpēc atsauktais klients paliek atsaukts.
Šī darbība neizmanto vispārējo 24 stundu kešatmiņā saglabāto atbilžu atkārtošanas līgumu
un neatgriež `Idempotent-Replayed` galveni.

| Result | Next action |
| - | - |
| `active`, noslēpums ir | Droši saglabājiet noslēpumu un turpiniet ievadīšanu. |
| `active`, noslēpuma nav | Noslēpumu nav iespējams atgūt. Atsauciet šo klientu, apstipriniet atsaukšanu, pēc tam izveidojiet aizstājēju ar jaunu atkārtošanas atslēgu. |
| `pending` | Izveide nav apstiprināta. Saglabājiet to pašu atkārtošanas atslēgu. Iegūstiet resursu, lai pārbaudītu stāvokli; neveidojiet dublikātus, lai apietu nenoteiktību. |
| `revoked`, `disabled` vai `expired` | Neizmantojiet šo klientu. Pirms izveidojat aizstājēju, apstipriniet paredzēto konta konfigurāciju. |
| `409 idempotency_key_reuse` | Pieprasījums ir mainījies, izmantojot esošu atslēgu. Pirms izlemjat, vai nepieciešama atsevišķa izveide, atgūstiet sākotnējo darbību. |
| `409 invalid_request` | Pārbaudiet mērķa konta statusu un piešķīrumus. Ja tā klientu limits ir sasniegts, pirms atkārtošanas pabeidziet tīrīšanu; atkārtošanas atslēgas maiņa neatbrīvo ietilpību. |
| `429` | Ievērojiet `Retry-After`; saglabājiet to pašu atslēgu un pieprasījumu. |
| `500`, `503` vai tīkla noildze | Rezultāts var būt nezināms. Saglabājiet atslēgu un ievaddatus; pirms veidojat citu klientu, atgūstiet kvīti. |
| `401` vai `403` | Pirms atkārtojat, atrisiniet akreditācijas datu, atļauju vai tiesību piekļuves jautājumu. |
| `404` | Apstipriniet OAuth iespējošanu, reģionālo resursdatoru un resursa piederību. |

Informāciju par pieprasījumu ID un atgūšanu skatiet sadaļā [errors](/lv/developers/v1/errors/overview).
Nekad nesūtiet klienta noslēpumu vai piekļuves tokenu kopā ar atbalsta pieprasījumu.

## Pārbaude un atsaukšana

Izmantojiet savus pārvaldības akreditācijas datus un platformas resursa `id`:

| Operation | Request | Success |
| - | - | - |
| Pašreizējā stāvokļa pārbaude | `GET /v1/oauth_clients/{id}` | `200`, klienta resurss bez noslēpuma |
| Piekļuves atsaukšana | `DELETE /v1/oauth_clients/{id}` | `200`, atsauktā klienta resurss bez noslēpuma |

Atsaukšana bloķē turpmākos klienta API pieprasījumus, tostarp pieprasījumus ar
jau izsniegtiem tokeniem. Tā neatceļ darbu, ko API jau ir pieņēmis.
Attālā akreditācijas datu tīrīšana var tikt pabeigta vēlāk. Atsaukšanas atkārtošana ir droša
un neprasa atkārtošanas atslēgu. Turpiniet izmantot pārvaldības akreditācijas datus, ja atsaucamais
klients pats ir API izsaucējs.

## Rotēšana bez piekļuves zaudēšanas

Izveidojiet otru klientu ar nepieciešamo darbības jomu augšējo robežu. Saglabājiet tā noslēpumu, iegūstiet
tokenu, izmantojot savu reģionālo tokenu galapunktu, un pārbaudiet, vai integrācija ar to darbojas.
Pārslēdziet integrāciju uz aizstājēju, pēc tam atsauciet veco resursu.
Saglabājiet neatkarīgus pārvaldības akreditācijas datus, lai varētu atgūties no neveiksmīgas ieviešanas.

Piekļuves tokeni nevar piešķirt vairāk, nekā atļauj klienta darbības jomas un pakalpojuma konta
pašreizējās atļaujas. Konta atļauju noņemšana vai klienta atsaukšana
ir svarīgāka par tokena atlikušo derīguma laiku. Neuzskatiet kešatmiņā saglabātu tokenu par pierādījumu,
ka autorizācija joprojām ir spēkā. Jaunu piekļuves tokenu iegūstiet pirms derīguma beigām,
atkārtoti autentificējot klientu; šis piešķīrums neizmanto atsvaidzināšanas tokenus.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.