{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/nowinfinity/resources/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Environments"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"environments","__idx":0},"children":["Environments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["NowInfinity provides two environments: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Test"]},", a sandbox for building and testing, and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Production"]},", holding live customer data."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each environment has its own credentials and its own hosts. An integration configured for one will not work against the other."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"endpoints","__idx":1},"children":["Endpoints"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["NowInfinity uses two hosts per environment — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.*"]}," for authentication, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["partnerapi.*"]}," for the Partner API. Your OAuth client talks to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.*"]}," host to obtain a token; every API call afterwards goes to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["partnerapi.*"]}," host."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"production","__idx":2},"children":["Production"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Purpose"},"children":["Purpose"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Endpoint"},"children":["Endpoint"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Authorisation"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://auth.nowinfinity.com.au/connect/authorize"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Token"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://auth.nowinfinity.com.au/connect/token"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Partner API"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://partnerapi.nowinfinity.com.au/v1"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test","__idx":3},"children":["Test"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Purpose"},"children":["Purpose"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Endpoint"},"children":["Endpoint"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Authorisation"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://auth.nowinfinity-test.com.au/connect/authorize"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Token"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://auth.nowinfinity-test.com.au/connect/token"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Partner API"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://partnerapi.nowinfinity-test.com.au/v1"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"discovery","__idx":4},"children":["Discovery"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both authorisation servers publish an OpenID Connect discovery document. Rather than hard-coding endpoint URLs, you can read them at runtime:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"https://auth.nowinfinity.com.au/.well-known/openid-configuration\nhttps://auth.nowinfinity-test.com.au/.well-known/openid-configuration\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The discovery document also gives you the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jwks_uri"]},", which is where you retrieve the public keys used to validate token signatures."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"credentials","__idx":5},"children":["Credentials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Credentials are issued per environment and do not carry across."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Test credentials"]}," are issued when your access is approved, so you can begin building."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Production credentials"]}," are issued separately, after your integration passes review."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keep your Test and Production credentials clearly separated in your configuration. Pointing a production deployment at Test credentials — or the reverse — is one of the most common integration failures, and the error it produces (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_client"]},") does not make the cause obvious."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"moving-to-production","__idx":6},"children":["Moving to production"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Promotion to production requires review and approval. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/getting-started/production-readiness"},"children":["Production readiness"]}," for what is assessed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you switch, you need to change:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Both hosts, from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["-test"]}," to production."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your client ID and client secret."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your registered redirect URI, if it differs between environments."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Any account identifiers referenced in your configuration."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Account identifiers differ between Test and Production. Anything hard-coded during development — including account IDs used with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-NI-AccountID"]}," header — will need to change before you go live. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/nowinfinity/resources/child-accounts"},"children":["Accessing child accounts"]},"."]}]}]},"headings":[{"value":"Environments","id":"environments","depth":1},{"value":"Endpoints","id":"endpoints","depth":2},{"value":"Production","id":"production","depth":3},{"value":"Test","id":"test","depth":3},{"value":"Discovery","id":"discovery","depth":2},{"value":"Credentials","id":"credentials","depth":2},{"value":"Moving to production","id":"moving-to-production","depth":2}],"frontmatter":{"title":"Environments","description":"Endpoints and credentials for the NowInfinity Test and Production environments.","seo":{"title":"Environments"}},"lastModified":"2026-10-26T06:25:05.611Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/nowinfinity/resources/environments","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}