# Stöd för OpenAPI Specification 3.0

Designa ett API med OpenAPI Specification (OAS) 3.0 med hjälp av API-kontrakt.

OpenAPI Specification 3.0 innehåller nya funktioner, vilket ger API-designers ökad uttrycksfullhet och produktivitet.

För mer information om OpenAPI, se [Swagger-dokumentationen](https://swagger.io/docs/specification/about/).

## Komponenter

Komponenter gör att du kan återanvända olika element i ett API. Dessa element kan vara:

* Sökvägsvariabler
* Frågeparametrar
* Rubriker
* Svar

## Kombinationer

Kombinationer gör det möjligt att skapa en ny datatyp genom att kombinera flera andra datatyper. API-kontrakt har stöd för två typer av kombinationer:

* Komposition (allOf) låter dig aggregera schemaegenskaper från olika scheman. Till exempel kan du definiera en datatyp Company genom att återanvända alla egenskaper från de befintliga typerna Contact och Error. ![Exempel på en komposition.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ApiDesigner/all_of.png)
* Polymorfism (oneOf/anyOf) gör att du kan skapa en entitet som kan använda egenskaperna från olika datatyper.
  * oneOf låter dig definiera en datatyp som innehåller egenskaperna för en av de valda typerna. Om du till exempel skapar en operation för att hämta information om ett tjänstkonto kan du definiera svaret med hjälp av kombinationen oneOf för att hämta antingen alla egenskaper för Error eller alla egenskaper för ServiceAccountCount. ![Exempel på en polymorfism.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ApiDesigner/oneof.png)

  * anyOf gör att du kan definiera en datatyp som innehåller egenskaperna för en eller flera av de valda typerna. Du kan till exempel definiera en datatyp nervousSystem och en typ skeleton som innehåller olika egenskaper, och använda kombinationen anyOf för att skapa en datatyp som innehåller valfria egenskaper från någon av dessa typer.

    En anyOf-kombination är giltig så länge den innehåller alla obligatoriska parametrar för minst en av de valda datatyperna. Exemplet nedan använder egenskapen brain\_weight från typen nervousSystem och egenskaperna skull\_height och teeth från skeleton.

    ![Exempel på en kombination som använder datatyperna nervousSystem och skeleton.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ApiDesigner/anyof.png)

För mer information om komposition och polymorfism, se [Arv och polymorfism](https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/) och [Skillnaden mellan anyOf och oneOf](https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/#anyof-vs-oneof).

## Svar

OAS 3.0 låter dig definiera nya typer av svar för dina operationer:

* Svarsintervall: i stället för att definiera ett svar som 200 kan du ange det som 2XX, så att det inkluderar svar från 200 till 299.
* Standardsvar: du kan definiera ett standardsvar som ska returneras när ett specifikt svar eller ett intervallsvar inte har definierats.

Svar definierade med en explicit kod har företräde framför svarsintervall och standardsvar, och svarsintervall har företräde framför standardsvar. I följande exempel:

* Svaret 204 är definierat och har företräde framför de övriga.
* 2XX-svaret gäller för svarskoderna 200 till 203 och 205 till 299.
* default-svaret gäller för alla 1XX-, 3XX-, 4XX- och 5XX-svar.

![Delavsnittet Svar.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ApiDesigner/responses-headers-api.png)

## Säkerhet

OAS 3.0 introducerar nya säkerhetsscheman för ditt API:

* Bearer-autentisering
* OpenIdConnect

## Begränsningar

OAS 3.0 låter dig ange att vissa egenskaper är skrivskyddade eller endast för skrivning.

Detta alternativ är endast tillgängligt i datatyper och kan inte definieras i begäranden eller svar på åtgärdsnivå.

![Exempel på begränsning.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/ApiDesigner/designer_restrictions.png)