Varaston näkyvyyden julkiset ohjelmointirajapinnat

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:

  1. Kirjaudu sisään Azure-portaaliin ja käytä sitä etsiäksesi clientId- ja clientSecret-arvot Dynamics 365 Supply Chain Management -sovelluksellesi.

  2. Nouda Microsoft Entra -tunnus (aadToken) lähettämällä HTTP-pyyntö, jolla on seuraavat ominaisuudet:

    • URL:https://login.microsoftonline.com/${aadTenantId}/oauth2/v2.0/token

    • Menetelmä:GET

    • Tekstisisä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"
    }
    
  3. 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_assertion on oltava Microsoft Entra -tunnus (aadToken), jonka sait edellisessä vaiheessa.
    • Arvon context on oltava Supply Chain Management -ympäristötunnus, jossa haluat ottaa apuohjelman käyttöön.
    • Kaikki muut arvot määritetään samoiksi kuin esimerkissä.
  4. Nouda käyttöoikeustietue (access_token) lähettämällä HTTP-pyyntö, jossa on seuraavat ominaisuudet:

    • URL:https://securityservice.operations365.dynamics.com/token

    • Menetelmä:POST

    • HTTP-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 Location avulla. 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.
  • 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ä tapauksessa siteId ja locationId eivät voi olla tyhjiä.
  • siteId ja locationId ovat käytössä osioinnissa. siteId-pyynnössä voi määrittää useita locationId- ja -arvoja. Jos molemmat matriisit ovat tyhjiä, järjestelmä palauttaa kaikki toimipaikat ja sijainnit tietyille tuotteille. Tässä tapauksessa productId ei 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:

  • pageSize määrittää kullekin sivulle palautettavien varastojen (locationId arvojen) määrän.
  • pageNumber mää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.
  • productId voi sisältää yhden tai useampia arvoja. Jos se on tyhjä matriisi, kaikki tuotteet palautetaan.
  • dimensions-taulukossa vaaditaan siteId- ja locationId-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 kohdetta dimensions.

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 nyt keys-kenttä dimensions-kentän sijasta. Kenttä keys toimii kuten dimensions -kenttä versiossa 1.0, mutta voi nyt sisältää organizationIdmyös arvon . Voit määrittää avaimet missä tahansa järjestyksessä.
  • - filters osa ei enää tue organizationId kenttää. Sen sijaan voit sisällyttää dimensioihin organizationId kentässä (esimerkiksi keys) ja määrittää organisaation tunnusarvot kentän vastaavassa sijainnissa keys: ["organizationId", "siteId", "locationId"] (esimerkiksi values).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:

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.
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
            }
        }
    }
]
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.