Know How: integrating access control service

Context

This example describes the case in which we want to retrieve all the tickets, “white” (valid) and “black” (invalid) in order to fuel a local access control system.
We suppose we want to retrieve the tickets for an oncoming event, a mega-concert in a stadium hosting more than 50 000 guests.

Examples code below show you how to :

  • Get Access Control Catalog (SOAP & REST)
  • Get Export Tickets List directly or by Iterative manner (SOAP & REST)
  • Get Imported Controlled tickets (SOAP & REST)

Retreiving Catalog

Call to getAccessControlCatalog

SOAP Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://v1_6.ExternalAccessControlService.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-2B4E717FFC5F9F646D16031040421765">
                <wsse:Username>MOSA_AC</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:getAccessControlCatalog>
            <listType>GREY</listType>
            <ticketType>MOSA_AC</ticketType>
            <seasonCode>Saison1</seasonCode>
        </v1:getAccessControlCatalog>
    </soapenv:Body>
</soapenv:Envelope>

SOAP Response

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:getAccessControlCatalogResponse xmlns:ns2="http://v1_6.ExternalAccessControlService.service.secutix.com">
         <AccessControlCatalogResult>
            <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"/>
            <seasons>
               <id>306158775</id>
               <code>Saison1</code>
               <internalName>Saison 1</internalName>
               <endDate>2024-04-17T00:00:00+02:00</endDate>
               <products>
                  <id>101089607403</id>
                  <code>DON_REL</code>
                  <internalName>Soulagement du Musée</internalName>
               </products>
               <products>
                  <id>101091020493</id>
                  <code>GUIWH+F</code>
                  <internalName>Group Guided visit &amp; La Vie en Rose</internalName>
               </products>

                ... "Many products have been removed for better display" ...

               <products>
                  <id>10228476497833</id>
                  <code>GIFT_RUS</code>
                  <internalName>Gift card</internalName>
               </products>
               <startDate>2022-04-18T00:00:00+02:00</startDate>
            </seasons>
         </AccessControlCatalogResult>
      </ns2:getAccessControlCatalogResponse>
   </S:Body>
</S:Envelope>

REST Request :

{
    "seasonCode": "Saison1"
}

REST Response

{
    "statusCode": "success",
    "seasons": [
        {
            "id": 306158775,
            "code": "Saison1",
            "internalName": "Saison 1",
            "startDate": "2022-04-18T00:00:00.000+02:00",
            "endDate": "2024-04-17T00:00:00.000+02:00",
            "products": [
                {
                    "id": 101089607403,
                    "code": "DON_REL",
                    "internalName": "Soulagement du Musée"
                },
                {
                    "id": 101091020493,
                    "code": "GUIWH+F",
                    "internalName": "Group Guided visit & La Vie en Rose"
                },

                    /*...Many products have been removed for better display...*/

                {
                    "id": 10228289307463,
                    "code": "AP",
                    "internalName": "Anniversary Package"
                },
                {
                    "id": 466677403,
                    "code": "C_DISAB",
                    "internalName": "Comptes : Pass libres visiteurs"
                },
                {
                    "id": 10228476497833,
                    "code": "GIFT_RUS",
                    "internalName": "Gift card"
                }
            ]
        }
    ]
}

Retreiving the Export List of tickets (Iterative manner)

SOAP Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://v1_6.ExternalAccessControlService.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 soapenv:mustUnderstand="1">
            <ns2:UsernameToken>
                <ns2:Username>MOSA_AC</ns2:Username>
                <ns2:Password>P@ssw0rd</ns2:Password>
            </ns2:UsernameToken>
        </ns2:Security>
    </soapenv:Header>
    <soapenv:Body>
        <v1:exportList>
            <listType>GREY</listType>
            <ticketType>MOSA_AC</ticketType>
            <seasonCode>Saison1</seasonCode>
            <productCodes>PABLO</productCodes>
            <nbMaxResults>5</nbMaxResults>
        </v1:exportList>
    </soapenv:Body>
</soapenv:Envelope>

