Varaston näkyvyys -sovelluksen julkiset ohjelmointirajapinnat
Huomautus
Azure Active Directory on nyt Microsoft Entra ID. Lisätietoja
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 | Menetelmä | Kuvaus |
---|---|---|
/api/environment/{environmentId}/onhand |
Kirjaus | Yhden käytettävissä olevan varastosaldon muutostapahtuman luominen |
/api/environment/{environmentId}/onhand/bulk |
Kirjaus | Useiden muutostapahtumien luominen |
/api/environment/{environmentId}/setonhand/{inventorySystem}/bulk |
Kirjaus | Käytettävissä olevien varastosaldomäärien määrittäminen tai ohittaminen |
/api/environment/{environmentId}/onhand/reserve |
Kirjaus | Yhden alustavan varauksen tapahtuman luominen |
/api/environment/{environmentId}/onhand/reserve/bulk |
Kirjaus | Useiden alustavien varausten tapahtumien luominen |
/api/environment/{environmentId}/onhand/unreserve |
Kirjaus | Yhden alustavan varauksen tapahtuman peruuttaminen |
/api/environment/{environmentId}/onhand/unreserve/bulk |
Kirjaus | Useiden alustavien varausten tapahtumien peruuttaminen |
/api/environment/{environmentId}/onhand/reserve/resyncjob |
Kirjaus | Varaustietojen puhdistaminen |
/api/environment/{environmentId}/onhand/changeschedule |
Kirjaus | Yhden aikataulutetun käytettävissä olevan saldon muutoksen luominen |
/api/environment/{environmentId}/onhand/changeschedule/bulk |
Kirjaus | Useiden käytettävissä olevien varastosaldojen muutosten ja päivämäärien luominen |
/api/environment/{environmentId}/onhand/indexquery |
Kirjaus | Post-menetelmää käyttävä kysely (suositeltu) |
/api/environment/{environmentId}/onhand |
Hae | Get-menetelmää käyttävä kysely |
/api/environment/{environmentId}/onhand/exactquery |
Kirjaus | Post-menetelmää käyttävä tarkka kysely |
/api/environment/{environmentId}/allocation/allocate |
Kirjaus | Yhden kohdistustapahtuman luominen |
/api/environment/{environmentId}/allocation/unallocate |
Kirjaus | Yhden kohdistuksenpoistotapahtuman luominen |
/api/environment/{environmentId}/allocation/reallocate |
Kirjaus | Yhden uudelleenkohdistustapahtuman luominen |
/api/environment/{environmentId}/allocation/consume |
Kirjaus | Yhden kulutustapahtuman luominen |
/api/environment/{environmentId}/allocation/query |
Kirjaus | Kyselyn kohdistustulos |
/api/environment/{environmentId}/onhand/productsearch/indexquery |
Kirjaus | Kirjaa indeksikysely tuotehaun kanssa |
/api/environment/{environmentId}/onhand/productsearch/exactquery |
Kirjaus | Kirjaa tarkka kysely tuotehaun kanssa |
Huomautus
Polun {environmentId}-osa on ympäristötunnus Microsoft Dynamics Lifecycle Servicesissä.
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ätä varten sinun on luotava Microsoft Entra -tunnus käyttämällä Microsoft Entra -sovellusta. Tämän jälkeen Microsoft Entra -tunnuksen avulla saat käyttöoikeustunnuksen suojauspalvelusta.
Palvelun suojaustunnus haetaan seuraavasti:
Kirjaudu Azure-portaaliin ja etsi sen avulla Dynamics 365 Supply Chain Management -sovelluksen
clientId
- jaclientSecret
-arvot.Nouda Microsoft Entra -tunnus (
aadToken
) lähettämällä HTTP-pyyntö, jossa on seuraavat ominaisuudet:URL-osoite:
https://login.microsoftonline.com/${aadTenantId}/oauth2/v2.0/token
Tapa:
GET
Tekstisisältö (lomaketiedot):
Avain Arvo client_id ${aadAppId} client_secret ${aadAppSecret} grant_type client_credentials vaikutusalue 0cdb527f-a8d1-4bf8-9436-b352c68682b2/.oletusarvo
Vastauksena pitäisi olla Microsoft Entra -tunnus (
aadToken
). 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": "{$LCS_environment_id}", "context_type": "finops-env" }
Huomaa seuraavat seikat:
client_assertion
-arvon on oltava edellisessä vaiheessa vastaanotettu Microsoft Entra -tunnus (aadToken
).context
-arvon on oltava sen Lifecycle Services -ympäristön tunnus, jossa apuohjelma halutaan ottaa käyttöön.- Kaikki muut arvot määritetään samoiksi kuin esimerkissä.
Nouda käyttöoikeustietue (
access_token
) lähettämällä HTTP-pyyntö, jossa on seuraavat ominaisuudet:-
URL-osoite:
https://securityservice.operations365.dynamics.com/token
-
Tapa:
POST
-
HTTP-otsikko: Ohjelmointirajapinnan versio on sisällytettävä. (Avain on
Api-Version
ja arvo1.0
.) - 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 }
-
URL-osoite:
Seteli
URL-osoite https://securityservice.operations365.dynamics.com/token
on suojauspalvelun yleinen URL-osoite. Kun kutsut URL-osoitetta, ensimmäinen vastaus on http:n uudelleenohjausvastaus, joka tilakoodi vastausotsikoissa on 307
ja Sijainti-avaimen sisältävä syöttö, jossa on suojauspalvelun kohde-URL-osoite. URL-osoitteen muoto on https://gw.{$geo}-il101.gateway.prod.island.powerapps.com/securityservice/token
. Jos ympäristö sijaitsee Yhdysvaltain maantieteellisellä alueella, URL-osoite voi olla https://gw.us-il101.gateway.prod.island.powerapps.com/securityservice/token
. Jos 307-vastauksen tilakoodia ei voida hyväksyä, voit manuaalisesti muodostaa todellisen URL-osoitteen FinOps-ympäristön sijainnin mukaan. Yksinkertaisin tapa on avata kohta https://gw.as-il101.gateway.prod.island.powerapps.com/securityservice/token
selaimessa ja kopioida osoiterivin osoite.
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 pakollisia dimensioita. 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 Yhden varaustapahtuman varauksen poistaminen -osassa.
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
}
Muistiinpano
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"
]
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
Kysely postitse -sovellusliittymä on käytettävissä kahdessa versiossa. Seuraavassa taulukossa kuvataan erot.
API-versio 1.0 | API-versio 2.0 |
---|---|
Vain yhden organisaatiotunnuksen kysely. | Voi tehdä kyselyjä useista organisaatiotunnuksista. |
Voi tehdä kyselyitä enintään 10 000:lle toimi- ja varastoyhdistelmälle. | Voi tehdä kyselyitä yli 10 000:sta organisaation tunnusten, toimi sivustojen ja varastojen yhdistelmästä. Voit palauttaa tuloksia useilla sivuilla. |
Seuraavissa alisivustoissa näytetään, kuinka kutakin API-versiota käytetään.
Kysely postitse API-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. -
productId
voi sisältää yhden arvon tai useita arvoja. Jos se on tyhjä matriisi, järjestelmä palauttaa kaikki tuotteet tietyille toimipaikoille ja sijainneille. Tässä tapauksessasiteId
jalocationId
eivät voi olla tyhjiä. -
siteId
jalocationId
ovat käytössä osioinnissa. Varastosaldokysely-pyynnössä voi määrittää useitasiteId
- jalocationId
-arvoja. Jos molemmat matriisit ovat tyhjiä, järjestelmä palauttaa kaikki toimipaikat ja sijainnit tietyille tuotteille. Tässä tapauksessaproductId
ei voi olla tyhjä.
groupByValues
-parametria kannattaa käyttää tavalla, joka on yhdenmukainen indeksimäärityksen kanssa. Lisätietoja on kohdassa Käytettävissä olevan varaston hakemistomää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
}
Kysely postitse API-version 2.0 mukaan
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
API-version 2.0 pyyntömuoto muistuttaa versiota 1.0, mutta se tukee myös kahta valinnaista parametria, pageNumber
pageSize
ja näin järjestelmä voi jakaa yhden suuren tuloksen useisiin pienempiin tiedostoihin. Tulokset lajitellaan varaston mukaan (locationId
), ja parametreja käytetään seuraavasti, kun tulokset jaetaan sivuille:
-
pageSize
määrittää kullakin sivulla palautettujen varastojen (locationId
arvojen) määrän. -
pageNumber
lisää palautetun sivun numero sen mukaan,
Tämän muodon pyyntö palauttaa käytettävissä olevan varaston tiedot varastonumerosta ({pageNumber} − 1) × {pageSize} sisältää seuraavien varastojen {pageSize} tiedot.
API-versio 2.0 vastaa asiakirjaan, 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
), arvo nextLink
on tyhjä merkkijono.
API-versio 2.0:n avulla voit myös määrittää pyyntöön useamman kuin yhden organisaatiotunnuksen. Jos haluat tehdä nämä tunnukset, sisällytä pyyntöasiakirjan suodattimeen organizationId
pilkuilla erotettu luettelo organisaatiotunnuksista. 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 varastokyselyä useiden organisaatiotunnuksen avulla 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.
Tarkka kysely käytössä käyttäen kirjaamismenetelmää
Käytettävissä oleva täsmällinen kysely post-api:n mukaan on käytettävissä kahdessa versiossa. Seuraavassa taulukossa kuvataan erot.
API-versio 1.0 | API-versio 2.0 |
---|---|
Vain yhden organisaatiotunnuksen kysely. | Voi tehdä kyselyjä useista organisaatiotunnuksista. |
Käsillä oleva kysely postitse API-version 1.0 mukaan
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 filters
arvoa dimensions
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. -
productId
voi 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ä.-
values
voi 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
}
Käsillä oleva kysely postitse API-version 2.0 mukaan
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-versio 2.0 eroaa versiosta 1.0 seuraavilla tavoilla:
- Osassa
filters
on nyt kenttäkeys
kentändimensions
sijaan. Kenttäkeys
toimii kuten versiondimensions
1.0 kenttä, mutta se voidaan nyt sisällyttää myösorganizationId
. Avaimet voi määrittää missä tahansa järjestyksessä. - Osa
filters
ei enää tueorganizationId
kenttää. Sen sijaan voit sisällyttääorganizationId
dimensioiden välilläkeys
kenttään (keys: ["organizationId", "siteId", "locationId"]
esimerkiksi)values
ja määrittää organisaation tunnuksen arvot kentän vastaavaan kohtaan (esimerkiksivalues: ["SCM_IV", "iv_contoso_site_1", "iv_contoso_location_1"]
).
Muut kentät ovat identtiset API-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ä.
Edellytykset
Ennen kuin voit aloittaa tuotehaun ohjelmointirajapintoja, järjestelmäsi on täytettävä seuraavat vaatimukset:
- Käytössä on oltava vähintään Dynamics 365 Supply Chain Managementin versio 10.0.36.
- 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.