Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Bemerkning
Interessegrupper i fellesskapet har nå flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil bli med i et Viva Engage-fellesskap og delta i de siste diskusjonene, fyller du ut skjemaet Be om tilgang til Finance and Operations Viva Engage Community og velger fellesskapet du vil bli med i.
Viktig!
Fra og med februar 2026 kan ikke nye kunder opprette prosjekter i Microsoft Dynamics Lifecycle Services for Microsoft Dynamics 365 Finance, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Supply Chain Management og Microsoft Dynamics 365 Project Operations. Nye kunder bør bruke administrasjonssenteret for Power Platform i stedet. Hvis du vil ha mer informasjon, kan du se Prosjektopprettelsesfrys for livssyklustjenester.
Denne artikkelen beskriver de offentlige API-ene som leveres av Lagersynlighet.
Den offentlige REST-API-en i tillegget for lagersynlighet viser flere spesifikke endepunkter for integrering. Det støtter fire hovedtyper for samhandling:
- Postering av beholdningsendringer i tillegget fra et eksternt system
- Angi eller overstyre lagerbeholdningsantall i tillegget fra et eksternt system
- Postering av reservasjonshendelser i tillegget fra et eksternt system
- Spørring etter gjeldende antall i beholdningen fra et eksternt system
Følgende tabell viser API-ene som er tilgjengelige for øyeblikket:
| Bane | Metode | Description |
|---|---|---|
/api/environment/{environmentId}/onhand |
Poster | Opprett én lagerendringshendelse |
/api/environment/{environmentId}/onhand/bulk |
Poster | Opprett flere endringshendelser |
/api/environment/{environmentId}/setonhand/{inventorySystem}/bulk |
Poster | Angi/overstyre lagerbeholdninger |
/api/environment/{environmentId}/onhand/reserve |
Poster | Opprett én ikke-forpliktende reservasjonshendelse |
/api/environment/{environmentId}/onhand/reserve/bulk |
Poster | Opprett flere ikke-forpliktende reservasjonshendelser |
/api/environment/{environmentId}/onhand/unreserve |
Poster | Tilbakefør én ikke-forpliktende reservasjonshendelse |
/api/environment/{environmentId}/onhand/unreserve/bulk |
Poster | Tilbakefør flere ikke-forpliktende reservasjonshendelser |
/api/environment/{environmentId}/onhand/reserve/resyncjob |
Poster | Opprydding i reservasjonsdata |
/api/environment/{environmentId}/getJobProgress |
Hent | Få fremdrift for jobbutførelse |
/api/environment/{environmentId}/onhand/changeschedule |
Poster | Opprett én planlagt lagerendring |
/api/environment/{environmentId}/onhand/changeschedule/bulk |
Poster | Opprett flere lagerendringer med datoer |
/api/environment/{environmentId}/onhand/indexquery |
Poster | Spørring ved å bruke posteringsmetoden (anbefalt) |
/api/environment/{environmentId}/onhand |
Hent | Spør ved å bruke hentemetoden |
/api/environment/{environmentId}/onhand/exactquery |
Poster | Nøyaktig spørring ved å bruke posteringsmetoden |
/api/environment/{environmentId}/allocation/allocate |
Poster | Opprett én tildelingshendelse |
/api/environment/{environmentId}/allocation/unallocate |
Poster | Opprett én ikke-tilordnet-hendelse |
/api/environment/{environmentId}/allocation/reallocate |
Poster | Opprett én hendelse for ny tildeling |
/api/environment/{environmentId}/allocation/consume |
Poster | Opprett én konsumeringshendelse |
/api/environment/{environmentId}/allocation/query |
Poster | Fordelingsresultat for spørring |
/api/environment/{environmentId}/onhand/productsearch/indexquery |
Poster | Poster indeksspørring med produktsøk |
/api/environment/{environmentId}/onhand/productsearch/exactquery |
Poster | Poster nøyaktig spørring med produktsøk |
/api/environment/{environmentId}/transaction/adjustment/bulk |
Poster | Synkronisere eksterne lagerendringer gjennom synlighet for lager |
Bemerkning
{environmentId}-delen av banen er miljø-ID-en til Microsoft Dynamics 365 Supply Chain Management. Denne ID-en er den som er angitt for Administrasjon av forsyningskjede i Microsoft Dynamics Lifecycle Services, ikke ID-en til Power Platform-miljøet som er knyttet til administrasjonsmiljøet for forsyningskjeden.
Bulk-API-en kan returnere maksimalt 512 poster for hver forespørsel.
Godkjenning
Platformsikkerhetstokenet brukes til å kalle inn den offentlige API-en for lagersynlighet. Derfor må du generere et Microsoft Entra-token ved hjelp av Microsoft Entra-programmet. Deretter må du bruke Microsoft Entra-tokenet for å få tilgangstokenet fra sikkerhetstjenesten.
Følg disse trinnene for å få et sikkerhetstjenestetoken:
Logg på Azure-portalen, og bruk den
clientIdtil å finne verdiene ogclientSecretverdiene for Dynamics 365 Supply Chain Management-appen.Hent et Microsoft Entra-token (
aadToken) ved å sende inn en HTTP-forespørsel som har følgende egenskaper:Nettadresse:
https://login.microsoftonline.com/${aadTenantId}/oauth2/v2.0/tokenMetode:
GETMeldingstekst (skjemadata):
Nøkkel Verdi client_id ${aadAppId} client_secret ${aadAppSecret} grant_type client_credentials område 0cdb527f-a8d1-4bf8-9436-b352c68682b2/.default
Du bør motta et Microsoft Entra-token (
aadToken) som svar. Den skal ligne følgende eksempel.{ "token_type": "Bearer", "expires_in": "3599", "ext_expires_in": "3599", "access_token": "eyJ0eX...8WQ" }Former en JavaScript Object Notation-forespørsel (JSON) som ligner på følgende eksempel.
{ "grant_type": "client_credentials", "client_assertion_type": "aad_app", "client_assertion": "${Your_Microsoft_EntraToken}", "scope": "https://inventoryservice.operations365.dynamics.com/.default", "context": "${fno_environment_id}", "context_type": "finops-env" }Merk følgende punkt:
- Verdien
client_assertionmå være Microsoft Entra-tokenet (aadToken) som du mottok i forrige trinn. - Verdien
contextmå være miljø-ID-en for administrasjon av forsyningskjede der du vil distribuere tillegget. - Angi de andre verdiene som vist i eksemplet.
- Verdien
Hent et tilgangstoken (
access_token) ved å sende en HTTP-forespørsel som har følgende egenskaper:Nettadresse:
https://securityservice.operations365.dynamics.com/tokenMetode:
POSTHTTP-topptekst:
Nøkkel Verdi Api-Version 1,0 Innholdstype program/json Meldingstekst: Ta med JSON-forespørselen du opprettet i forrige trinn.
Du skal motta et tilgangstoken (
access_token) som svar. Du må bruke dette tokenet som bærertoken for å kalle opp lagersynlighets-API-en. Her er et eksempel.{ "access_token": "${Returned_Token}", "token_type": "bearer", "expires_in": 3600 }Bemerkning
Hvis du mottar et svar med statuskode 307, bruker du verdien i toppteksten
Locationtil å sende tokenforespørselen på nytt til den nye URL-adressen. De fleste HTTP-biblioteker håndterer omadresseringer automatisk.
Opprett lagerendringshendelser
Det finnes to API-er for oppretting av lagerendringshendelser:
- Opprett én oppføring:
/api/environment/{environmentId}/onhand - Opprett flere oppføringer:
/api/environment/{environmentId}/onhand/bulk
Tabellen nedenfor summerer betydningen av hvert felt i JSON-teksten.
| Felt-ID | Description |
|---|---|
id |
En unik ID for den bestemte endringshendelsen. Hvis det forekommer en ny sending på grunn av en tjenestefeil, brukes denne ID-en til å sikre at samme hendelse ikke telles to ganger i systemet. |
organizationId |
Identifikatoren til organisasjonen som er koblet til hendelsen. Denne verdien tilordnes til en ID for organisasjon eller dataområde i Supply Chain Management. |
productId |
Identifikatoren for produktet. |
quantities |
Antallet som antall på lager må endres etter. Hvis for eksempel 10 nye bøker legges til på en hylle, vil denne verdien være quantities:{ shelf:{ received: 10 }}. Hvis tre bøker fjernes fra hyllen eller selges, vil denne verdien være quantities:{ shelf:{ sold: 3 }}. |
dimensionDataSource |
Datakilden for dimensjonene som brukes i posteringsendringshendelsen og -spørringen. Hvis du angir datakilden, kan du bruke de egendefinerte dimensjonene fra den angitte datakilden. Lagersynlighet kan bruke dimensjonskonfigurasjonen til å tilordne de egendefinerte dimensjonene til de generelle standarddimensjonene. Hvis ingen dimensionDataSource-verdi er angitt, kan du bare bruke de generelle basisdimensjonene i spørringene. |
dimensions |
Et dynamisk nøkkel/verdi-par. Verdiene er tilordnet til noen av dimensjonene i Supply Chain Management. Du kan imidlertid også legge til egendefinerte dimensjoner (for eksempel Kilde) for å angi om hendelsen kommer fra Supply Chain Management eller et eksternt system. |
Bemerkning
Hvis datapartisjonsregelen er angitt til Etter produkt-ID, siteId og locationId er valgfrie dimensjoner. Ellers er de nødvendige dimensjoner. Denne regelen gjelder også for APIer for tildeling, ikke-forpliktende og endringsplan.
Følgende del er eksempler som viser hvordan du bruker disse APIene.
Opprett én lagerendringshendelse
Denne API-en oppretter én enkelt lagerendringshendelse.
Path:
/api/environment/{environmentId}/onhand
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string, # Optional
dimensions: {
[key:string]: string,
},
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
}
Følgende eksempel viser eksempeltekstinnholdet. I dette eksemplet har firmaet et POS-system (salgssted) som behandler transaksjoner i butikk og dermed lagerendringer. Kunden har returnert en rød T-skjorte til butikken. For å reflektere endringer kan du postere en endringshendelse for produktet T-skjorte. Denne hendelsen vil øke antallet for produktet T-skjorte med 1.
{
"id": "Test201",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"siteId": "1",
"locationId": "11",
"posMachineId": "0001",
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 1
}
}
}
Følgende eksempel viser eksempeltekstinnholdet uten dimensionDataSource. I dette tilfellet vil dimensions være basisdimensjoner. Hvis dimensionDataSource er angitt, kan dimensions være enten datakildedimensjonene eller basisdimensjonene.
{
"id": "Test202",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensions": {
"siteId": "1",
"locationId": "11",
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 1
}
}
}
Opprett flere endringshendelser
Denne API-en kan opprette endringshendelser, på samme måten som API-en med enkelthendelser kan. Den eneste forskjellen er at denne API-en kan opprette flere poster samtidig. Derfor er verdiene Path og Body forskjellige. For denne API-en inneholder Body en matrise med poster. Maksimalt antall oppføringer er 512. Derfor kan bulk-API-en for lagerbeholdningendring støtte opptil 512 endringshendelser om gangen.
En detaljhandelsbutikk POS-maskin behandlet for eksempel følgende to transaksjoner:
- En returordre med en rød T-skjorte
- En salgstransaksjon av tre sorte T-skjorter
I dette tilfellet kan du ta med begge lageroppdateringene i én API-samtale.
Path:
/api/environment/{environmentId}/onhand/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string, # Optional
dimensions: {
[key:string]: string,
},
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
},
...
]
Følgende eksempel viser eksempeltekstinnholdet.
[
{
"id": "Test203",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"SiteId": "Site1",
"LocationId": "11",
"posMachineId": "0001"
"colorId": "red"
},
"quantities": {
"pos": { "inbound": 1 }
}
},
{
"id": "Test204",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensions": {
"siteId": "1",
"locationId": "11",
"colorId": "black"
},
"quantities": {
"pos": { "outbound": 3 }
}
}
]
Angi/overstyre lagerbeholdninger
API-en Angi lagerbeholdning overstyrer de gjeldende dataene for det angitte produktet. Denne funksjonaliteten brukes vanligvis til å oppdatere lageropptelling. I løpet av den daglige lageropptellingen kan for eksempel en butikk finne ut at den faktiske lagerbeholdningen for en rød T-skjorte er 100. Derfor må det innkommende antallet i POS oppdateres til 100, uansett hva det forrige antallet var. Du kan bruke denne API-en til å overstyre den eksisterende verdien.
Path:
/api/environment/{environmentId}/setonhand/{inventorySystem}/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string, # Optional
dimensions: {
[key:string]: string,
},
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
modifiedDateTimeUTC: datetime,
},
...
]
Følgende eksempel viser eksempeltekstinnholdet. Virkemåten til denne API-en er forskjellig fra virkemåten til API-ene som er beskrevet i delen Opprett lagerendringshendelser tidligere i denne artikkelen. I dette eksemplet blir antallet for produktet T-skjorte angitt til 1.
[
{
"id": "Test204",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"SiteId": "1",
"LocationId": "11",
"posMachineId": "0001"
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 100
}
}
}
]
Opprett reservasjonshendelser
Hvis du vil bruke API-en Reserver, må du aktivere reservasjonsfunksjonen og fullføre reservasjonskonfigurasjonen. Hvis du vil ha mer informasjon (inkludert en dataflyt og et eksempelscenario), kan du se Lagersynlighet-reservasjoner.
Opprett én reservasjonshendelse
En reservering kan gjøres mot ulike datakildeinnstillinger. Hvis du vil konfigurere denne reserveringstypen, må du først angi datakilden i dimensionDataSource parameteren. I parameteren dimensions kan du deretter angi dimensjoner i henhold til dimensjonsinnstillingene i måldatakilden.
Når du kaller reservasjons-API, kan du styre reservasjonsvalideringen ved å angi den boolske ifCheckAvailForReserv parameteren i forespørselsteksten. Verdien True betyr at valideringen kreves, mens en verdi å False betyr at valideringen ikke er nødvendig. Standardverdien er True.
Hvis du vil tilbakeføre en reservering eller ikke reservere angitte lagerantall, setter du antallet til en negativ verdi og setter parameteren ifCheckAvailForReserv til False for å hoppe over valideringen. Det finnes også en dedikert API for opphevelse av reservasjon som gjør det samme. Forskjellen er bare i måten de to API-ene kalles opp på. Det er enklere å tilbakeføre en bestemt reservasjonshendelse ved å bruke reservationId med API-en for opphevelse av reservasjon. Finn ut mer i delen Fortjen én reservasjonshendelse .
Path:
/api/environment/{environmentId}/onhand/reserve
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string,
dimensions: {
[key:string]: string,
},
quantityDataSource: string, # optional
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
modifier: string,
quantity: number,
ifCheckAvailForReserv: boolean,
}
Følgende eksempel viser eksempeltekstinnholdet.
{
"id": "reserve-0",
"organizationId": "SCM_IV",
"productId": "iv_contoso_product",
"quantity": 1,
"quantityDataSource": "iv",
"modifier": "softReservOrdered",
"ifCheckAvailForReserv": true,
"dimensions": {
"siteId": "iv_contoso_site",
"locationId": "iv_contoso_location",
"colorId": "red",
"sizeId": "small"
}
}
Følgende eksempel viser et vellykket svar.
{
"reservationId": "RESERVATION_ID",
"id": "ohre~id-822-232959-524",
"processingStatus": "success",
"message": "",
"statusCode": 200
}
Opprett flere reservasjonshendelser
Denne API-en er en masseversjon av API-en for enkelthendelser.
Path:
/api/environment/{environmentId}/onhand/reserve/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
dimensionDataSource: string,
dimensions: {
[key:string]: string,
},
quantityDataSource: string, # optional
quantities: {
[dataSourceName:string]: {
[key:string]: number,
},
},
modifier: string,
quantity: number,
ifCheckAvailForReserv: boolean,
},
...
]
Tilbakefør reservasjonshendelser
API-en Opphev reservasjon fungerer som tilbakeføringsoperasjonen for Reservasjon-hendelser. Det brukes til å tilbakeføre en reservasjonshendelse som er angitt av reservationId, eller til å redusere reserveringsantallet.
Tilbakefør én reservasjonshendelse
Når en reservasjon opprettes, blir en reservationId tatt med i svarteksten. Du må angi samme reservationId for å avbryte reservasjonen og ta med samme organizationId, productId og dimensions som brukes for reservasjons-API-oppkallet. Til slutt angir du en OffsetQty-verdi som representerer antall varer som skal frigjøres fra forrige reservasjon. En reservasjon kan enten tilbakeføres fullstendig eller delvis, avhengig av angitt OffsetQty. Hvis for eksempel 100 enheter med varer er reservert, kan du angi OffsetQty: 10 for å oppheve reservasjonen av 10 av den opprinnelige reserverte mengden.
Path:
/api/environment/{environmentId}/onhand/unreserve
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
id: string,
organizationId: string,
productId: string,
reservationId: string,
dimensions: {
[key:string]: string,
},
OffsetQty: number
}
Følgende kode viser et eksempel på tekstinnhold.
{
"id": "unreserve-0",
"organizationId": "SCM_IV",
"productId": "iv_contoso_product",
"reservationId": "RESERVATION_ID",
"dimensions": {
"siteid":"iv_contoso_site",
"locationid":"iv_contoso_location",
"ColorId": "red",
"SizeId": "small"
},
"OffsetQty": 1
}
Følgende kode viser et eksempel på en vellykket svartekst.
{
"reservationId": "RESERVATION_ID",
"totalInvalidOffsetQtyByReservId": 0,
"id": "ohoe~id-823-11744-883",
"processingStatus": "success",
"message": "",
"statusCode": 200
}
Bemerkning
Når OffsetQty er mindre enn eller lik reservasjonsmengden i svarteksten, blir processingStatus "success" og totalInvalidOffsetQtyByReservId0.
Hvis OffsetQty er større enn den reserverte mengden, blir processingStatus"partialSuccess" og totalInvalidOffsetQtyByReservId differansen mellom OffsetQty og den reserverte mengden.
Hvis reservasjonen for eksempel har et antall på 10 og OffsetQty har verdien 12, blir totalInvalidOffsetQtyByReservId2.
Tilbakefør flere reservasjonshendelser
Denne API-en er en masseversjon av API-en for enkelthendelser.
Path:
/api/environment/{environmentId}/onhand/unreserve/bulk
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
{
id: string,
organizationId: string,
productId: string,
reservationId: string,
dimensions: {
[key:string]: string,
},
OffsetQty: number
}
...
]
Opprydding i reservasjonsdata
API-en for opprydding i reservasjonsdata brukes til å rydde opp i historiske reservasjonsdata. Brødteksten skal være en liste over datakilder. Hvis listen er tom, vil alle datakilder bli ryddet opp.
Path:
/api/environment/{environmentId}/onhand/reserve/resyncjob
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
"iv",
"pos"
]
Hvis oppryddingsjobben er opprettet, returneres en jobb-ID i svaret, som kan brukes til å få fremdrift for jobbkjøring.
Hent fremdrift for jobbutførelse
Bruk get job execution progress-API-et for å få fremdriften til en jobb. Det kreves en jobb-ID for å identifisere jobben.
Path:
/api/environment/{environmentId}/getJobProgress
Method:
Get
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Query(Url Parameters):
jobId
Her er et eksempel på henting av en nettadresse.
/api/environment/{environmentId}/getJobProgress?jobId=SomeJob:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Spør om beholdning
Bruk API-en Spør om beholdning til å hente gjeldende lagerbeholdningsdata for produktene dine. Du kan bruke denne API-en hver gang du må vite beholdningen, for eksempel når du vil gå gjennom produktbeholdningsnivåene på webområdet for e-handel, eller når du vil kontrollere produkttilgjengeligheten i alle regioner eller i butikker og lagre i nærheten. API støtter for øyeblikket spørringer på opptil 5000 individuelle varer etter productID-verdi. Flere siteID- og locationID-verdier kan også angis i hver spørring. Når datapartisjonsregelen er angitt til Etter lokasjon, defineres maksimumsgrensen ved følgende ligning:
Antall(SiteID) × NumOf(LocationID) <= 10 000.
Spør ved å bruke posteringsmetoden
Spørring etter 'query by post'-API er tilgjengelig i to versjoner. Tabellen nedenfor beskriver forskjellene.
| API versjon 1.0 | API versjon 2.0 |
|---|---|
| Kan bare spørre én organisasjons-ID. | Kan spørre flere organisasjons-ID-er. |
| Kan spørre opptil 10 000 kombinasjoner av områder og lagre. | Kan spørre mer enn 10 000 kombinasjoner av organisasjons-ID-er, nettsteder og lagre. Kan returnere resultater på flere sider. |
Følgende underseksjoner viser hvordan du bruker hver API-versjon.
Forespørsel etter post-API versjon 1.0
Path:
/api/environment/{environmentId}/onhand/indexquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
productId: string[],
siteId: string[],
locationId: string[],
[dimensionKey:string]: string[],
},
groupByValues: string[],
returnNegative: boolean,
}
I hoveddelen av denne forespørselen er dimensionDataSource en valgfri parameter. Hvis den ikke er definert, behandles filters som basisdimensjoner.
Parameteren returnNegative styrer om resultatene inneholder negative oppføringer.
Spør på data som er lagret etter lokasjon
Denne delen gjelder når datapartisjonsregelen er angitt til Etter lokasjon.
-
organizationIdbør være en matrise som inneholder nøyaktig én verdi. -
productIdkan inneholde én eller flere verdier. Hvis det er en tom matrise, vil systemet returnere alle produktene for de spesifikke nettstedene og plasseringene. I dette tilfellet måsiteIdoglocationIdikke være tomme. -
siteIdoglocationIdbrukes for partisjonering. Du kan angi mer enn énsiteIdoglocationIdverdi i en forespørsel om lagerbeholdning. Hvis begge matriser er tomme, vil systemet returnere alle nettstedene og plasseringene for de angitte produktene. I dette tilfellet måproductIdikke være tom.
Vi anbefaler at du bruker groupByValues-parameteren på en måte som samsvarer med indekskonfigurasjonen. Finn ut mer i konfigurasjon av indekser på lager.
Spørre lagrede data etter produkt-ID
Denne delen gjelder når datapartisjonsregelen er angitt til Etter produkt-ID. I dette tilfellet kreves to filters-felt: organizationId, productId.
-
organizationIdbør være en matrise som inneholder nøyaktig én verdi. -
productIdbør være en matrise med minst én verdi.
I motsetning til ved lagring av data etter lokasjon vil lagerinformasjon for hver produkt-ID samles opp på tvers av alle områder og/eller lokasjoner hvis du ikke angir verdier for siteId og locationId.
Bemerkning
Hvis du har aktivert endringsplanen for lagerbeholdning og ATP-funksjoner (available-to-promise), kan spørringen også omfatte den boolske QueryATP-parameteren, som styrer om resultatet av spørringen omfatter ATP-informasjon. Hvis du vil ha mer informasjon og flere eksempler, kan du se Tidsplaner for lagerendringer i Lagersynlighet og leveringskapasitet.
Følgende eksempel viser eksempeltekstinnholdet. Det viser at du kan spørre i lagerbeholdningen fra flere lokasjoner (lagre).
{
"dimensionDataSource": "pos",
"filters": {
"organizationId": ["usmf"],
"productId": ["T-shirt"],
"siteId": ["1"],
"locationId": ["11","12","13"],
"colorId": ["red"]
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
Eksemplet nedenfor viser hvordan du spør på alle produkter på et bestemt område og sted.
{
"filters": {
"organizationId": ["usmf"],
"productId": [],
"siteId": ["1"],
"locationId": ["11"],
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
Forespørsel via post-API versjon 2.0
Path:
/api/environment/{environmentId}/onhand/indexquery?pageNumber={pageNumber}&pageSize={pageSize}
Method:
Post
Headers:
Api-Version="2.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
# Same as version 1.0
Forespørselsformatet for API versjon 2.0 ligner på versjon 1.0, men støtter også to valgfrie parametere: pageNumber og pageSize, som gjør det mulig for systemet å dele et enkelt stort resultat i flere mindre dokumenter. Resultatene sorteres etter lager (locationId), og parameterne brukes som følger for å dele resultatene inn i sider:
-
pageSizeetablerer antall lagre (locationIdverdier) som returneres på hver side. -
pageNumberetablerer sidetallet som returneres.
En forespørsel om dette formatet returnerer lagerbeholdningsdata som starter fra lagernummer ({pageNumber} − 1) × {pageSize} og inneholder data for de neste {pageSize} -lagrene.
API versjon 2.0 svarer med et dokument som bruker følgende struktur:
{
Value: { # Response same as Api-Version=1.0 }
nextLink: onhand/indexquery?pageNumber={pageNumber+1}&pageSize={pageSize}
}
Når forespørselen når det siste lageret (locationId), nextLink er verdien en tom streng.
Med API versjon 2.0 kan du også angi mer enn én organisasjons-ID i forespørselen. Hvis du vil gjøre dette, kan du inkludere en kommadelt liste over organisasjons-ID-er i filteret organizationId for forespørselsdokumentet. Eksempel: "organizationId": ["org1", "org2", "org3"].
Spør ved å bruke hentemetoden
Path:
/api/environment/{environmentId}/onhand
Method:
Get
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Query(Url Parameters):
groupBy
returnNegative
[Filters]
Her er et eksempel på henting av en nettadresse. Denne hentforespørselen er nøyaktig den samme som posteringseksemplet som ble angitt tidligere.
/api/environment/{environmentId}/onhand?organizationId=SCM_IV&productId=iv_contoso_product&siteId=iv_contoso_site&locationId=iv_contoso_location&colorId=red&groupBy=colorId,sizeId&returnNegative=true
Systemet støtter ikke spørringsbeholdning over flere organisasjons-ID-er med GET-metoden.
Nøyaktig spørringsforespørsel om beholdning
Nøyaktig spørringsforespørsel om beholdning ligner vanlige lagerbeholdningsspørringer, men de lar deg angi et tilordningshierarki mellom et område og en lokasjon. Du har for eksempel følgende to områder:
- Område 1, som er tilordnet til lokasjon A
- Område 2, som er tilordnet til lokasjon B
For en vanlig beholdningsspørring, hvis du angir "siteId": ["1","2"] og "locationId": ["A","B"], vil lagersynlighet automatisk spørre etter resultatet for følgende områder og lokasjoner:
- Område 1, plassering A
- Område 1, plassering B
- Område 2, plassering A
- Område 2, plassering B
Som du ser, gjenkjenner ikke den vanlige lagerbeholdning at lokasjon A bare finnes i område 1, og lokasjon B finnes bare i område 2. Derfor gjør det overflødige spørringer. For å legge til rette for denne hierarkiske tilordningen, kan du bruke en nøyaktig spørring på lager og angi lokasjonstilordningene i spørringsteksten. I dette tilfellet vil du utføre spørringer og motta resultater for område 1, sted A og område 2, lokasjon B.
Nøyaktig spørring om beholdning spør ved å bruke posteringsmetoden
API-en for nøyaktig spørring om beholdning etter postering er tilgjengelig i to versjoner. Tabellen nedenfor beskriver forskjellene.
| API versjon 1.0 | API versjon 2.0 |
|---|---|
| Kan bare spørre én organisasjons-ID. | Kan spørre flere organisasjons-ID-er. |
API versjon 1.0 for nøyaktig spørring om beholdning etter postering
Path:
/api/environment/{environmentId}/onhand/exactquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
productId: string[],
dimensions: string[],
values: string[][],
},
groupByValues: string[],
returnNegative: boolean,
}
I hoveddelen av denne forespørselen er dimensionDataSource en valgfri parameter. Hvis den ikke er definert, behandles dimensions i filters som basisdimensjoner. Det finnes fire obligatoriske felt for filters: organizationId, productId, dimensions og values.
-
organizationIdskal bare inneholde én verdi, men den er likevel en matrise. -
productIdkan inneholde én eller flere verdier. Hvis den er en tom matrise, vil alle produkter bli returnert. - I matrisen
dimensionsersiteIdoglocationIdobligatoriske hvis og bare hvis datapartisjonsregelen er satt til Etter lokasjon. I dette tilfellet kan de vises med andre elementer i hvilken som helst rekkefølge. -
valueskan inneholde én eller flere atskilte tupler med verdier som tilsvarerdimensions.
dimensions i filters vil automatisk bli lagt til i groupByValues.
Parameteren returnNegative styrer om resultatene inneholder negative oppføringer.
Følgende eksempel viser eksempeltekstinnholdet.
{
"dimensionDataSource": "pos",
"filters": {
"organizationId": ["SCM_IV"],
"productId": ["iv_contoso_product"],
"dimensions": ["siteId", "locationId", "colorId"],
"values" : [
["iv_contoso_site", "iv_contoso_location", "red"],
["iv_contoso_site", "iv_contoso_location", "blue"],
]
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
Eksemplet nedenfor viser hvordan du spør på alle produkter i flere områder og lokasjoner.
{
"filters": {
"organizationId": ["SCM_IV"],
"productId": [],
"dimensions": ["siteId", "locationId"],
"values" : [
["iv_contoso_site_1", "iv_contoso_location_1"],
["iv_contoso_site_2", "iv_contoso_location_2"],
]
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
Umiddelbar nøyaktig spørring for post-API versjon 2.0
Path:
/api/environment/{environmentId}/onhand/exactquery
Method:
Post
Headers:
Api-Version="2.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
dimensionDataSource: string, # Optional
filters: {
productId: string[],
keys: string[],
values: string[][],
},
groupByValues: string[],
returnNegative: boolean,
}
API versjon 2.0 er forskjellig fra versjon 1.0 på følgende måter:
- Inndelingen
filtershar nå etkeysfelt i stedet for etdimensionsfelt. Feltetkeysfungerer som feltetdimensionsi versjon 1.0, men kan nå også inkludereorganizationId. Du kan angi nøklene i hvilken som helst rekkefølge. - Inndelingen
filtersstøtter ikke lenger feltetorganizationId. I stedet kan du inkludereorganizationIdblant dimensjonene ikeysfeltet (for eksempelkeys: ["organizationId", "siteId", "locationId"]) og definere organisasjons-ID-verdier på samsvarende posisjon ivaluesfeltet (for eksempelvalues: ["SCM_IV", "iv_contoso_site_1", "iv_contoso_location_1"]).
Andre felt er identiske med API versjon 1.0.
Spørring med produktsøk
Følgende API-er for beholdningsspørring er forbedret for å støtte produktsøk:
Bemerkning
Når du posterer en Lagersynlighet-spørring som bruker produktsøk, bruker du forespørselsparameteren productSearch (som inneholder et ProductAttributeQuery-objekt) til å finne eller filtrere etter produkt-ID. De nyere API-ene støtter ikke lenger den eldre forespørselsparameteren productid i forespørselsteksten.
Forutsetninger
Før du kan begynne å bruke API-ene for produktsøk, må systemet oppfylle følgende krav:
- Du må kjøre Dynamics 365 Supply Chain Management 10.0.36 eller nyere.
- Lagersynlighet versjon 1.2.2.54 eller nyere må være installert og definert som beskrevet i Installere og definere Lagersynlighet.
- Søketjenesten Lagersynlighet må være installert og definert som beskrevet i Definer produktsøk for Lagersynlighet.
Kontrakt for produktsøk
Kontrakten for produktsøk definerer reglene for kommunikasjon med API-ene for produktsøk. Den gir en standardisert måte å beskrive funksjonene og virkemåten til produktsøkefunksjonene på. Brukere kan derfor lettere forstå, samhandle med og bygge programmer som bruker API-ene for lagersynlighet.
Følgende eksempel viser en eksempelkontrakt.
{
"productFilter": {
"logicalOperator": "And",
"conditions": [
{
"conditionOperator": "Contains",
"productName": [
"Deluxe"
],
},
],
"subFilters": [
{
"conditions": [
{
"conditionOperator": "IsExactly",
"productType": [
"Item"
]
}
]
}
]
},
"attributeFilter": {
"logicalOperator": "Or",
"conditions": [
{
"attributeName": "Weight Limit",
"attributeTypeName":"PoundDomain",
"attributeArea": " ProductAttribute",
"attributeValues": [
"370"
],
"conditionOperator": "GreaterEqual"
}
],
"subFilters": [
{
"conditions": [
{
"attributeName": "Weight Limit",
"attributeTypeName":"PoundDomain",
"attributeArea": " ProductAttribute",
"attributeValues": [
"330"
],
"conditionOperator": "LessEqual"
}
]
}
]
},
}
Følgende tabell beskriver feltene som brukes i kontrakten.
| Felt-ID | Description |
|---|---|
logicalOperator |
De mulige verdiene er And og Or. Bruk dette feltet til å koble sammen flere betingelser eller betingelser og delfiltre. Merk at subFilters faktisk er et productFilter- eller attributeFilter-objekt. Du kan derfor ha subFilters i subFilters. |
conditionOperator |
De mulige verdiene er IsExactly, IsNot, Contains, DoesNotContain, BeginsWith, IsOneOf, GreaterEqual, LessEqual og Between. |
ProductFilter |
Bruk dette feltet til å filtrere produkter etter produktrelatert informasjon. Du kan for eksempel endre productName i kontrakten til Company, itemNumber, productSearchName, productType, productName, productDescription, inventoryUnitSymbol, salesUnitSymbol eller purchaseUnitSymbol for å tilpasse dette etter forretningsbehovene. |
AttributeFilter |
Bruk dette feltet til å filtrere produkter etter attributtrelatert informasjon. |
attributeArea |
De mulige verdiene er ProductAttribute, DimensionAttribute og BatchAttribute. |
Spørring med produktsøk
Path:
/api/environment/{environmentId}/onhand/productsearch/indexquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
productSearch: {ProductAttributeQuery contract object inherited from Product Search}
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
siteId: string[],
locationId: string[],
[dimensionKey:string]: string[],
},
groupByValues: string[],
returnNegative: boolean,
}
Følgende eksempel viser eksempeltekstinnholdet.
{
"productSearch": {
"productFilter": {
"conditions": [
{
"conditionOperator": "contains",
"productName": [
"speaker cable"
],
},
],
},
},
"returnNegative": true,
"filters":
{
"organizationId": ["usmf"],
"siteId": ["1"],
"locationId": ["13"],
},
"groupByValues": ["colorid"],
}
Følgende eksempel viser et vellykket svar.
[
{
"productId": "M0030",
"dimensions": {
"ColorId": "White",
"siteid": "1",
"locationid": "13"
},
"quantities": {
"fno": {
"arrived": 0,
"availordered": 20,
"onorder": 5,
"ordered": 20,
"physicalinvent": 0,
"reservordered": 0,
"reservphysical": 0,
"orderedsum": 20,
"softreserved": 0
},
"iv": {
"ordered": 0,
"softreserved": 0,
"softreservphysical": 0,
"softreservordered": 0,
"total ordered": 20,
"total on order": 5,
"availabletoreserve": 20,
"totalavailable": 20,
"totalordered": 20,
"totalonorder": 5
},
"pos": {
"inbound": 0,
"outbound": 0
},
"@iv": {
"@allocated": 0
}
}
},
{
"productId": "M0030",
"dimensions": {
"ColorId": "Black",
"siteid": "1",
"locationid": "13"
},
"quantities": {
"fno": {
"arrived": 0,
"availordered": 3,
"ordered": 3,
"physicalinvent": 0,
"reservordered": 0,
"reservphysical": 0,
"orderedsum": 3,
"softreserved": 0
},
"iv": {
"ordered": 0,
"softreserved": 0,
"softreservphysical": 0,
"softreservordered": 0,
"total ordered": 3,
"availabletoreserve": 3,
"totalavailable": 3,
"totalordered": 3
},
"pos": {
"inbound": 0,
"outbound": 0
},
"@iv": {
"@allocated": 0
}
}
}
]
Nøyaktig spørring med produktsøk
Path:
/api/environment/{environmentId}/onhand/productsearch/exactquery
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
{
productSearch: {ProductAttributeQuery contract object inherited from Product Search}
dimensionDataSource: string, # Optional
filters: {
organizationId: string[],
dimensions: string[],
values: string[][],
},
groupByValues: string[],
returnNegative: boolean,
}
Følgende eksempel viser eksempeltekstinnholdet.
{
"productSearch": {
"productFilter": {
"conditions": [
{
"conditionOperator": "contains",
"productName": [
"speaker cable"
],
},
],
},
},
"filters": {
"organizationId": ["usmf"],
"dimensions": ["siteId", "locationId", "colorid"],
"values" : [
["1", "13", "Black"],
]
},
"groupByValues": [],
"returnNegative": true
}
Følgende eksempel viser et vellykket svar.
[
{
"productId": "M0030",
"dimensions": {
"ColorId": "Black",
"siteid": "1",
"locationid": "13"
},
"quantities": {
"fno": {
"arrived": 0,
"availordered": 3,
"ordered": 3,
"physicalinvent": 0,
"reservordered": 0,
"reservphysical": 0,
"orderedsum": 3,
"softreserved": 0
},
"iv": {
"ordered": 0,
"softreserved": 0,
"softreservphysical": 0,
"softreservordered": 0,
"total ordered": 3,
"availabletoreserve": 3,
"totalavailable": 3,
"totalordered": 3
},
"pos": {
"inbound": 0,
"outbound": 0
},
"@iv": {
"@allocated": 0
}
}
}
]
Tilgjengelig for ordre
Du kan konfigurere Lagersynlighet slik at du kan planlegge fremtidige endringer i lagerbeholdningen og beregne ATP-antall. ATP er antallet av en vare som er tilgjengelig og kan loves til en kunde i løpet av den neste perioden. Bruk av ATP-beregningen kan øke kapasiteten for innfrielse av bestillinger betydelig. Hvis du vil ha informasjon om hvordan du aktiverer denne funksjonen, og hvordan du samhandler med Lagersynlighet via API-en etter at funksjonen er aktivert, kan du se Tidsplaner for lagerendringer i Lagersynlighet og leveringskapasitet.
Tilordning
Tildelingsrelaterte API-er finnes i lagersynlighetstilordning.