SOAP Response

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:exportListResponse xmlns:ns2="http://v1_6.ExternalAccessControlService.service.secutix.com">
            <AccessControlListResult>
                <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"/>

                    "...8 products are removed for better display..."

                    <accessControlListItems>
                        <areaCode>AUDI</areaCode>
                        <audienceCategoryKind>FULL</audienceCategoryKind>
                        <audienceSubCategoryCode>ADULT</audienceSubCategoryCode>
                        <barcode>ARC-29B13190240602561C528281F9E46387</barcode>
                        <cancellationCause>NOT_CANCELLED</cancellationCause>
                        <categoryCode>UNIQUE</categoryCode>
                        <endValidityDate>2023-12-23T17:30:00+01:00</endValidityDate>
                        <entranceCode>Entrance</entranceCode>
                        <entranceId>10228315404045</entranceId>
                        <fileId>4157</fileId>
                        <holderInfo>
                            <entry>
                                <key>ID_NUMBER</key>
                            </entry>
                            <entry>
                                <key>LASTNAME</key>
                                <value>CHU</value>
                            </entry>
                            <entry>
                                <key>FIRSTNAME</key>
                                <value>Anna</value>
                            </entry>
                            <entry>
                                <key>BIRTHDATE</key>
                            </entry>
                            <entry>
                                <key>COUNTRY_CODE</key>
                            </entry>
                        </holderInfo>
                        <performanceCode>PABLO-2</performanceCode>
                        <performanceDateTime>2022-12-23T17:30:00+01:00</performanceDateTime>
                        <performanceId>10228305843587</performanceId>
                        <productCode>PABLO</productCode>
                        <productId>101039315666</productId>
                        <reseller>SECUTIX</reseller>
                        <taxNumber>01010013402</taxNumber>
                        <ticketState>VALID</ticketState>
                        <validityDate>2022-12-23T17:30:00+01:00</validityDate>
                        <validityDays>1</validityDays>
                    </accessControlListItems>
                    <paginationEnd>2022-11-17 11:12:54.962</paginationEnd>
                </accessControlListData>
            </AccessControlListResult>
        </ns2:exportListResponse>
    </S:Body>
</S:Envelope>

Get 5 results

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:exportListResponse xmlns:ns2="http://v1_6.ExternalAccessControlService.service.secutix.com">
            <AccessControlListResult>
                <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"/>
                <accessControlListData>

                     "4 products are removed for better display"

                    <accessControlListItems>
                        <areaCode>AUDI</areaCode>
                        <audienceCategoryKind>FULL</audienceCategoryKind>
                        <audienceSubCategoryCode>ADULT</audienceSubCategoryCode>
                        <barcode>ARC-29B13190240602561C528281F9E46387</barcode>
                        <cancellationCause>NOT_CANCELLED</cancellationCause>
                        <categoryCode>UNIQUE</categoryCode>
                        <endValidityDate>2023-12-23T17:30:00+01:00</endValidityDate>
                        <entranceCode>Entrance</entranceCode>
                        <entranceId>10228315404045</entranceId>
                        <fileId>4157</fileId>
                        <holderInfo>
                            <entry>
                                <key>ID_NUMBER</key>
                            </entry>
                            <entry>
                                <key>LASTNAME</key>
                                <value>CHU</value>
                            </entry>
                            <entry>
                                <key>FIRSTNAME</key>
                                <value>Anna</value>
                            </entry>
                            <entry>
                                <key>BIRTHDATE</key>
                            </entry>
                            <entry>
                                <key>COUNTRY_CODE</key>
                            </entry>
                        </holderInfo>
                        <performanceCode>PABLO-2</performanceCode>
                        <performanceDateTime>2022-12-23T17:30:00+01:00</performanceDateTime>
                        <performanceId>10228305843587</performanceId>
                        <productCode>PABLO</productCode>
                        <productId>101039315666</productId>
                        <reseller>SECUTIX</reseller>
                        <taxNumber>01010013402</taxNumber>
                        <ticketState>VALID</ticketState>
                        <validityDate>2022-12-23T17:30:00+01:00</validityDate>
                        <validityDays>1</validityDays>
                    </accessControlListItems>
                    <paginationEnd>2022-11-17 11:44:27.969</paginationEnd>
                </accessControlListData>
            </AccessControlListResult>
        </ns2:exportListResponse>
    </S:Body>
</S:Envelope>

If we want to get these products by iteration manner

We can get them 5 by 5

