Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Huomautus
Yhteisön eturyhmät ovat nyt siirtyneet Yammerista Microsoft Viva Engageen. Liity Viva Engage -yhteisöön ja osallistu uusimpiin keskusteluihin täyttämällä Pyydä käyttöoikeutta rahoitukseen ja toimintoihin Viva Engage -yhteisö -lomake ja valitse yhteisö, johon haluat liittyä.
Tärkeää
Vuoden 2026 helmikuusta alkaen uudet asiakkaat eivät voi luoda projekteja Microsoft Dynamics Lifecycle Services for Microsoft Dynamics 365 Finance, Microsoft Dynamics 365 Human Resources, Microsoft Dynamics 365 Supply Chain Management ja Microsoft Dynamics 365 Project Operations. Uusien asiakkaiden tulisi käyttää sen sijaan Power Platform -hallintakeskusta . Lisätietoja on artikkelissa Elinkaaripalvelut-projektin luonnin jäädyttäminen.
Tässä artikkelissa käsitellään varaston näkyvyyden julkisia ohjelmointirajapintoja.
Varaston näkyvyyden apuohjelman julkinen REST API sisältää useita nimenomaisia integroinnin päätepisteitä. Se tukee neljää pääasiallista vuorovaikutustyyppiä:
- Käytettävissä olevan varastomäärän muutosten kirjaaminen apuohjelmaan ulkoisesta järjestelmästä
- Käytettävissä olevien varastosaldomäärien määrittäminen tai ohittaminen ulkoisesta järjestelmästä apuohjelmassa
- Varaustapahtumien kirjaaminen apuohjelmaan ulkoisesta järjestelmästä
- Nykyisten käytettävissä olevien määrien kysely ulkoisesta järjestelmästä
Seuraavassa taulukossa on tällä hetkellä käytettävissä olevat ohjelmointirajapinnat:
| Polku | Tapa | Kuvaus |
|---|---|---|
/api/environment/{environmentId}/onhand |
Kirjaa | Yhden käytettävissä olevan varastosaldon muutostapahtuman luominen |
/api/environment/{environmentId}/onhand/bulk |
Kirjaa | Useiden muutostapahtumien luominen |
/api/environment/{environmentId}/setonhand/{inventorySystem}/bulk |
Kirjaa | Käytettävissä olevien varastosaldomäärien määrittäminen tai ohittaminen |
/api/environment/{environmentId}/onhand/reserve |
Kirjaa | Yhden alustavan varauksen tapahtuman luominen |
/api/environment/{environmentId}/onhand/reserve/bulk |
Kirjaa | Useiden alustavien varausten tapahtumien luominen |
/api/environment/{environmentId}/onhand/unreserve |
Kirjaa | Yhden alustavan varauksen tapahtuman peruuttaminen |
/api/environment/{environmentId}/onhand/unreserve/bulk |
Kirjaa | Useiden alustavien varausten tapahtumien peruuttaminen |
/api/environment/{environmentId}/onhand/reserve/resyncjob |
Kirjaa | Varaustietojen puhdistaminen |
/api/environment/{environmentId}/getJobProgress |
Hae | Työn suorittamisen edistymisen hakeminen |
/api/environment/{environmentId}/onhand/changeschedule |
Kirjaa | Yhden aikataulutetun käytettävissä olevan saldon muutoksen luominen |
/api/environment/{environmentId}/onhand/changeschedule/bulk |
Kirjaa | Useiden käytettävissä olevien varastosaldojen muutosten ja päivämäärien luominen |
/api/environment/{environmentId}/onhand/indexquery |
Kirjaa | Post-menetelmää käyttävä kysely (suositeltu) |
/api/environment/{environmentId}/onhand |
Hae | Get-menetelmää käyttävä kysely |
/api/environment/{environmentId}/onhand/exactquery |
Kirjaa | Post-menetelmää käyttävä tarkka kysely |
/api/environment/{environmentId}/allocation/allocate |
Kirjaa | Yhden kohdistustapahtuman luominen |
/api/environment/{environmentId}/allocation/unallocate |
Kirjaa | Yhden kohdistuksenpoistotapahtuman luominen |
/api/environment/{environmentId}/allocation/reallocate |
Kirjaa | Yhden uudelleenkohdistustapahtuman luominen |
/api/environment/{environmentId}/allocation/consume |
Kirjaa | Yhden kulutustapahtuman luominen |
/api/environment/{environmentId}/allocation/query |
Kirjaa | Kyselyn kohdistustulos |
/api/environment/{environmentId}/onhand/productsearch/indexquery |
Kirjaa | Kirjaa indeksikysely tuotehaun kanssa |
/api/environment/{environmentId}/onhand/productsearch/exactquery |
Kirjaa | Kirjaa tarkka kysely tuotehaun kanssa |
/api/environment/{environmentId}/transaction/adjustment/bulk |
Kirjaa | Synkronoi ulkoiset varastomuutokset varaston näkyvyyden kautta |
Huomautus
Polun {environmentId} osa on Microsoft Dynamics 365 Supply Chain Managementin ympäristötunnus. Tämä tunnus on Microsoft Dynamics Elinkaaripalveluiden toimitusketjun hallinnassa eikä toimitusketjun hallintaympäristöön linkitetyn Power Platform -ympäristön tunnus.
Joukkotoimintosovellusliittymä voi palauttaa kullekin pyynnölle enintään 512 tietuetta.
Todennus
Varaston näkyvyyden julkisen ohjelmointirajapinnan kutsumiseen käytetään ympäristön suojaustunnusta. Tämän vuoksi sinun on luotava Microsoft Entra -tunnus käyttämällä Microsoft Entra -sovellustasi. Sen jälkeen sinun on käytettävä Microsoft Entra -tunnusta saadaksesi käyttöoikeustietueen suojauspalvelusta.
Saat suojauspalvelutunnuksen seuraavasti:
Kirjaudu sisään Azure-portaaliin ja käytä sitä etsiäksesi
clientId- jaclientSecret-arvot Dynamics 365 Supply Chain Management -sovelluksellesi.Nouda Microsoft Entra -tunnus (
aadToken) lähettämällä HTTP-pyyntö, jolla on seuraavat ominaisuudet:URL:
https://login.microsoftonline.com/${aadTenantId}/oauth2/v2.0/tokenMenetelmä:
GETTekstisisältö (lomaketiedot):
Avain Arvo client_id ${aadAppId} client_secret ${aadAppSecret} grant_type client_credentials laajuus 0cdb527f-a8d1-4bf8-9436-b352c68682b2/.default
Sinun pitäisi saada Microsoft Entra -tunnus (
aadToken) vastauksena. Tarran pitäisi on seuraavan esimerkin kaltainen:{ "token_type": "Bearer", "expires_in": "3599", "ext_expires_in": "3599", "access_token": "eyJ0eX...8WQ" }Muodosta seuraavaa esimerkkiä muistuttava JavaScript Object Notation (JSON) -pyyntö.
{ "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" }Huomaa seuraavat seikat:
- Arvon
client_assertionon oltava Microsoft Entra -tunnus (aadToken), jonka sait edellisessä vaiheessa. - Arvon
contexton oltava Supply Chain Management -ympäristötunnus, jossa haluat ottaa apuohjelman käyttöön. - Kaikki muut arvot määritetään samoiksi kuin esimerkissä.
- Arvon
Nouda käyttöoikeustietue (
access_token) lähettämällä HTTP-pyyntö, jossa on seuraavat ominaisuudet:URL:
https://securityservice.operations365.dynamics.com/tokenMenetelmä:
POSTHTTP-otsikko:
Avain Arvo Api-Version 1.0 Sisältötyyppi sovellus/json Tekstisisältö: sisällytetään edellisessä vaiheessa luotu JSON-pyyntö.
Vastauksena pitäisi olla käyttöoikeustietue (
access_token). Tätä tunnusta on käytettävä haltijatunnuksena, jolla varaston näkyvyyden ohjelmointirajapintaa kutsutaan. Alla on esimerkki.{ "access_token": "${Returned_Token}", "token_type": "bearer", "expires_in": 3600 }Huomautus
Jos saat vastauksen, jonka tilakoodi on 307, lähetä tunnuspyyntö uudelleen uuteen URL-osoitteeseen otsikon arvon
Locationavulla. Useimmat HTTP-kirjastot käsittelevät uudelleenohjauksia automaattisesti.
Käytettävissä olevan varastosaldon muutostapahtumien luominen
Käytettävissä olevien varastosaldon muutostapahtumien luontiin on käytettävissä kaksi ohjelmointirajapintaa:
- Yhden tietueen luonti:
/api/environment/{environmentId}/onhand - Useiden tietueiden luonti:
/api/environment/{environmentId}/onhand/bulk
Seuraavassa taulukossa on yhteenveto JSON-tekstiosan kunkin kentän merkityksestä.
| Kentän tunnus | Kuvaus |
|---|---|
id |
Tietyn muutostapahtuman yksilöivä tunnus. Jos uudelleenlähettäminen tapahtuu palvelun virheen vuoksi, tämän tunnuksen avulla varmistetaan, että samaa tapahtumaa ei lasketa järjestelmässä kahdesti. |
organizationId |
Tapahtumaan linkitetyn organisaation tunniste. Tämä arvo yhdistetään Supply Chain Managementin organisaatioon tai tietoalueen tunnukseen. |
productId |
Tuotteen tunniste. |
quantities |
Määrä, jolla käytettävissä olevaa varastosaldoa on muutettava. Jos hyllylle lisättiin esimerkiksi 10 uutta kirjaa, tämä arvo on quantities:{ shelf:{ received: 10 }}. Jos hyllystä poistettiin tai myytiin kolme kirjaa, tämä arvo on quantities:{ shelf:{ sold: 3 }}. |
dimensionDataSource |
Muutostapahtuman kirjauksessa ja kyselyssä käytettävien dimensioiden tietolähde. Jos tietolähde määritetään, määritetyn tietolähteen mukautettuja dimensioita voidaan käyttää. Varaston näkyvyyssovellus voi käyttää dimensiomääritystä mukautettujen dimensioiden yhdistämiseen yleisiin oletusdimensioihin. Jos dimensionDataSource-arvoa ei ole määritetty, kyselyissä voi käyttää vain yleisiä perusdimensioita. |
dimensions |
Dynaaminen avain- ja arvopari. Arvot yhdistetään joihinkin Supply Chain Managementin dimensioihin. Lisäksi voidaan kuitenkin lisätä myös mukautettuja dimensioita (kuten Lähde) ilmaisemaan, tuleeko tapahtuma Supply Chain Managementista vai ulkoisesta järjestelmästä. |
Huomautus
Jos tietojen osiosäännöksi on määritetty Tuotetunnuksen mukaan, siteId ja locationId ovat valinnaisia dimensioita. Muussa tapauksessa ne ovat vaadittuja mittoja. Tämä sääntö koskee myös kohdistusta, alustavaa varausta ja muutosaikataulun ohjelmointirajapintaa.
Seuraavissa aliosissa on esimerkkejä näiden ohjelmointirajapintojen käytöstä.
Yhden käytettävissä olevan varastosaldon muutostapahtuman luominen
Tämä ohjelmointirajapinta luo yhden käytettävissä olevan varastosaldon muutostapahtuman.
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,
},
},
}
Seuraavassa esimerkissä on näytteen tekstisisältö. Tässä esimerkissä yrityksellä on myyntipistejärjestelmä, joka käsittelee myymälän tapahtumia ja näin ollen myös varastomuutoksia. Asiakas on palauttanut punaisen T-paidan myymälään. Muutoksen vuoksi kirjataan muutostapahtuma T-paita-tuotteelle. Tämä tapahtuma lisää T-paita-tuotteen määrää yhdellä.
{
"id": "Test201",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"siteId": "1",
"locationId": "11",
"posMachineId": "0001",
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 1
}
}
}
Seuraavassa esimerkissä on näytteen tekstisisältö ilman dimensionDataSource-arvoa. Tässä tapauksessa dimensions-parametri toimii perusdimensioina. Jos dimensionDataSource on määritetty, dimensions voi toimia joko tietolähdedimensioina tai perusdimensioina.
{
"id": "Test202",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensions": {
"siteId": "1",
"locationId": "11",
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 1
}
}
}
Useiden muutostapahtumien luominen
Tämä ohjelmointirajapinta voi luoda muutostapahtumia samalla tavalla kuin yhden tapahtuman ohjelmointirajapinta. Ainoa ero on, että tällä ohjelmointirajapinnalla voidaan luoda useita tietueita samanaikaisesti. Näin ollen arvot Path ja Body ovat erilaiset. Tässä ohjelmointirajapinnassa Body tuottaa tietuematriisin. Tietueiden enimmäismäärä on 512. Näin ollen varastosaldon muutoksen joukkotoiminto-ohjelmointirajapinta voi tukea jopa 512:n muutostapahtuman tekemistä kerralla.
Esimerkiksi vähittäismyymälän myyntipisteen kone käsitteli seuraavat kaksi tapahtumaa:
- Yksi palautustilaus yhdelle punaiselle T-paidalle
- Yksi myyntitapahtuma kolmelle mustalle T-paidalle
Tässä tapauksessa molemmat varastopäivitykset voidaan sisällyttää ohjelmointirajapintakutsuun.
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,
},
},
},
...
]
Seuraavassa esimerkissä on näytteen tekstisisältö.
[
{
"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 }
}
}
]
Käytettävissä olevien varastosaldomäärien määrittäminen tai ohittaminen
Set on-hand-ohjelmointirajapinta ohittaa määritetyn tuotteen nykyiset tiedot. Tätä toimintoa käytetään yleensä varaston inventointipäivitysten yhteydessä. Esimerkiksi päivittäisen varastoinventoinnin yhteydessä myymälässä saatetaan havaita, että punaisten T-paitojen todellinen varastosaldo on 100. Tämän vuoksi myyntipisteen saapuva määrä on päivitettävä arvoksi 100 siitä huolimatta, mikä edellinen määrä oli. Voit ohittaa aiemmin luodun arvon käyttämällä tätä ohjelmointirajapintaa.
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,
},
...
]
Seuraavassa esimerkissä on näytteen tekstisisältö. Tämän ohjelmointirajapinnan toiminta eroaa aiemmin tässä artikkelissa kohdassa Käytettävissä olevan varastosaldon muutostapahtumien luominen kuvattujen ohjelmointirajapintojen toiminnasta. Tässä näytteessä T-paita-tuotteen määräksi määritetään 1.
[
{
"id": "Test204",
"organizationId": "usmf",
"productId": "T-shirt",
"dimensionDataSource": "pos",
"dimensions": {
"SiteId": "1",
"LocationId": "11",
"posMachineId": "0001"
"colorId": "red"
},
"quantities": {
"pos": {
"inbound": 100
}
}
}
]
Varaustapahtumien luominen
Reserve-ohjelmointirajapinnan käyttäminen edellyttää varausominaisuuden ottamista käyttöön ja varausmääritysten tekemistä. Lisätietoja (myös tietovuosta ja esimerkkiskenaariosta) on kohdassa Varaston näkyvyyden varaukset.
Yhden varaustapahtuman luominen
Varauksia voidaan tehdä erilaisten tietolähdeasetusten perusteella. Voit määrittää tämän varaustyypin määrittämällä ensin tietolähteen dimensionDataSource-parametrissa. Määritä sitten dimensions-parametrissa dimensiot kohdetietolähteen dimensioasetusten mukaisesti.
Kun kutsut varausten ohjelmointirajapintaa, voit ohjata varausten vahvistamista määrittämällä ifCheckAvailForReserv-totuusarvoparametrin pyynnön tekstiosassa.
True-arvo tarkoittaa, että vahvistus vaaditaan, ja False-arvo, että vahvistusta ei vaadita. Oletusarvona on True.
Jos haluat peruuttaa varauksen tai poistaa tiettyjen varastomäärien varauksen, määritä määräsi negatiivinen arvo ja ohita vahvistus määrittämällä ifCheckAvailForReserv-parametrin arvoksi False. Lisäksi on olemassa määritetty unreserve-ohjelmointirajapinta, joka tekee samat toiminnot. Erona on ainoastaan se, miten näitä kahta ohjelmointirajapintaa kutsutaan. On helpompi peruuttaa tietty varaustapahtuma käyttämällä tunnusta reservationId kuin unreserve-ohjelmointirajapintaa. Lisätietoja on osiossa Yhden varaustapahtuman vapautus.
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,
}
Seuraavassa esimerkissä on näytteen tekstisisältö.
{
"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"
}
}
Seuraavassa esimerkissä näytetään onnistunut vastaus.
{
"reservationId": "RESERVATION_ID",
"id": "ohre~id-822-232959-524",
"processingStatus": "success",
"message": "",
"statusCode": 200
}
Useiden varaustapahtumien luominen
Tämä ohjelmointirajapinta on yhden tapahtuman ohjelmointirajapinnan joukkoversio.
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,
},
...
]
Varaustapahtumien peruuttaminen
Unreserve-ohjelmointirajapinta toimii varaustapahtumien peruutustoimintona. Sen avulla voi peruuttaa varaustapahtuman, jonka reservationId on määrittänyt, tai vähentää varausmäärää.
Yhden varaustapahtuman peruuttaminen
Kun varaus luodaan, reservationId sisällytetään vastauksen tekstiin. Anna sama reservationId, jos haluat peruuttaa varauksen, ja sisällytä samat varauksen ohjelmointirajapintakutsussa käytetyt tunnukset organizationId, productId ja dimensions. Määritä lopuksi arvo OffsetQty, joka vastaa edellisestä varauksesta vapautettujen nimikkeiden määrää. Varaus voidaan varata kokonaan tai osittain määritetyn arvon OffsetQty mukaisesti. Jos esimerkiksi varattiin 100 yksikköä, voit määrittää arvoksi OffsetQty: 10, jolloin alkuperäisestä varausmäärästä poistetaan 10 varausta.
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
}
Seuraavassa koodissa on esimerkki tekstisisällöstä.
{
"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
}
Seuraavassa koodissa näytetään onnistuneen vastaustekstin esimerkki.
{
"reservationId": "RESERVATION_ID",
"totalInvalidOffsetQtyByReservId": 0,
"id": "ohoe~id-823-11744-883",
"processingStatus": "success",
"message": "",
"statusCode": 200
}
Huomautus
Jos vastaustekstissä OffsetQty on pienempi tai yhtä suuri kuin varausmäärä, processingStatus on success ja totalInvalidOffsetQtyByReservId on 0.
Jos OffsetQty on suurempi kuin varattu summa, processingStatus on partialSuccess ja totalInvalidOffsetQtyByReservId on arvon OffsetQty ja varatun summan välinen ero.
Jos varauksen määrä on esimerkiksi 10 ja kohdassa OffsetQty on arvo 12, totalInvalidOffsetQtyByReservId on 2.
Useiden varaustapahtumien peruuttaminen
Tämä ohjelmointirajapinta on yhden tapahtuman ohjelmointirajapinnan joukkoversio.
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
}
...
]
Varaustietojen puhdistaminen
Varaustietojen puhdistamisen ohjelmointirajapintaa käytetään historiallisten varaustietojen puhdistamisessa. Tekstiosan tulisi olla luettelo tietolähteistä. Jos luettelo on tyhjä, kaikki tietolähteet puhdistetaan.
Path:
/api/environment/{environmentId}/onhand/reserve/resyncjob
Method:
Post
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Body:
[
"iv",
"pos"
]
Jos puhdistustyö on luotu onnistuneesti, vastauksessa palautetaan työtunnus, jonka avulla voidaan saada työn suorittamisen edistyminen.
Työn suorittamisen edistymisen hakeminen
Saat työn suorituksen edistymisen saamisen käyttämällä työn suorittamisen edistymisen ohjelmointirajapintaa . Työn tunnistamiseen vaaditaan työtunnus.
Path:
/api/environment/{environmentId}/getJobProgress
Method:
Get
Headers:
Api-Version="1.0"
Authorization="Bearer $access_token"
ContentType:
application/json
Query(Url Parameters):
jobId
Alla on get URL -esimerkki.
/api/environment/{environmentId}/getJobProgress?jobId=SomeJob:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Käytettävissä olevan varastosaldon kysely
Query on-hand-ohjelmointirajapinnalla voit noutaa tuotteiden tämän hetkiset käytettävissä olevat varastosaldotiedot. Voit käyttää tätä ohjelmointirajapintaa aina, kun haluat tietää varaston määrän. Näin saattaa tapahtua esimerkiksi silloin, jos haluat tarkistaa tuotteen varastotasot sähköisen kaupankäynnin sivustossa tai tuotteen saatavuuden eri alueilla tai läheisissä myymälöissä ja varastoissa. Sovellusrajapinta tukee tällä hetkellä kyselyä, jossa on enintään 5000 yksittäistä nimikettä productID-arvon mukaan. Jokaisessa kyselyssä voi määrittää myös useita siteID- ja locationID-arvoja. Kun datan osiosäännöksi on määritetty sijainnin mukaan, enimmäisraja määritetään seuraavassa laskukaavoissa:
NumOf(SiteID) × NumOf(LocationID) <= 10 000.
Post-menetelmää käyttävä kysely
Kyselyn julkaisun mukaan -ohjelmointirajapinta on käytettävissä kahdessa versiossa. Seuraavassa taulukossa esitellään erot.
| Ohjelmointirajapinnan versio 1.0 | Ohjelmointirajapinnan versio 2.0 |
|---|---|
| Kyselyjä voi tehdä vain yksi organisaation tunnus. | Voi tehdä kyselyn useille organisaation tunnuksille. |
| Voi suorittaa enintään 10 000 sivusto- ja varastoyhdistelmää. | Kyselyitä voi tehdä yli 10 000 organisaation tunnuksista, sivustoista ja varastoista. Voi palauttaa tuloksia useilla sivuilla. |
Seuraavissa alakohdissa esitellään, miten kutakin ohjelmointirajapintaversiota käytetään.
Kysely julkaisun mukaan -ohjelmointirajapinnan versio 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,
}
Tämän pyynnön tekstiosassa dimensionDataSource on valinnainen parametri. Jos sitä ei ole määritetty, sitä filters-parametria käytetään perusdimensioina.
Parametri returnNegative määrittää, sisältävätkö tulokset negatiivisia merkintöjä.
Sijainnin mukaan tallennettujen kyselytietojen kysely
Tämä osa on käytössä, kun tietojen osiosäännöksi määritetään Sijainnin mukaan.
-
organizationId-arvon tulee olla taulukko, joka sisältää tasan yhden arvon. -
productIdvoi sisältää yhden arvon tai useita arvoja. Jos se on tyhjä matriisi, järjestelmä palauttaa kaikki tuotteet tietyille toimipaikoille ja sijainneille. Tässä tapauksessasiteIdjalocationIdeivät voi olla tyhjiä. -
siteIdjalocationIdovat käytössä osioinnissa.siteId-pyynnössä voi määrittää useitalocationId- ja -arvoja. Jos molemmat matriisit ovat tyhjiä, järjestelmä palauttaa kaikki toimipaikat ja sijainnit tietyille tuotteille. Tässä tapauksessaproductIdei voi olla tyhjä.
groupByValues-parametria kannattaa käyttää tavalla, joka on yhdenmukainen indeksimäärityksen kanssa. Lisätietoja on artikkelissa Käytettävissä oleva indeksimääritys.
Kyselytiedot tallennetaan tuotetunnusten mukaan
Tämä osa on käytössä, kun tietojen osiosäännöksi määritetään Tuotetunnuksen mukaan. Tässä tapauksessa tarvitaan kaksi filters-kenttää: organizationId, productId.
-
organizationId-arvon tulee olla taulukko, joka sisältää tasan yhden arvon. -
productId-arvon tulee olla taulukko, joka sisältää vähintään yhden arvon.
Toisin kuin tallennettaessa tietoja sijainnin mukaan, jos et määritä arvoja siteId- ja locationId-arvoille, kunkin tuotetunnuksen varastotiedot kootaan kaikista sivustoista ja/tai sijainneista.
Huomautus
Jos olet ottanut käyttöön käytössä olevan muutoksen aikataulun ja ATP-ominaisuudet, kyselysi voi sisältää myös QueryATP Boolean-parametrin, joka määrittää, sisältävätkö kyselyn tulokset ATP-tietoja. Lisätietoja ja esimerkkejä on kohdassa Käytettävissä olevan varaston näkyvyyden muutosaikataulut ja luvattavissa olevat aikataulut.
Seuraavassa esimerkissä on näytteen tekstisisältö. Tämä osoittaa, että voit tehdä kyselyn varastosaldosta useissa sijainneissa (varastoissa).
{
"dimensionDataSource": "pos",
"filters": {
"organizationId": ["usmf"],
"productId": ["T-shirt"],
"siteId": ["1"],
"locationId": ["11","12","13"],
"colorId": ["red"]
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
Seuraavassa esimerkissä esitetään, miten kaikkia tuotteita kysellään tietyllä sivustolla ja tietyssä sijainnissa.
{
"filters": {
"organizationId": ["usmf"],
"productId": [],
"siteId": ["1"],
"locationId": ["11"],
},
"groupByValues": ["colorId", "sizeId"],
"returnNegative": true
}
Post-menetelmää käyttävän kyselyn ohjelmointirajapinnan versio 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
Ohjelmointirajapintaversion 2.0 pyyntömuoto on samanlainen kuin versiossa 1.0, mutta se tukee myös kahta valinnaista parametria: pageNumber ja pageSize, joiden avulla järjestelmä voi jakaa yksittäisen suuren tuloksen useisiin pienempiin asiakirjoihin. Tulokset lajitellaan varaston mukaan (locationId), ja parametreja käytetään seuraavasti tulosten jakamiseksi sivuihin:
-
pageSizemäärittää kullekin sivulle palautettavien varastojen (locationIdarvojen) määrän. -
pageNumbermäärittää palautetut sivunumerot.
Tämän muotoinen pyyntö palauttaa käytettävissä olevat varastotiedot alkaen varaston numerosta ({pageNumber} − 1) × {pageSize} ja sisältää tietoja seuraavista {pageSize} varastoista.
Ohjelmointirajapinnan versio 2.0 vastaa asiakirjalla, joka käyttää seuraavaa rakennetta:
{
Value: { # Response same as Api-Version=1.0 }
nextLink: onhand/indexquery?pageNumber={pageNumber+1}&pageSize={pageSize}
}
Kun pyyntö saavuttaa viimeisen varaston locationId (nextLink), arvo on tyhjä merkkijono.
Ohjelmointirajapinnan version 2.0 avulla voit myös määrittää pyynnössä useamman kuin yhden organisaatiotunnuksen. Voit tehdä tämän sisällyttamalla pyyntöasiakirjan suodattimeen pilkuin eroteltu luettelon organisaation tunnuksista organizationId . Esimerkiksi, "organizationId": ["org1", "org2", "org3"].
Get-menetelmää käyttävä kysely
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]
Alla on get URL -esimerkki. Tämä get-pyyntö täsmälleen sama kuin aiemmin annettu post-näyte.
/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
Järjestelmä ei tue varastokyselyjä useille organisaation tunnuksille GET-menetelmällä.
Varastosaldon tarkka kysely
Varastosaldon tarkka kysely muistuttaa tavallisia varastosaldokyselyjä, mutta niissä voi määrittää yhdistämismäärityksen hierarkian toimipaikan ja sijainnin välille. Esimerkissä käsitellään seuraavia kahta toimipaikkaa:
- Toimipaikka 1, joka on yhdistetty sijaintiin A
- Toimipaikka 2, joka on yhdistetty sijaintiin B
Jos tavallisessa varastosaldokyselyssä määritetään "siteId": ["1","2"] ja "locationId": ["A","B"], Inventory Visibility tekee automaattisesti kyselyn tuloksista seuraavissa toimipaikoissa ja sijainneissa:
- Toimipaikka 1, sijainti A
- Toimipaikka 1, sijainti B
- Toimipaikka 2, sijainti A
- Toimipaikka 2, sijainti B
Tavallinen varastosaldokysely ei siis tunnista sitä, että sijainti A on vain toimipaikassa 1 ja sijainti B vain toimipaikassa 2. Tämän vuoksi se tekee tarpeettomia kyselyjä. Voit käyttää tätä hierarkkista yhdistämismääritystä varastosaldokyselyn avulla määrittämällä sijainnin yhdistämismääritykset kyselyn tekstiosaan. Tässä tapauksessa voit tehdä kyselyn ja vastaanottaa tulokset vain toimipaikasta 1, sijainnista A ja toimipaikasta 2, sijainnista B.
Käytettävissä oleva tarkka kysely, joka käyttää POST-menetelmää
Tarkka kysely julkaisun jälkeen -ohjelmointirajapinta on käytettävissä kahdessa versiossa. Seuraavassa taulukossa esitellään erot.
| Ohjelmointirajapinnan versio 1.0 | Ohjelmointirajapinnan versio 2.0 |
|---|---|
| Kyselyjä voi tehdä vain yksi organisaation tunnus. | Voi tehdä kyselyn useille organisaation tunnuksille. |
Tarkka kysely, joka on tällä hetkellä saatavilla postin ohjelmointirajapinta version 1.0 kautta
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,
}
Tämän pyynnön tekstiosassa dimensionDataSource on valinnainen parametri. Jos sitä ei ole määritetty, kohdan dimensions arvoa filters käytetään perusdimensioina.
filters-parametrilla on neljä pakollista kenttää: organizationId, productId, dimensions ja values.
-
organizationId-kentän pitäisi sisältää vain yksi arvo, mutta se on silti matriisi. -
productIdvoi sisältää yhden tai useampia arvoja. Jos se on tyhjä matriisi, kaikki tuotteet palautetaan. -
dimensions-taulukossa vaaditaansiteId- jalocationId-arvoja jos ja vain jos tietojen osiosääntö on asetettu Sijainnin mukaan -arvoon. Tässä tapauksessa ne voivat näkyä muiden elementtien kanssa missä tahansa järjestyksessä. -
valuesvoi sisältää vähintään yhden erillisen arvojen monikon, joka vastaa kohdettadimensions.
dimensions kohteessa filters lisätään automaattisesti kohteeseen groupByValues.
Parametri returnNegative määrittää, sisältävätkö tulokset negatiivisia merkintöjä.
Seuraavassa esimerkissä on näytteen tekstisisältö.
{
"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
}
Seuraavassa esimerkissä esitetään, miten kaikista tuotteista tehdään kysely useissa sivustoissa ja sijainneissa.
{
"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
}
Post-menetelmää varastosaldon tarkan kyselyn ohjelmointirajapinnan versio 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,
}
Ohjelmointirajapinnan versio 2.0 eroaa versiosta 1.0 seuraavilla tavoilla:
-
filters-osassa on nytkeys-kenttädimensions-kentän sijasta. Kenttäkeystoimii kutendimensions-kenttä versiossa 1.0, mutta voi nyt sisältääorganizationIdmyös arvon . Voit määrittää avaimet missä tahansa järjestyksessä. - -
filtersosa ei enää tueorganizationIdkenttää. Sen sijaan voit sisällyttää dimensioihinorganizationIdkentässä (esimerkiksikeys) ja määrittää organisaation tunnusarvot kentän vastaavassa sijainnissakeys: ["organizationId", "siteId", "locationId"](esimerkiksivalues).values: ["SCM_IV", "iv_contoso_site_1", "iv_contoso_location_1"]
Muut kentät ovat identtisiä ohjelmointirajapinnan version 1.0 kanssa.
Kyselyn tekeminen tuotehaulla
Seuraavia käytettävissä olevia kyselyohjelmointirajapintoja on parannettu tukemaan tuotehakua:
Huomautus
Kun kirjaat varaston näkyvyyskyselyn, jossa käytetään tuotehakua, käytä productSearch-pyyntöparametria (jossa on sisällä ProductAttributeQuery-objekti) löytääksesi tuotetunnuksen tai suodattaaksesi tuotetunnuksen mukaan. Uudemman ohjelmointirajapinnat eivät enää tue vanhempaa productid-pyyntöparametria pyyntötekstissä.
Vaatimukset
Ennen kuin voit aloittaa tuotehaun ohjelmointirajapintoja, järjestelmäsi on täytettävä seuraavat vaatimukset:
- Käytössäsi on oltava Dynamics 365 Supply Chain Management 10.0.36 tai uudempi.
- Vähintään varaston näkyvyyden version 1.2.2.54 on oltava asennettuna ja määritettynä kohdassa Varaston näkyvyyden asennus ja määritys kuvatulla tavalla.
- Varaston näkyvyyden hakupalvelun on oltava asennettuna ja määritettynä kohdassa Varaston näkyvyyden määrittäminen kuvatulla tavalla.
Tuotehakusopimus
Tuotehakusopimus määrittelee säännöt viestinnälle tuotehaun ohjelmointirajapintojen kanssa. Se tarjoaa standardoidun tavan kuvata tuotehakuominaisuuksien ominaisuudet ja toimintatapa. Siten käyttäjät voivat ymmärtää varaston näkyvyyden ohjelmointirajapintoja, olla vuorovaikutuksessa niiden kanssa ja luoda niitä käyttäviä sovelluksia.
Seuraavassa esimerkissä on esimerkkisopimus.
{
"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"
}
]
}
]
},
}
Seuraavassa taulukossa kuvataan sopimuksessa käytettävät kentät.
| Kentän tunnus | Kuvaus |
|---|---|
logicalOperator |
Mahdolliset arvot ovat And ja Or. Tämän kentän avulla voit yhdistää useita ehtoja tai ehtoja ja alisuodattimia. Huomaa, että subFilters on tosiasiassa productFilter- tai attributeFilter-objekti. Siten sinulla voi olla subFilters-suodattimia subFilters-suodatinten sisällä. |
conditionOperator |
Mahdolliset arvot ovat IsExactly, IsNot, Contains, DoesNotContain, BeginsWith, IsOneOf, GreaterEqual, LessEqual ja Between. |
ProductFilter |
Tämän kentän avulla voit suodattaa tuotteita tuotteeseen liittyvien tietojen perusteella. Voit esimerkiksi vaihtaa arvon productName sopimuksessa arvoksi Company, itemNumber, productSearchName, productType, productName, productDescription, inventoryUnitSymbol, salesUnitSymbol tai purchaseUnitSymbol liiketoimintatarpeidesi mukaan. |
AttributeFilter |
Tämän kentän avulla voit suodattaa tuotteita määritteisiin liittyvien tietojen perusteella. |
attributeArea |
Mahdolliset arvot ovat ProductAttribute, DimensionAttribute ja BatchAttribute. |
Kyselyn tekeminen tuotehaulla
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,
}
Seuraavassa esimerkissä on näytteen tekstisisältö.
{
"productSearch": {
"productFilter": {
"conditions": [
{
"conditionOperator": "contains",
"productName": [
"speaker cable"
],
},
],
},
},
"returnNegative": true,
"filters":
{
"organizationId": ["usmf"],
"siteId": ["1"],
"locationId": ["13"],
},
"groupByValues": ["colorid"],
}
Seuraavassa esimerkissä näytetään onnistunut vastaus.
[
{
"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
}
}
}
]
Tarkka kysely tuotehaun kanssa
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,
}
Seuraavassa esimerkissä on näytteen tekstisisältö.
{
"productSearch": {
"productFilter": {
"conditions": [
{
"conditionOperator": "contains",
"productName": [
"speaker cable"
],
},
],
},
},
"filters": {
"organizationId": ["usmf"],
"dimensions": ["siteId", "locationId", "colorid"],
"values" : [
["1", "13", "Black"],
]
},
"groupByValues": [],
"returnNegative": true
}
Seuraavassa esimerkissä näytetään onnistunut vastaus.
[
{
"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
}
}
}
]
Luvattavissa oleva määrä (ATP)
Voit määrittää varaston näkyvyyden sallimaan tulevien käytettävissä olevien muutosten ajoituksen ja ATP-määrien laskemisen. ATP on tuotteen määrä, joka on saatavilla ja joka voidaan luvata asiakkaalle seuraavalla kaudella. ATP-laskelman käyttö voi lisätä tilauksen täyttämiskykyä merkittävästi. Tietoja siitä, miten tämä ominaisuus otetaan käyttöön ja miten varaston näkyvyys otetaan käyttöön sen API-liittymän kautta ominaisuuden käytön jälkeen, on kohdassa Varaston näkyvyyden käytettävissä olevan varaston muutosaikataulut ja luvattavissa olevat määrät.
Varaus
Kohdistukseen liittyvät ohjelmointirajapinnat sijaitsevat kohdassa Varaston näkyvyyden kohdistus.