This sequence of calls can be executed on the following web services:
Catalog service
https://play.demo-ws.secutix.com:443/tnseb/external-remoting/com.secutix.service.realtime.catalog.v1_33.CatalogService.webservice
External order facade
https://play.demo-ws.secutix.com:443/tnseb/external-remoting/com.secutix.service.realtime.externalorder.v1_33.ExternalOrderFacade.webservice
External order service
https://play.demo-ws.secutix.com:443/tnseb/external-remoting/com.secutix.service.realtime.externalorder.v1_33.ExternalOrderService.webservice
Availability service https://play.demo-ws.secutix.com/tnseb/external-remoting/com.secutix.service.realtime.availability.v1_33.AvailabilityService.webservice?wsdl
Must be done once a day (see here)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://v1_33.CatalogService.service.secutix.com">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-B375FF7B6FAD83ECAF15795998117091">
<wsse:Username>PLAY_B2C</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">P@ssw0rd</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<v1:getCatalogDetailed/>
</soapenv:Body>
</soapenv:Envelope>
https://play.demo-ws.secutix.com/tnseb/backend-apis/catalogService/v1_33/getCatalogDetailed
{
}
Here is a link with a zipped version SOAP of the response as the catalog is quite big.
Here is a link with a zipped version REST of the response as the catalog is quite big.
Information extracted from response:
This can only be done once in a while. Important points to notice are posId (pointOfSalesId in subsequent calls) and payment methods (will be used to pay the order)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://v1_33.CatalogService.service.secutix.com">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-BCC4CF7DDCCDA67DF715859090203102">
<wsse:Username>PLAY_B2C</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">P@ssw0rd</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<v1:getPOSConfig/>
</soapenv:Body>
</soapenv:Envelope>
https://play.demo-ws.secutix.com/tnseb/backend-apis/catalogService/v1_33/getPOSConfig
{
}
Information extracted from response:
All the fields are filled with the information above. eventId matches the productId.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://v1_33.RTAvailabilityService.service.secutix.com">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-BCC4CF7DDCCDA67DF715859090203102">
<wsse:Username>PLAY_B2C</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">P@ssw0rd</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<v1:getPerformanceAvailability>
<pointOfSalesId>101053522324</pointOfSalesId>
<eventId>101090010798</eventId>
<performanceIds>101090013225</performanceIds>
<seatCategoryIds>101053581510</seatCategoryIds>
</v1:getPerformanceAvailability>
</soapenv:Body>
</soapenv:Envelope>
{
"pointOfSalesId": "101053522324",
"eventId": "101090010798",
"performanceIds": ["101090013225"],
"seatCategoryIds": ["101053581510"]
}
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getPerformanceAvailabilityResponse xmlns:ns2="http://v1_33.RTAvailabilityService.service.secutix.com">
<PerformanceAvailabilityResult>
<requestId xsi:nil="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<statusCode>success</statusCode>
<statusDetail xsi:nil="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<performanceAvailabilityData>
<performanceAvailabilities>
<availability>9487</availability>
<availabilityLevel>GOOD</availabilityLevel>
<quota>9488</quota>
<seatCategoryId>101053581510</seatCategoryId>
<eventId>101090010798</eventId>
<performanceId>101090013225</performanceId>
</performanceAvailabilities>
</performanceAvailabilityData>
</PerformanceAvailabilityResult>
</ns2:getPerformanceAvailabilityResponse>
</S:Body>
</S:Envelope>
{
"statusCode": "success",
"performanceAvailabilityData": {
"performanceAvailabilities": [
{
"availabilityLevel": "GOOD",
"availability": 9431,
"seatCategoryId": 101053581510,
"quota": 9488,
"eventId": 101090010798,
"performanceId": 101090013225
}
]
}
}
We can see there is a GOOD
availability level. So we can proceed with the purchase.
pointOfSalesId comes from the getPosConfig response.
All the other ids are retrieved in the catalog.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://v1_33.ExternalOrderFacade.service.secutix.com"
xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soapenv:Header>
<ns2:Security>
<ns2:UsernameToken>
<ns2:Username>PLAY_B2C</ns2:Username>
<ns2:Password>P@ssw0rd</ns2:Password>
</ns2:UsernameToken>
</ns2:Security>
</soapenv:Header>
<soapenv:Body>
<v1:createOrUpdateOrder>
<pointOfSalesId>101053522324</pointOfSalesId>
<orderType>SALE</orderType>
<singleEntryAttributionOperations>
<operationAttributions>
<audienceSubCategoryId>101053580099</audienceSubCategoryId>
<quantity>1</quantity>
<performanceId>101090013225</performanceId>
<seatCategoryId>101053581510</seatCategoryId>
<unitAmount>60000</unitAmount>
</operationAttributions>
</singleEntryAttributionOperations>
</v1:createOrUpdateOrder>
</soapenv:Body>
</soapenv:Envelope>
https://play.demo-ws.secutix.com/tnseb/backend-apis/externalOrderFacade/v1_33/createOrUpdateOrder
{
"pointOfSalesId": "101053522324",
"orderType": "SALE",
"singleEntryAttributionOperations" :[{
"operationAttributions" : [{
"audienceSubCategoryId": "101053580099",
"quantity" : "1",
"performanceId" : "101090013225",
"seatCategoryId" : "101053581510",
"unitPriceAmount" : "60000"
}]
}]
}
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:createOrUpdateOrderResponse xmlns:ns2="http://v1_33.ExternalOrderFacade.service.secutix.com">
<OrderUpdateResult>
<requestId xsi:nil="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<statusCode>success</statusCode>
<statusDetail xsi:nil="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<expectedException>false</expectedException>
<orderUpdateData>
<catalogCurrency>
<currencyCode>EUR</currencyCode>
<fractionDigit>2</fractionDigit>
<minAmount>10</minAmount>
<symbol>€</symbol>
</catalogCurrency>
<generatedContactQualities/>
<generatedContiguities>
<contiguous>true</contiguous>
<performanceId>101090013225</performanceId>
<seatCategoryId>101053581510</seatCategoryId>
<segments>
<movementIds>10228263917610</movementIds>
</segments>
</generatedContiguities>
<mainOperationId>10228263917507</mainOperationId>
<movementDataUpdates>
<area>Tribune basse west (nord)</area>
<areaId>101053496266</areaId>
<areaKind>INDIFFERENT</areaKind>
<attributionMatch>NO_EXPECTATION</attributionMatch>
<block>W7 bas</block>
<blockId>101053496520</blockId>
<contingent>Accessible</contingent>
<contingentId>101053647160</contingentId>
<entrance>Porte A</entrance>
<entranceCode>A</entranceCode>
<entranceId>101053496176</entranceId>
<floor>Bas</floor>
<movementId>10228263917610</movementId>
<operationId>10228263917507</operationId>
<resumed>false</resumed>
<row>M</row>
<saleSeatId>10009372140</saleSeatId>
<scenePanoLink>pacifa://https://static.pacifa3d.com/StadeOceane/SECUTIX/V2-0/Pano/Pano.html?s=411</scenePanoLink>
<seatCategory>Cat 1</seatCategory>
<seatCategoryId>101053581510</seatCategoryId>
<seatId>101053497670</seatId>
<seatNumber>325</seatNumber>
<seatOrientation>180</seatOrientation>
<seatQuality>Armchair</seatQuality>
<seatQualityCode>Fauteuil</seatQualityCode>
<seatQualityId>2424</seatQualityId>
<stageVisibility>VISIBLE</stageVisibility>
<type>SEAT</type>
<xCoordinate>14586</xCoordinate>
<yCoordinate>2435</yCoordinate>
</movementDataUpdates>
<operationDataUpdates>
<activityType>SPORT</activityType>
<audienceCatId>15655</audienceCatId>
<audienceSubCategory>Full price</audienceSubCategory>
<audienceSubCategoryId>101053580099</audienceSubCategoryId>
<audienceSubCategoryRank>1</audienceSubCategoryRank>
<audienceSubCategoryRequireAttachment>false</audienceSubCategoryRequireAttachment>
<basePrice>60000</basePrice>
<comfortVariableValues>
<entry>
<key>PrioPts</key>
<value>
<translations>
<locale>en</locale>
<value>0</value>
</translations>
</value>
</entry>
</comfortVariableValues>
<contingent>Accessible</contingent>
<contingentId>101053647160</contingentId>
<eventId>101090010798</eventId>
<fileId>3985</fileId>
<isNominative>false</isNominative>
<itemDisplayExternalDesignation>Championship Home Games</itemDisplayExternalDesignation>
<itemId>101090010924</itemId>
<kind>SINGLE_ENTRY</kind>
<locations>
<siteAddress>
<countryCode>CH</countryCode>
<firstAddressLine>Route des Plaines-du-Loup 7</firstAddressLine>
<gpsLatitude>46.5333333</gpsLatitude>
<gpsLongitude>6.6241666999999325</gpsLongitude>
<locality>Lausanne</locality>
<phoneNumber>41-0213151414</phoneNumber>
<website>http://www.secutix.com</website>
<zipCode>1018</zipCode>
</siteAddress>
<siteCode>Arena</siteCode>
<siteExternalName>
<translations>
<locale>en</locale>
<value>S-360 Arena</value>
</translations>
<translations>
<locale>fr</locale>
<value>Arène S-360</value>
</translations>
</siteExternalName>
<spaceCode>Arena</spaceCode>
<spaceExternalName>
<translations>
<locale>en</locale>
<value>Home arena</value>
</translations>
<translations>
<locale>fr</locale>
<value>Arène sport</value>
</translations>
</spaceExternalName>
</locations>
<match>
<finalDate>true</finalDate>
<hostTeam>Team Play</hostTeam>
<hostTeamId>101053521731</hostTeamId>
<opposingTeam>My Bed FC</opposingTeam>
<opposingTeamId>101053521730</opposingTeamId>
<round>Day 6</round>
<roundCode>J6</roundCode>
</match>
<numbered>true</numbered>
<operationId>10228263917507</operationId>
<operationNumber>1</operationNumber>
<performance>Championship Home Games</performance>
<performanceCode>Champ</performanceCode>
<performanceDate>2020-07-11T17:00:00+02:00</performanceDate>
<performanceDuration>7200</performanceDuration>
<performanceId>101090013225</performanceId>
<performanceKind>Default</performanceKind>
<physicalConfigurationId>101053496064</physicalConfigurationId>
<product>Championship Home Games</product>
<productCode>League</productCode>
<productFamilySubType>SPORTING_EVENT</productFamilySubType>
<productFamilyType>SINGLE_ENTRY</productFamilyType>
<productId>101090010798</productId>
<quantity>1</quantity>
<season>Current season</season>
<seatCategory>Cat 1</seatCategory>
<seatCategoryBgColor>D6006B</seatCategoryBgColor>
<seatCategoryId>101053581510</seatCategoryId>
<seatCategoryRank>1</seatCategoryRank>
<selfPaidVat>false</selfPaidVat>
<site>S-360 Arena</site>
<siteAddress>
<countryCode>CH</countryCode>
<firstAddressLine>Route des Plaines-du-Loup 7</firstAddressLine>
<gpsLatitude>46.5333333</gpsLatitude>
<gpsLongitude>6.6241666999999325</gpsLongitude>
<locality>Lausanne</locality>
<phoneNumber>41-0213151414</phoneNumber>
<website>http://www.secutix.com</website>
<zipCode>1018</zipCode>
</siteAddress>
<siteId>101053494751</siteId>
<space>Home arena</space>
<totalAmount>60000</totalAmount>
<unitPrice>60000</unitPrice>
<vatCountryCode>CH</vatCountryCode>
<vatRate>8000</vatRate>
<waitingAccountBalance>0</waitingAccountBalance>
<withoutVatTotalAmount>55560</withoutVatTotalAmount>
</operationDataUpdates>
<orderId>11000309828</orderId>
<orderSecretId>731ad90d-0761-4516-a3e7-3aeaf5736539_11000309828</orderSecretId>
<origin>
<toCreateToken>false</toCreateToken>
</origin>
</orderUpdateData>
</OrderUpdateResult>
</ns2:createOrUpdateOrderResponse>
</S:Body>
</S:Envelope>
{
"statusCode": "success",
"expectedException": false,
"orderUpdateData": {
"orderId": 10000707346,
"operationDataUpdates": [
{
"operationId": 10228464927528,
"kind": "SINGLE_ENTRY",
"type": "PRE_SALE",
"quantity": 1,
"basePrice": 60000,
"unitPrice": 60000,
"withoutVatTotalAmount": 55560,
"totalAmount": 60000,
"productId": 101090010798,
"product": "Championship Home Games",
"productCode": "League",
"itemId": 101090010924,
"performanceId": 101090013225,
"performance": "Championship Home Games",
"eventId": 101090010798,
"physicalConfigurationId": 101053496064,
"siteId": 101053494751,
"site": "S-360 Arena",
"siteAddress": {
"firstAddressLine": "Route des Plaines-du-Loup 7",
"zipCode": "1018",
"locality": "Lausanne",
"countryCode": "CH",
"phoneNumber": "41-0213151414",
"gpsLatitude": "46.5333333",
"gpsLongitude": "6.6241666999999325",
"website": "http://www.secutix.com"
},
"space": "Home arena",
"contingentId": 101053647160,
"contingent": "Accessible",
"numbered": true,
"seatCategoryId": 101053581510,
"seatCategory": "Cat 1",
"seatCategoryRank": 1,
"audienceSubCategoryId": 101053580099,
"audienceSubCategory": "Full price",
"audienceSubCategoryRank": 1,
"audienceSubCategoryRequireAttachment": false,
"vatRate": 8000,
"vatCountryCode": "CH",
"selfPaidVat": false,
"operationNumber": 1,
"productFamilyType": "SINGLE_ENTRY",
"productFamilySubType": "SPORTING_EVENT",
"activityType": "SPORT",
"performanceDate": "2022-04-09T17:00:00.000+02:00",
"performanceDuration": 7200,
"itemDisplayExternalDesignation": "Championship Home Games",
"locations": [
{
"spaceCode": "Arena",
"siteCode": "Arena",
"spaceExternalName": {
"translations": [
{
"locale": "en",
"value": "Home arena"
},
{
"locale": "fr",
"value": "Arène sport"
},
{
"locale": "de",
"value": "Heim-Stadion"
}
]
},
"siteExternalName": {
"translations": [
{
"locale": "en",
"value": "S-360 Arena"
},
{
"locale": "fr",
"value": "Arène S-360"
},
{
"locale": "de",
"value": "STX Arena"
}
]
},
"siteAddress": {
"firstAddressLine": "Route des Plaines-du-Loup 7",
"zipCode": "1018",
"locality": "Lausanne",
"countryCode": "CH",
"phoneNumber": "41-0213151414",
"gpsLatitude": "46.5333333",
"gpsLongitude": "6.6241666999999325",
"website": "http://www.secutix.com"
}
}
],
"fileId": 8363,
"match": {
"finalDate": true,
"roundCode": "J6",
"roundRank": 6,
"hostTeamId": 101053521731,
"opposingTeamId": 101053521730,
"round": "Day 6",
"hostTeam": "Team Play",
"opposingTeam": "My Bed FC"
},
"performanceKind": "Default",
"waitingAccountBalance": 0,
"seatCategoryBgColor": "D6006B",
"season": "Current season",
"crossSellParentOperationIds": [],
"comfortVariableValues": {
"TIXImg": {
"translations": [
{
"locale": "en",
"value": "https://s3.eu-central-1.amazonaws.com/pub.play.dm1-s3.secutix.com/images/catalog/product/large/c8bfc539-7999-4b3c-a1f8-c4ed56acc68c.jpg"
}
]
},
"TIXAct": {
"translations": [
{
"locale": "en",
"value": "31/12/2021 16:00"
}
]
}
},
"performanceCode": "Champ",
"audienceCatId": 15655,
"exchangeable": true,
"isNominative": false
}
],
"removeOperationIds": [],
"movementDataUpdates": [
{
"movementId": 10228464927613,
"operationId": 10228464927528,
"type": "SEAT",
"seatId": 101053497670,
"saleSeatId": 10009372140,
"seatCategoryId": 101053581510,
"seatCategory": "Cat 1",
"contingentId": 101053647160,
"contingent": "Accessible",
"areaId": 101053496266,
"area": "Tribune basse west (nord)",
"floor": "Bas",
"blockId": 101053496520,
"block": "W7 bas",
"entranceId": 101053496176,
"entrance": "Porte A",
"entranceCode": "A",
"row": "M",
"seatNumber": "325",
"seatQualityId": 2424,
"seatQuality": "Armchair",
"seatQualityCode": "Fauteuil",
"yCoordinate": 2435,
"xCoordinate": 14586,
"seatOrientation": 180,
"scenePanoLink": "pacifa://https://static.pacifa3d.com/StadeOceaneStadiumLEHAVRE/SECUTIX/V2-0/Pano/Pano.html?s=411",
"stageVisibility": "VISIBLE",
"areaKind": "INDIFFERENT",
"resumed": false,
"attributionMatch": "NO_EXPECTATION",
"externalReferences": []
}
],
"removeMovementIds": [],
"mainOperationId": 10228464927528,
"generatedContiguities": [
{
"performanceId": 101090013225,
"contiguous": true,
"seatCategoryId": 101053581510,
"segments": [
{
"movementIds": [
10228464927613
]
}
]
}
],
"generatedContactQualities": {},
"origin": {
"toCreateToken": false
},
"orderSecretId": "a9a11273-10bb-4f90-a20a-55126cc50fe4_10000707346",
"catalogCurrency": {
"currencyCode": "EUR",
"symbol": "€",
"fractionDigit": 2,
"minAmount": 10
}
}
}
Information extracted from response:
orderId and movementId and amount all come from the response to the order creation.
Contact reference, here is a given contact able to handle waiting account payments. Contact reference can also be obtained by searching/creating contact through contact web services.
paymentMethodId comes from getPosConfig response.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://v1_33.ExternalOrderFacade.service.secutix.com"
xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soapenv:Header>
<ns2:Security>
<ns2:UsernameToken>
<ns2:Username>PLAY_B2C</ns2:Username>
<ns2:Password>P@ssw0rd</ns2:Password>
</ns2:UsernameToken>
</ns2:Security>
</soapenv:Header>
<soapenv:Body>
<v1:createPaymentsAndCloseOrder>
<orderId>11000309828</orderId>
<payments>
<amount>60000</amount>
<paymentMethodId>16370</paymentMethodId>
</payments>
<paymentParams>
<contactNumber>8150</contactNumber>
<pointOfSalesId>101053522324</pointOfSalesId>
<totalAmount>64000</totalAmount>
</paymentParams>
<orderType>SALE</orderType>
<maxWaitingTime>0</maxWaitingTime>
<purchasersInfo>
<contactReference>8150</contactReference>
</purchasersInfo>
</v1:createPaymentsAndCloseOrder>
</soapenv:Body>
</soapenv:Envelope>
{
"orderId": "11000309828",
"payments": [
{
"amount": "1",
"paymentMethodId": "16370"
}],
"paymentParams": {
"contactNumber": "8150",
"pointOfSalesId": "101053522324",
"totalAmount" : "64000"
},
"orderType" : "SALE",
"maxWaitingTime" : "0",
"purchasersInfo": [
{
"contactReference": "8150"
}]
}
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://v1_33.ExternalOrderService.service.secutix.com" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<soapenv:Header>
<ns2:Security>
<ns2:UsernameToken>
<ns2:Username>PLAY_B2C</ns2:Username>
<ns2:Password>P@ssw0rd</ns2:Password>
</ns2:UsernameToken>
</ns2:Security>
</soapenv:Header>
<soapenv:Body>
<v1:getOrderDetails>
<orderId>11000309828</orderId>
</v1:getOrderDetails>
</soapenv:Body>
</soapenv:Envelope>
https://play.demo-ws.secutix.com/tnseb/backend-apis/externalOrderService/v1_33/getOrderDetails
{
"orderId": "11000309828"
}