How ? : Retrieve "paginationEnd" in the previous response and put it as "paginationStart in the same request as follow"

Put the same value that you gt in the response :

Do it as long as you want to get 5 by 5 until the end of products list.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://v1_6.ExternalAccessControlService.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 soapenv:mustUnderstand="1">
      <ns2:UsernameToken>
        <ns2:Username>MOSA_AC</ns2:Username>
        <ns2:Password>P@ssw0rd</ns2:Password>
      </ns2:UsernameToken>
    </ns2:Security>
  </soapenv:Header>
  <soapenv:Body>
    <v1:exportList>
      <listType>GREY</listType>
      <ticketType>MOSA_AC</ticketType>
      <seasonCode>Saison1</seasonCode>
      <productCodes>PABLO</productCodes>
      <nbMaxResults>5</nbMaxResults>
      <paginationStart>2022-11-17 11:44:27.969</paginationStart>
    </v1:exportList>
  </soapenv:Body>
</soapenv:Envelope>

REST Request

{
    "listType": "GREY",
    "ticketType": "ALL",
    "seasonCode": "Saison1",
    "productCode": "PABLO",
    "nbMaxResults": "5"
}

REST Response

{
  "statusCode": "success",
  "accessControlListData": {
    "paginationEnd": "2022-11-17 13:43:37.698",
    "accessControlListItems": [
      {
        "barcode": "ARC-185795281A2693E256B3972B272841B8",
        "taxNumber": "01040000163",
        "ticketState": "VALID",
        "cancellationCause": "NOT_CANCELLED",
        "validityDays": 0,
        "audienceSubCategoryCode": "ADULT",
        "audienceCategoryKind": "FULL",
        "productId": 466677400,
        "productCode": "C_GUEST",
        "performanceDateTime": "2022-11-08T00:00:00.000+01:00",
        "validityDate": "2022-11-08T00:00:00.000+01:00",
        "holderInfo": {
          "LASTNAME": "",
          "FIRSTNAME": ""
        },
        "endValidityDate": "2022-11-09T00:00:00.000+01:00",
        "reseller": "SECUTIX",
        "fileId": 53
      }

        ...4 products removed for better display...

    ]
  }
}

New REST Request with paginationStart with paginationEnd value to get 5 next products

{
    "listType": "GREY",
    "ticketType": "ALL",
    "seasonCode": "Saison1",
    "productCode": "PABLO",
    "nbMaxResults": "5",
    "paginationStart": "2022-11-17 13:43:37.698"
}

Retreiving Imported Controlled Tickets

SOAP Request

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken Id="UsernameToken-1" wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                <wsse:Username>MOSA_AC</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>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <importControlledTicket xmlns="http://v1_6.ExternalAccessControlService.service.secutix.com">
            <requestId xmlns="">1</requestId>
            <controlledTickets xmlns="">
                <acIdentifier>20190404125800</acIdentifier>
                <barcode>426911618141561514540133</barcode>
                <controlDate>2019-04-03T09:22:15</controlDate>
                <controlResult>OK</controlResult>
                <failureReason>OK</failureReason>
                <gateCode>F</gateCode>
                <sectorCode>W3bas</sectorCode>
            </controlledTickets>
        </importControlledTicket>
    </s:Body>
</s:Envelope>

SOAP Response

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:importControlledTicketResponse xmlns:ns2="http://v1_6.ExternalAccessControlService.service.secutix.com">
            <WebMethodResult>
                <requestId>1</requestId>
                <statusCode>success</statusCode>
                <statusDetail>All controlled tickets are imported successfully.</statusDetail>
            </WebMethodResult>
        </ns2:importControlledTicketResponse>
    </S:Body>
</S:Envelope>

SOAP Request

{
  "requestId": "1",
  "controlledTickets": [
    {
      "acIdentifier": "20190404125800",
      "barcode": "0726250392280725553900000442",
      "controlDate": "2019-04-03T09:22:15",
      "controlResult": "OK",
      "failureReason": "OK",
      "gateCode": "F",
      "sectorCode": "W3bas"
    }
  ]

}

SOAP Response

{
  "statusCode": "success",
  "statusDetail": "All controlled tickets are imported successfully.",
  "requestId": 1
}