{"openapi":"3.0.4","info":{"title":"TIP Internet Portal","description":"This API can be used to generate landing page URL, validate user RN/LN in cloud PMS\nand update internet purchase in PMS.\n\nAll TIP Internet Portal API calls require a Bearer token obtained from the token generation\nendpoint defined in this specification. Clients must:\n\nIn the **Authorize** section, configure both **Basic** and **Bearer** authorization as follows:\n\n 1. First, enter your **Basic auth** credentials and call the token generation endpoint to obtain an access token. \n 2. Then, copy the **Bearer token** from the token endpoint response and set it in the **Bearer auth** configuration. \n 3. Use this Bearer token for all subsequent API requests.\n 4. The token remains valid for the duration, in seconds, specified by the expires_in field in the response\n ","version":"1.0.2"},"servers":[{"url":"https://gatewaydsapuat3.marriott.com"}],"tags":[{"name":"auth","description":"Authorization related endpoints."},{"name":"landing-page","description":"Provides the landing page URL based on request inputs."},{"name":"guest-validation","description":"Validates a given RN/LN against a property in cloud PMS."},{"name":"internet-purchase-update","description":"Updates the user internet plan purchase in cloud PMS."}],"security":[{"BearerAuth":[]}],"paths":{"/v3/ent-auth/sso/token":{"post":{"tags":["auth"],"summary":"Generate access token for TIP Internet Portal APIs.","description":"Generates an access token that must be used as a Bearer token in the `Authorization`\nheader for all subsequent TIP Internet Portal API calls.","security":[{"BasicAuth":[]}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials"],"example":"client_credentials"},"scope":{"type":"string","example":"openid"}},"required":["grant_type","scope"]}}}},"responses":{"200":{"description":"Token successfully generated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"400":{"description":"Invalid request to token endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized. Invalid client credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/partners/v1/internet-portal/landing-page":{"get":{"tags":["landing-page"],"summary":"Returns landing page URL for the user channel.","description":"Get landing page URL for the user channel.","parameters":[{"$ref":"#/components/parameters/CorrelationId"},{"name":"locale","in":"header","required":true,"schema":{"type":"string","example":"fr"}},{"name":"propertyCode","in":"query","required":true,"schema":{"type":"string","minLength":5,"maxLength":5,"example":"nycmq"}},{"name":"zone","in":"query","required":true,"schema":{"type":"string","enum":["GUEST","PUBLIC","CONFERENCE","MEETING","LOBBY"],"example":"GUEST"}},{"name":"L_URL","in":"query","required":true,"schema":{"type":"string","description":"Endpoint to post data to LSP/Gateway."}},{"name":"LR","in":"query","schema":{"type":"string","enum":["AF_AC","AF_MO","AF_AO1","STRICT_AS","STRICT_S","STRICT_A","STRICT_N","TCTC","STRICT_AO"],"description":null,"example":"STRICT_N"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreconnectResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreconnectError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreconnectError"}}}},"401":{"description":"Authorization Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationError"}}}}}}},"/partners/v1/internet-portal/guest-validation":{"post":{"tags":["guest-validation"],"summary":"Validates guest details in cloud PMS and returns member status.","description":"Validates provided guest details in cloud PMS and returns member status.","parameters":[{"$ref":"#/components/parameters/CorrelationId"}],"requestBody":{"description":"Guest details to validate in cloud PMS.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserValidationRequest"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestValidationResponse"}}}},"404":{"description":"Guest details not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authorization Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationError"}}}}}}},"/partners/v1/internet-portal/purchase-update":{"post":{"tags":["internet-purchase-update"],"summary":"Updates PMS with guest internet purchase details.","description":"Updates PMS with guest internet purchase details.","parameters":[{"$ref":"#/components/parameters/CorrelationId"}],"requestBody":{"description":"Internet purchase details to be updated in PMS.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPurchaseRequest"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternetPurchaseUpdate"}}}},"404":{"description":"Guest details not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authorization Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationError"}}}}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"BasicAuth":{"type":"http","scheme":"basic"}},"parameters":{"CorrelationId":{"name":"correlation-id","in":"header","required":true,"schema":{"type":"string"},"description":"Correlation identifier for tracing across services."}},"schemas":{"TokenResponse":{"type":"object","description":"Token response from the Authorization service.","properties":{"access_token":{"type":"string","description":"Access token to be used as Bearer token.","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"token_type":{"type":"string","example":"bearer"},"expires_in":{"type":"integer","description":"Token expiry time in seconds.","example":3600},"scope":{"type":"string","example":"openid"}},"required":["access_token","token_type","expires_in"]},"UserPurchaseRequest":{"type":"object","required":["propertyCode","lastName","roomNumber","duration","currency","price"],"properties":{"propertyCode":{"type":"string","minLength":5,"maxLength":5,"example":"nycmq"},"lastName":{"type":"string","example":"sam"},"roomNumber":{"type":"string","example":101},"duration":{"type":"integer","example":1},"currency":{"type":"string","example":"CHF"},"price":{"type":"number","format":"double","example":41.42},"sp":{"type":"string","example":"plan1"}}},"UserValidationRequest":{"type":"object","required":["propertyCode","lastName","roomNumber","tiers"],"properties":{"roomNumber":{"type":"string"},"lastName":{"type":"string"},"propertyCode":{"type":"string","minLength":5,"maxLength":5,"example":"phxdr"},"tiers":{"type":"string","minLength":2,"maxLength":2,"example":"sp","enum":["sf","sp","fp","pp"]}}},"PreconnectResponse":{"type":"object","required":["status","landingPageURL"],"properties":{"landingPageURL":{"type":"string","format":"uri","example":"https://www.marriott.com/fr/phoenix/nycmq/landingPage?AT=CONNECT&Z=guest&LR=STRICT_N&L_URL=http://httpbin.org/post"},"status":{"type":"string","example":"success"}}},"GuestValidationResponse":{"type":"object","required":["status","memberShipLevel","duration","connectionStatus","purchased"],"properties":{"memberShipLevel":{"type":"string","example":"ELITE","enum":["ELITE","BASIC","Unknown"]},"status":{"type":"string","example":"success"},"duration":{"type":"integer","example":3},"connectionStatus":{"type":"boolean","example":true},"purchased":{"type":"boolean","example":true}}},"InternetPurchaseUpdate":{"type":"object","required":["status","duration"],"properties":{"status":{"type":"string","example":"success"},"duration":{"type":"integer","example":1}}},"Error":{"type":"object","required":["status","code","message"],"properties":{"status":{"type":"string","example":"failed"},"code":{"type":"string"},"message":{"type":"string"}}},"PreconnectError":{"type":"object","required":["status","code","message"],"properties":{"status":{"type":"string","example":"failed"},"code":{"type":"string"},"message":{"type":"string"},"landingPageURI":{"type":"string","format":"uri","example":"https://www.marriott.com/hotel-search.mi?invalidProperty=true"}}},"AuthorizationError":{"type":"object","required":["faultcode","faultstring"],"properties":{"faultcode":{"type":"string","example":"Server"},"faultstring":{"type":"string","example":"1012100 - Credentials invalid or missing."}}}}}}