NAV
JavaScript Go HTTP

Kinde Management API v1

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Welcome to the Kinde management API docs. Most things that can be done in the Kinde admin UI can be done programmatically with this API.

Note: This API can only be used by back-end servers or trusted parties. It is not accessible from the browser.

Requests should be sent with a Content-Type of application/json.

Authentication

Access tokens

You will need a Management API access token to access the Kinde Management API.

If you haven’t already set this up, you’ll need to do these tasks first:

  1. Add a machine-to-machine application in Kinde with Management API access
  2. Use the application to get a Management API access token
  3. Test the connection — we show you how in Postman

Scopes

All requests are authenticated with JWTs. The Management API access token’s scope claim indicates which request methods can be performed when calling this API.

For example, this deserialized token grants read-only access to users, and read/write access to applications:

{
  "aud": [
    "https://{your_subdomain}.kinde.com/api"
  ],
  "iat": 1724044596,
  "jti": "c1c265fe-c7cc-4c33-857f-9d1cb7782668",
  "scope": "create:applications read:applications read:users"
}

Trying to call any request method not permitted within the set scopes will result in a 403 Forbidden response along with details of the scope required to access.

Limits

The following limits apply to API calls

If this affects your integrations and you require an extended period with a higher limit please get in touch. This API can only be used by back-end servers or trusted parties. It is not accessible from the browser.

Base URLs

Make sure you use your own Kinde domain as the base URL wherever you see http://{your_subdomain}.kinde.com.

To find this in Kinde, go to Settings > Applications > View details (on the relevant app) and copy it from the App keys > Domain field.

Note: custom domains cannot currently be used with this API.

Need more help?

Authentication

Kinde management API

To access endpoints in the Kinde management API, you need to go through the three set up steps above.

Kinde authentication frontend API

To access the OAuth endpoint, you will need to use a user token. This can be obtained when your users sign in via the methods you've setup in Kinde (e.g. Google, passwordless, etc). Find this using the getToken command in the relevant SDK.

OAuth

Get user profile

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/oauth2/v2/user_profile',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/oauth2/v2/user_profile", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/oauth2/v2/user_profile HTTP/1.1

Accept: application/json

GET /oauth2/v2/user_profile

This endpoint returns a user's ID, names, profile picture URL and email of the currently logged in user.

Example responses

200 Response

{
  "sub": "kp_c3143a4b50ad43c88e541d9077681782",
  "provided_id": "some_external_id",
  "name": "John Snow",
  "given_name": "John",
  "family_name": "Snow",
  "updated_at": 1612345678,
  "email": "john.snow@example.com",
  "email_verified": true,
  "picture": "https://example.com/john_snow.jpg",
  "preferred_username": "john_snow",
  "id": "kp_c3143a4b50ad43c88e541d9077681782"
}

Responses

Status Meaning Description Schema
200 OK Details of logged in user. user_profile_v2
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Get token details

Code samples

const inputBody = '{
  "token": "string",
  "token_type": "string"
}';
const headers = {
  'Content-Type':'application/x-www-form-urlencoded',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/oauth2/introspect',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/x-www-form-urlencoded"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/oauth2/introspect", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/oauth2/introspect HTTP/1.1

Content-Type: application/x-www-form-urlencoded
Accept: application/json

POST /oauth2/introspect

Retrieve information about the provided token.

Body parameter

token: string
token_type: string

Parameters

Name In Type Required Description
body body object true Token details.
» token body string false The token to be introspected.
» token_type body string false The provided token's type.

Example responses

200 Response

{
  "active": true,
  "aud": [
    "string"
  ],
  "client_id": "string",
  "exp": "string",
  "iat": "string"
}

Responses

Status Meaning Description Schema
200 OK Details of the token. token_introspect
401 Unauthorized Bad request. token_error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Revoke token

Code samples

const inputBody = '{
  "token": "string",
  "client_id": "string",
  "client_secret": "string"
}';
const headers = {
  'Content-Type':'application/x-www-form-urlencoded',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/oauth2/revoke',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/x-www-form-urlencoded"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/oauth2/revoke", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/oauth2/revoke HTTP/1.1

Content-Type: application/x-www-form-urlencoded
Accept: application/json

POST /oauth2/revoke

Revoke a previously issued token.

Body parameter

token: string
client_id: string
client_secret: string

Parameters

Name In Type Required Description
body body object true Details of the token to be revoked.
» token body string false The token to be revoked.
» client_id body string false The identifier for your client.
» client_secret body string false The secret associated with your client.

Example responses

401 Response

{
  "error": "string",
  "error_description": "string"
}

Responses

Status Meaning Description Schema
200 OK Token successfully revoked. None
401 Unauthorized Bad request. token_error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

APIs

Get APIs

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/apis',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/apis", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/apis HTTP/1.1

Accept: application/json

GET /api/v1/apis

Returns a list of your APIs. The APIs are returned sorted by name.

read:apis

Example responses

200 Response

{
  "code": "OK",
  "message": "Success",
  "next_token": "Njo5Om1hvWVfYXNj",
  "apis": [
    {
      "id": "7ccd126599aa422a771abcb341596881",
      "name": "Example API",
      "audience": "https://api.example.com",
      "is_management_api": false
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A list of APIs. get_apis_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Create API

Code samples

const inputBody = '{
  "name": "Example API",
  "audience": "https://api.example.com"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/apis',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/apis", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/apis HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/apis

Register a new API. For more information read Register and manage APIs.

create:apis

Body parameter

{
  "name": "Example API",
  "audience": "https://api.example.com"
}

Parameters

Name In Type Required Description
body body object true none
» name body string true The name of the API. (1-64 characters).
» audience body string true A unique identifier for the API - commonly the URL. This value will be used as the audience parameter in authorization claims. (1-64 characters)

Example responses

200 Response

{
  "message": "Success",
  "code": "OK",
  "api": {
    "id": "7ccd126599aa422a771abcb341596881"
  }
}

Responses

Status Meaning Description Schema
200 OK APIs successfully updated create_apis_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get API

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/apis/{api_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/apis/{api_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/apis/{api_id} HTTP/1.1

Accept: application/json

GET /api/v1/apis/{api_id}

Retrieve API details by ID.

read:apis

Parameters

Name In Type Required Description
api_id path string true The API's ID.

Example responses

200 Response

{
  "code": "OK",
  "message": "success_response",
  "api": {
    "id": "7ccd126599aa422a771abcb341596881",
    "name": "Example API",
    "audience": "https://api.example.com",
    "is_management_api": false,
    "applications": [
      {
        "id": "3b0b5c6c8fcc464fab397f4969b5f482",
        "name": "My M2M app",
        "type": "Machine to machine (M2M)",
        "is_active": true
      }
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK API successfully retrieved. get_api_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Delete API

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/apis/{api_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/apis/{api_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/apis/{api_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/apis/{api_id}

Delete an API you previously created.

delete:apis

Parameters

Name In Type Required Description
api_id path string true The API's ID.

Example responses

200 Response

{
  "message": "API successfully deleted",
  "code": "API_DELETED"
}

Responses

Status Meaning Description Schema
200 OK API successfully deleted. delete_api_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Authorize API applications

Code samples

const inputBody = '{
  "applications": [
    {
      "id": "d2db282d6214242b3b145c123f0c123",
      "operation": "delete"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/apis/{api_id}/applications',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/apis/{api_id}/applications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/apis/{api_id}/applications HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/apis/{api_id}/applications

Authorize applications to be allowed to request access tokens for an API

update:apis

Body parameter

{
  "applications": [
    {
      "id": "d2db282d6214242b3b145c123f0c123",
      "operation": "delete"
    }
  ]
}

Parameters

Name In Type Required Description
body body object true The applications you want to authorize.
» applications body [object] true none
»» id body string true The application's Client ID.
»» operation body string false Optional operation, set to 'delete' to revoke authorization for the application. If not set, the application will be authorized.
api_id path string true The API's ID.

Example responses

200 Response

{
  "message": "API applications updated",
  "code": "API_APPLICATIONS_UPDATED",
  "applications_disconnected": [
    "string"
  ],
  "applications_connected": [
    "d2db282d6214242b3b145c123f0c123"
  ]
}

Responses

Status Meaning Description Schema
200 OK Authorized applications updated. authorize_app_api_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Applications

Get applications

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/applications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/applications HTTP/1.1

Accept: application/json

GET /api/v1/applications

Get a list of applications / clients.

read:applications

Parameters

Name In Type Required Description
sort query string false Field and order to sort the result by.
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
next_token query string false A string to get the next page of results if there are more results.

Enumerated Values

Parameter Value
sort name_asc
sort name_desc

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "applications": [
    {
      "id": "string",
      "name": "string",
      "type": "string"
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response with a list of applications or an empty list. get_applications_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Create application

Code samples

const inputBody = '{
  "name": "React Native app",
  "type": "reg"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/applications", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/applications HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/applications

Create a new client.

create:applications

Body parameter

{
  "name": "React Native app",
  "type": "reg"
}

Parameters

Name In Type Required Description
body body object true none
» name body string true The application's name.
» type body string true The application's type. Use reg for regular server rendered applications, spa for single-page applications, and m2m for machine-to-machine applications.

Enumerated Values

Parameter Value
» type reg
» type spa
» type m2m

Example responses

201 Response

{
  "code": "string",
  "message": "string",
  "application": {
    "id": "string",
    "client_id": "string",
    "client_secret": "string"
  }
}

Responses

Status Meaning Description Schema
201 Created Application successfully created. create_application_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get application

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/applications/{application_id} HTTP/1.1

Accept: application/json

GET /api/v1/applications/{application_id}

Gets an application given the application's ID.

read:applications

Parameters

Name In Type Required Description
application_id path string true The identifier for the application.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "application": {
    "id": "string",
    "name": "string",
    "type": "string",
    "client_id": "string",
    "client_secret": "string",
    "login_uri": "string",
    "homepage_uri": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK Application successfully retrieved. get_application_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update Application

Code samples

const inputBody = '{
  "name": "string",
  "language_key": "string",
  "logout_uris": [
    "string"
  ],
  "redirect_uris": [
    "string"
  ],
  "login_uri": "string",
  "homepage_uri": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/applications/{application_id} HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/applications/{application_id}

Updates a client's settings. For more information, read Applications in Kinde

update:applications

Body parameter

{
  "name": "string",
  "language_key": "string",
  "logout_uris": [
    "string"
  ],
  "redirect_uris": [
    "string"
  ],
  "login_uri": "string",
  "homepage_uri": "string"
}

Parameters

Name In Type Required Description
application_id path string true The identifier for the application.
body body object false Application details.
» name body string false The application's name.
» language_key body string false The application's language key.
» logout_uris body [string] false The application's logout uris.
» redirect_uris body [string] false The application's redirect uris.
» login_uri body string false The default login route for resolving session issues.
» homepage_uri body string false The homepage link to your application.

Example responses

400 Response

{
  "errors": [
    {
      "code": "string",
      "message": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Application successfully updated. None
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Delete application

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/applications/{application_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/applications/{application_id}

Delete a client / application.

delete:applications

Parameters

Name In Type Required Description
application_id path string true The identifier for the application.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Application successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get connections

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections HTTP/1.1

Accept: application/json

GET /api/v1/applications/{application_id}/connections

Gets all connections for an application.

read:application_connections

Parameters

Name In Type Required Description
application_id path string true The identifier/client ID for the application.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "connections": [
    {
      "id": "string",
      "name": "string",
      "display_name": "string",
      "strategy": "string"
    }
  ],
  "has_more": true
}

Responses

Status Meaning Description Schema
200 OK Application connections successfully retrieved. get_connections_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Enable connection

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections/{connection_id}',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections/{connection_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections/{connection_id} HTTP/1.1

Accept: application/json

POST /api/v1/applications/{application_id}/connections/{connection_id}

Enable an auth connection for an application.

create:application_connections

Parameters

Name In Type Required Description
application_id path string true The identifier/client ID for the application.
connection_id path string true The identifier for the connection.

Example responses

400 Response

{
  "errors": [
    {
      "code": "string",
      "message": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Connection successfully enabled. None
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Remove connection

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections/{connection_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections/{connection_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/applications/{application_id}/connections/{connection_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/applications/{application_id}/connections/{connection_id}

Turn off an auth connection for an application

delete:application_connections

Parameters

Name In Type Required Description
application_id path string true The identifier/client ID for the application.
connection_id path string true The identifier for the connection.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Connection successfully removed. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get property values

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}/properties',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}/properties", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/applications/{application_id}/properties HTTP/1.1

Accept: application/json

GET /api/v1/applications/{application_id}/properties

Gets properties for an application by client ID.

read:application_properties

Parameters

Name In Type Required Description
application_id path string true The application's ID / client ID.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "properties": [
    {
      "id": "prop_0192b7e8b4f8ca08110d2b22059662a8",
      "name": "Town",
      "description": "Where the entity is located",
      "key": "kp_town",
      "value": "West-side Staines massive"
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Properties successfully retrieved. get_property_values_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update property

Code samples

const inputBody = '{
  "value": "Some new value"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{application_id}/properties/{property_key}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/applications/{application_id}/properties/{property_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/applications/{application_id}/properties/{property_key} HTTP/1.1

Content-Type: application/json
Accept: application/json

PUT /api/v1/applications/{application_id}/properties/{property_key}

Update application property value.

update:application_properties

Body parameter

{
  "value": "Some new value"
}

Parameters

Name In Type Required Description
body body object true none
» value body any true The new value for the propery
»» anonymous body string false none
»» anonymous body boolean false none
application_id path string true The application's ID / client ID.
property_key path string true The property's key.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Property successfully updated success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Business

Get business

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/business',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/business", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/business HTTP/1.1

Accept: application/json

GET /api/v1/business

Get your business details.

read:businesses

Example responses

200 Response

{
  "code": "OK",
  "message": "Success",
  "business": {
    "code": "bus_c69fb73b091",
    "name": "Tailsforce Ltd",
    "phone": "555-555-5555",
    "email": "sally@example.com",
    "industry": "Healthcare & Medical",
    "timezone": "Los Angeles (Pacific Standard Time)",
    "privacy_url": "https://example.com/privacy",
    "terms_url": "https://example.com/terms"
  }
}

Responses

Status Meaning Description Schema
200 OK Your business details. get_business_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update business

Code samples

const inputBody = '{
  "business_name": "Tailsforce Ltd",
  "email": "sally@example.com",
  "industry_key": "construction",
  "is_click_wrap": false,
  "is_show_kinde_branding": true,
  "kinde_perk_code": "string",
  "phone": "123-456-7890",
  "privacy_url": "https://example.com/privacy",
  "terms_url": "https://example.com/terms",
  "timezone_key": "los_angeles_pacific_standard_time"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/business',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/business", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/business HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/business

Update your business details.

update:businesses

Body parameter

{
  "business_name": "Tailsforce Ltd",
  "email": "sally@example.com",
  "industry_key": "construction",
  "is_click_wrap": false,
  "is_show_kinde_branding": true,
  "kinde_perk_code": "string",
  "phone": "123-456-7890",
  "privacy_url": "https://example.com/privacy",
  "terms_url": "https://example.com/terms",
  "timezone_key": "los_angeles_pacific_standard_time"
}

Parameters

Name In Type Required Description
body body object true The business details to update.
» business_name body string¦null false The name of the business.
» email body string¦null false The email address of the business.
» industry_key body string¦null false The key of the industry of your business. Can be retrieved from the /industries endpoint.
» is_click_wrap body boolean¦null false Whether the business is using clickwrap agreements.
» is_show_kinde_branding body boolean¦null false Whether the business is showing Kinde branding. Requires a paid plan.
» kinde_perk_code body string¦null false The Kinde perk code for the business.
» phone body string¦null false The phone number of the business.
» privacy_url body string¦null false The URL to the business's privacy policy.
» terms_url body string¦null false The URL to the business's terms of service.
» timezone_key body string¦null false The key of the timezone of your business. Can be retrieved from the /timezones endpoint.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Business successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Industries

Get industries

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/industries',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/industries", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/industries HTTP/1.1

Accept: application/json

GET /api/v1/industries

Get a list of industries and associated industry keys.

read:industries

Example responses

200 Response

{
  "code": "OK",
  "message": "Success",
  "industries": [
    {
      "key": "administration_office_support",
      "name": "Administration & Office Support"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A list of industries. get_industries_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Timezones

Get timezones

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/timezones',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/timezones", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/timezones HTTP/1.1

Accept: application/json

GET /api/v1/timezones

Get a list of timezones and associated timezone keys.

read:timezones

Example responses

200 Response

{
  "code": "OK",
  "message": "Success",
  "timezones": [
    {
      "key": "london_greenwich_mean_time",
      "name": "London (Greenwich Mean Time) [+01:00]"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A list of timezones. get_timezones_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Callbacks

List Callback URLs

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls HTTP/1.1

Accept: application/json

GET /api/v1/applications/{app_id}/auth_redirect_urls

Returns an application's redirect callback URLs.

read:applications_redirect_uris

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.

Example responses

200 Response

{
  "redirect_urls": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK Callback URLs successfully retrieved. redirect_callback_urls
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Add Redirect Callback URLs

Code samples

const inputBody = '{
  "urls": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls HTTP/1.1

Content-Type: application/json
Accept: application/json; charset=utf-8

POST /api/v1/applications/{app_id}/auth_redirect_urls

Add additional redirect callback URLs.

create:applications_redirect_uris

Body parameter

{
  "urls": [
    "string"
  ]
}

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.
body body object true Callback details.
» urls body [string] false Array of callback urls.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Callbacks successfully updated success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Replace Redirect Callback URLs

Code samples

const inputBody = '{
  "urls": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls HTTP/1.1

Content-Type: application/json
Accept: application/json; charset=utf-8

PUT /api/v1/applications/{app_id}/auth_redirect_urls

Replace all redirect callback URLs.

update:applications_redirect_uris

Body parameter

{
  "urls": [
    "string"
  ]
}

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.
body body object true Callback details.
» urls body [string] false Array of callback urls.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Callbacks successfully updated success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Callback URLs

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls?urls=string',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_redirect_urls?urls=string HTTP/1.1

Accept: application/json

DELETE /api/v1/applications/{app_id}/auth_redirect_urls

Delete callback URLs.

delete:applications_redirect_uris

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.
urls query string true Urls to delete, comma separated and url encoded.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Callback URLs successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

List logout URLs

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls HTTP/1.1

Accept: application/json

GET /api/v1/applications/{app_id}/auth_logout_urls

Returns an application's logout redirect URLs.

read:application_logout_uris

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.

Example responses

200 Response

{
  "logout_urls": [
    "string"
  ],
  "code": "OK",
  "message": "Success"
}

Responses

Status Meaning Description Schema
200 OK Logout URLs successfully retrieved. logout_redirect_urls
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Add logout redirect URLs

Code samples

const inputBody = '{
  "urls": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/applications/{app_id}/auth_logout_urls

Add additional logout redirect URLs.

create:application_logout_uris

Body parameter

{
  "urls": [
    "string"
  ]
}

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.
body body object true Callback details.
» urls body [string] false Array of logout urls.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Logout URLs successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Replace logout redirect URls

Code samples

const inputBody = '{
  "urls": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls HTTP/1.1

Content-Type: application/json
Accept: application/json

PUT /api/v1/applications/{app_id}/auth_logout_urls

Replace all logout redirect URLs.

update:application_logout_uris

Body parameter

{
  "urls": [
    "string"
  ]
}

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.
body body object true Callback details.
» urls body [string] false Array of logout urls.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Logout URLs successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Delete Logout URLs

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls?urls=string',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/applications/{app_id}/auth_logout_urls?urls=string HTTP/1.1

Accept: application/json

DELETE /api/v1/applications/{app_id}/auth_logout_urls

Delete logout URLs.

delete:application_logout_uris

Parameters

Name In Type Required Description
app_id path string true The identifier for the application.
urls query string true Urls to delete, comma separated and url encoded.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Logout URLs successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Connected Apps

Get Connected App URL

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connected_apps/auth_url?key_code_ref=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/connected_apps/auth_url", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/connected_apps/auth_url?key_code_ref=string HTTP/1.1

Accept: application/json

GET /api/v1/connected_apps/auth_url

Get a URL that authenticates and authorizes a user to a third-party connected app.

read:connected_apps

Parameters

Name In Type Required Description
key_code_ref query string true The unique key code reference of the connected app to authenticate against.
user_id query string false The id of the user that needs to authenticate to the third-party connected app.
org_code query string false The code of the Kinde organization that needs to authenticate to the third-party connected app.
override_callback_url query string false A URL that overrides the default callback URL setup in your connected app configuration

Example responses

200 Response

{
  "url": "string",
  "session_id": "string"
}

Responses

Status Meaning Description Schema
200 OK A URL that can be used to authenticate and a session id to identify this authentication session. connected_apps_auth_url
400 Bad Request Error retrieving connected app auth url. error_response
403 Forbidden Invalid credentials. None
404 Not Found Error retrieving connected app auth url. error_response
429 Too Many Requests Request was throttled. None

Get Connected App Token

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connected_apps/token?session_id=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/connected_apps/token", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/connected_apps/token?session_id=string HTTP/1.1

Accept: application/json

GET /api/v1/connected_apps/token

Get an access token that can be used to call the third-party provider linked to the connected app.

read:connected_apps

Parameters

Name In Type Required Description
session_id query string true The unique sesssion id representing the login session of a user.

Example responses

200 Response

{
  "access_token": "string",
  "access_token_expiry": "string"
}

Responses

Status Meaning Description Schema
200 OK An access token that can be used to query a third-party provider, as well as the token's expiry time. connected_apps_access_token
400 Bad Request The session id provided points to an invalid session. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Revoke Connected App Token

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connected_apps/revoke?session_id=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/connected_apps/revoke", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/connected_apps/revoke?session_id=string HTTP/1.1

Accept: application/json

POST /api/v1/connected_apps/revoke

Revoke the tokens linked to the connected app session.

create:connected_apps

Parameters

Name In Type Required Description
session_id query string true The unique sesssion id representing the login session of a user.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK An access token that can be used to query a third-party provider, as well as the token's expiry time. success_response
400 Bad Request Bad request. error_response
403 Forbidden Invalid credentials. error_response
405 Method Not Allowed Invalid HTTP method used. None
429 Too Many Requests Request was throttled. None

Connections

List Connections

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connections',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/connections", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/connections HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/connections

Returns a list of Connections

read:connections

Parameters

Name In Type Required Description
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
starting_after query string false The ID of the connection to start after.
ending_before query string false The ID of the connection to end before.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "connections": [
    {
      "id": "string",
      "name": "string",
      "display_name": "string",
      "strategy": "string"
    }
  ],
  "has_more": true
}

Responses

Status Meaning Description Schema
200 OK Connections successfully retrieved. get_connections_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Create Connection

Code samples

const inputBody = '{
  "name": "string",
  "display_name": "string",
  "strategy": "oauth2:apple",
  "enabled_applications": [
    "string"
  ],
  "options": {}
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connections',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/connections", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/connections HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/connections

Create Connection.

create:connections

Body parameter

{
  "name": "string",
  "display_name": "string",
  "strategy": "oauth2:apple",
  "enabled_applications": [
    "string"
  ],
  "options": {}
}

Parameters

Name In Type Required Description
body body object true Connection details.
» name body string true The internal name of the connection.
» display_name body string true The public facing name of the connection.
» strategy body string true The identity provider identifier for the connection.
» enabled_applications body [string] false Client IDs of applications in which this connection is to be enabled.
» options body object false The connection's options (varies by strategy).

Enumerated Values

Parameter Value
» strategy oauth2:apple
» strategy oauth2:azure_ad
» strategy oauth2:bitbucket
» strategy oauth2:discord
» strategy oauth2:facebook
» strategy oauth2:github
» strategy oauth2:gitlab
» strategy oauth2:google
» strategy oauth2:linkedin
» strategy oauth2:microsoft
» strategy oauth2:patreon
» strategy oauth2:slack
» strategy oauth2:stripe
» strategy oauth2:twitch
» strategy oauth2:twitter
» strategy oauth2:xero
» strategy saml:custom
» strategy wsfed:azure_ad

Example responses

201 Response

{
  "message": "string",
  "code": "string",
  "connection": {
    "id": "string"
  }
}

Responses

Status Meaning Description Schema
201 Created Connection successfully created create_connection_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Get Connection

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connections/{connection_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/connections/{connection_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/connections/{connection_id} HTTP/1.1

Accept: application/json

GET /api/v1/connections/{connection_id}

Get Connection.

read:connections

Parameters

Name In Type Required Description
connection_id path string true The unique identifier for the connection.

Example responses

200 Response

{
  "id": "string",
  "name": "string",
  "display_name": "string",
  "strategy": "string"
}

Responses

Status Meaning Description Schema
200 OK Connection successfully retrieved. connection
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Connection

Code samples

const inputBody = '{
  "name": "string",
  "display_name": "string",
  "enabled_applications": [
    "string"
  ],
  "options": {}
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connections/{connection_id}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/connections/{connection_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/connections/{connection_id} HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/connections/{connection_id}

Update Connection.

update:connections

Body parameter

{
  "name": "string",
  "display_name": "string",
  "enabled_applications": [
    "string"
  ],
  "options": {}
}

Parameters

Name In Type Required Description
connection_id path string true The unique identifier for the connection.
body body object true The fields of the connection to update.
» name body string false The internal name of the connection.
» display_name body string false The public facing name of the connection.
» enabled_applications body [string] false Client IDs of applications in which this connection is to be enabled.
» options body object false The connection's options (varies by strategy).

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Connection successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Connection

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/connections/{connection_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/connections/{connection_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/connections/{connection_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/connections/{connection_id}

Delete connection.

delete:connections

Parameters

Name In Type Required Description
connection_id path string true The identifier for the connection.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Connection deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Environments

Delete Environment Feature Flag Overrides

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment/feature_flags',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/environment/feature_flags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/environment/feature_flags HTTP/1.1

Accept: application/json

DELETE /api/v1/environment/feature_flags

Delete all environment feature flag overrides.

delete:environment_feature_flags

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag overrides deleted successfully. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

List Environment Feature Flags

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment/feature_flags',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/environment/feature_flags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/environment/feature_flags HTTP/1.1

Accept: application/json

GET /api/v1/environment/feature_flags

Get environment feature flags.

read:environment_feature_flags

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "feature_flags": {
    "property1": {
      "type": "str",
      "value": "string"
    },
    "property2": {
      "type": "str",
      "value": "string"
    }
  },
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Feature flags retrieved successfully. get_environment_feature_flags_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Environment Feature Flag Override

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment/feature_flags/{feature_flag_key}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/environment/feature_flags/{feature_flag_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/environment/feature_flags/{feature_flag_key} HTTP/1.1

Accept: application/json

DELETE /api/v1/environment/feature_flags/{feature_flag_key}

Delete environment feature flag override.

delete:environment_feature_flags

Parameters

Name In Type Required Description
feature_flag_key path string true The identifier for the feature flag.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag deleted successfully. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Environment Feature Flag Override

Code samples

const inputBody = '{
  "value": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment/feature_flags/{feature_flag_key}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/environment/feature_flags/{feature_flag_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/environment/feature_flags/{feature_flag_key} HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/environment/feature_flags/{feature_flag_key}

Update environment feature flag override.

update:environment_feature_flags

Body parameter

{
  "value": "string"
}

Parameters

Name In Type Required Description
feature_flag_key path string true The identifier for the feature flag.
body body object true Flag details.
» value body string true The flag override value.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag override successful success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Environment variables

Get environment variables

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment_variables',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/environment_variables", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/environment_variables HTTP/1.1

Accept: application/json

GET /api/v1/environment_variables

Get environment variables. This feature is in beta and admin UI is not yet available.

read:environment_variables

Example responses

200 Response

{
  "code": "OK",
  "message": "Success",
  "has_more": true,
  "environment_variables": [
    {
      "id": "env_var_0192b1941f125645fa15bf28a662a0b3",
      "key": "MY_API_KEY",
      "value": "some-secret",
      "is_secret": false,
      "created_on": "2021-01-01T00:00:00Z"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A successful response with a list of environment variables or an empty list. get_environment_variables_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Create environment variable

Code samples

const inputBody = '{
  "key": "MY_API_KEY",
  "value": "some-secret-value",
  "is_secret": false
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment_variables',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/environment_variables", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/environment_variables HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/environment_variables

Create a new environment variable. This feature is in beta and admin UI is not yet available.

create:environment_variables

Body parameter

{
  "key": "MY_API_KEY",
  "value": "some-secret-value",
  "is_secret": false
}

Parameters

Name In Type Required Description
body body object true The environment variable details.
» key body string true The name of the environment variable (max 128 characters).
» value body string true The value of the new environment variable (max 2048 characters).
» is_secret body boolean false Whether the environment variable is sensitive. Secrets are not-readable by you or your team after creation.

Example responses

201 Response

{
  "message": "Environment variable created",
  "code": "VARIABLE_CREATED",
  "environment_variable": {
    "id": "env_var_0192b194f6156fb7452fe38cfb144958"
  }
}

Responses

Status Meaning Description Schema
201 Created Environment variable successfully created. create_environment_variable_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get environment variable

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id} HTTP/1.1

Accept: application/json

GET /api/v1/environment_variables/{variable_id}

Retrieve environment variable details by ID. This feature is in beta and admin UI is not yet available.

read:environment_variables

Parameters

Name In Type Required Description
variable_id path string true The environment variable's ID.

Example responses

200 Response

{
  "code": "OK",
  "message": "Success",
  "environment_variable": {
    "id": "env_var_0192b1941f125645fa15bf28a662a0b3",
    "key": "MY_API_KEY",
    "value": "some-secret",
    "is_secret": false,
    "created_on": "2021-01-01T00:00:00Z"
  }
}

Responses

Status Meaning Description Schema
200 OK Environment variable successfully retrieved. get_environment_variable_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update environment variable

Code samples

const inputBody = '{
  "key": "MY_API_KEY",
  "value": "new-secret-value",
  "is_secret": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id} HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/environment_variables/{variable_id}

Update an environment variable you previously created. This feature is in beta and admin UI is not yet available.

update:environment_variables

Body parameter

{
  "key": "MY_API_KEY",
  "value": "new-secret-value",
  "is_secret": true
}

Parameters

Name In Type Required Description
body body object true The new details for the environment variable
» key body string false The key to update.
» value body string false The new value for the environment variable.
» is_secret body boolean false Whether the environment variable is sensitive. Secret variables are not-readable by you or your team after creation.
variable_id path string true The environment variable's ID.

Example responses

200 Response

{
  "message": "Environment variable updated",
  "code": "ENVIRONMENT_VARIABLE_UPDATED"
}

Responses

Status Meaning Description Schema
200 OK Environment variable successfully updated. update_environment_variable_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Delete environment variable

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/environment_variables/{variable_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/environment_variables/{variable_id}

Delete an environment variable you previously created. This feature is in beta and admin UI is not yet available.

delete:environment_variables

Parameters

Name In Type Required Description
variable_id path string true The environment variable's ID.

Example responses

200 Response

{
  "message": "Environment variable deleted",
  "code": "ENVIRONMENT_VARIABLE_DELETED"
}

Responses

Status Meaning Description Schema
200 OK Environment variable successfully deleted. delete_environment_variable_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Feature Flags

Create Feature Flag

Code samples

const inputBody = '{
  "name": "string",
  "description": "string",
  "key": "string",
  "type": "str",
  "allow_override_level": "env",
  "default_value": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/feature_flags',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/feature_flags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/feature_flags HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/feature_flags

Create feature flag.

create:feature_flags

Body parameter

{
  "name": "string",
  "description": "string",
  "key": "string",
  "type": "str",
  "allow_override_level": "env",
  "default_value": "string"
}

Parameters

Name In Type Required Description
body body object true Flag details.
» name body string true The name of the flag.
» description body string false Description of the flag purpose.
» key body string true The flag identifier to use in code.
» type body string true The variable type.
» allow_override_level body string false Allow the flag to be overridden at a different level.
» default_value body string true Default value for the flag used by environments and organizations.

Enumerated Values

Parameter Value
» type str
» type int
» type bool
» allow_override_level env
» allow_override_level org
» allow_override_level usr

Example responses

201 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
201 Created Feature flag successfully created success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Feature Flag

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/feature_flags/{feature_flag_key}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/feature_flags/{feature_flag_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/feature_flags/{feature_flag_key} HTTP/1.1

Accept: application/json

DELETE /api/v1/feature_flags/{feature_flag_key}

Delete feature flag

delete:feature_flags

Parameters

Name In Type Required Description
feature_flag_key path string true The identifier for the feature flag.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Replace Feature Flag

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/feature_flags/{feature_flag_key}?name=string&description=string&type=str&allow_override_level=env&default_value=string',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/feature_flags/{feature_flag_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/feature_flags/{feature_flag_key}?name=string&description=string&type=str&allow_override_level=env&default_value=string HTTP/1.1

Accept: application/json

PUT /api/v1/feature_flags/{feature_flag_key}

Update feature flag.

update:feature_flags

Parameters

Name In Type Required Description
feature_flag_key path string true The key identifier for the feature flag.
name query string true The name of the flag.
description query string true Description of the flag purpose.
type query string true The variable type
allow_override_level query string true Allow the flag to be overridden at a different level.
default_value query string true Default value for the flag used by environments and organizations.

Enumerated Values

Parameter Value
type str
type int
type bool
allow_override_level env
allow_override_level org

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Identities

Get identity

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/identities/{identity_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/identities/{identity_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/identities/{identity_id} HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/identities/{identity_id}

Returns an identity by ID

read:identities

Parameters

Name In Type Required Description
identity_id path string true The unique identifier for the identity.

Example responses

200 Response

{
  "id": "string",
  "type": "string",
  "is_confirmed": true,
  "created_on": "string",
  "last_login_on": "string",
  "total_logins": 0,
  "name": "string"
}

Responses

Status Meaning Description Schema
200 OK Identity successfully retrieved. identity
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Update identity

Code samples

const inputBody = '{
  "is_primary": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/identities/{identity_id}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/identities/{identity_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/identities/{identity_id} HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/identities/{identity_id}

Update identity by ID.

update:identities

Body parameter

{
  "is_primary": true
}

Parameters

Name In Type Required Description
identity_id path string true The unique identifier for the identity.
body body object true The fields of the identity to update.
» is_primary body boolean false Whether the identity is the primary for it's type

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Identity successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete identity

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/identities/{identity_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/identities/{identity_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/identities/{identity_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/identities/{identity_id}

Delete identity by ID.

delete:identities

Parameters

Name In Type Required Description
identity_id path string true The unique identifier for the identity.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Identity successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Organizations

Get organization

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organization',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/organization", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/organization HTTP/1.1

Accept: application/json

GET /api/v1/organization

Retrieve organization details by code.

read:organizations

Parameters

Name In Type Required Description
code query string false The organization's code.

Example responses

200 Response

{
  "code": "org_1ccfb819462",
  "name": "Acme Corp",
  "handle": "acme_corp",
  "is_default": false,
  "external_id": "some1234",
  "is_auto_membership_enabled": true,
  "logo": "string",
  "link_color": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "background_color": {
    "raw": "#ffffff",
    "hex": "#ffffff",
    "hsl": "hsl(0, 0%, 100%)"
  },
  "button_color": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "button_text_color": {
    "raw": "#ffffff",
    "hex": "#ffffff",
    "hsl": "hsl(0, 0%, 100%)"
  },
  "link_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "background_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "button_text_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "button_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "is_allow_registrations": true
}

Responses

Status Meaning Description Schema
200 OK Organization successfully retrieved. get_organization_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Create organization

Code samples

const inputBody = '{
  "name": "Acme Corp",
  "feature_flags": {
    "property1": "str",
    "property2": "str"
  },
  "external_id": "some1234",
  "background_color": "string",
  "button_color": "string",
  "button_text_color": "string",
  "link_color": "string",
  "background_color_dark": "string",
  "button_color_dark": "string",
  "button_text_color_dark": "string",
  "link_color_dark": "string",
  "theme_code": "string",
  "handle": "acme_corp",
  "is_allow_registrations": true,
  "is_custom_auth_connections_enabled": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organization',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/organization", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/organization HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/organization

Create a new organization. To learn more read about multi tenancy using organizations

create:organizations

Body parameter

{
  "name": "Acme Corp",
  "feature_flags": {
    "property1": "str",
    "property2": "str"
  },
  "external_id": "some1234",
  "background_color": "string",
  "button_color": "string",
  "button_text_color": "string",
  "link_color": "string",
  "background_color_dark": "string",
  "button_color_dark": "string",
  "button_text_color_dark": "string",
  "link_color_dark": "string",
  "theme_code": "string",
  "handle": "acme_corp",
  "is_allow_registrations": true,
  "is_custom_auth_connections_enabled": true
}

Parameters

Name In Type Required Description
body body object true Organization details.
» name body string true The organization's name.
» feature_flags body object false The organization's feature flag settings.
»» additionalProperties body string false Value of the feature flag.
» external_id body string false The organization's external identifier - commonly used when migrating from or mapping to other systems.
» background_color body string false The organization's brand settings - background color.
» button_color body string false The organization's brand settings - button color.
» button_text_color body string false The organization's brand settings - button text color.
» link_color body string false The organization's brand settings - link color.
» background_color_dark body string false The organization's brand settings - dark mode background color.
» button_color_dark body string false The organization's brand settings - dark mode button color.
» button_text_color_dark body string false The organization's brand settings - dark mode button text color.
» link_color_dark body string false The organization's brand settings - dark mode link color.
» theme_code body string false The organization's brand settings - theme/mode 'light'
» handle body string false A unique handle for the organization - can be used for dynamic callback urls.
» is_allow_registrations body boolean false If users become members of this organization when the org code is supplied during authentication.
» is_custom_auth_connections_enabled body boolean false Enable custom auth connections for this organization.

Enumerated Values

Parameter Value
»» additionalProperties str
»» additionalProperties int
»» additionalProperties bool

Example responses

200 Response

{
  "message": "Success",
  "code": "OK",
  "organization": {
    "code": "org_1ccfb819462"
  }
}

Responses

Status Meaning Description Schema
200 OK Organization successfully created. create_organization_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get organizations

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/organizations", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/organizations HTTP/1.1

Accept: application/json

GET /api/v1/organizations

Get a list of organizations.

read:organizations

Parameters

Name In Type Required Description
sort query string false Field and order to sort the result by.
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
next_token query string false A string to get the next page of results if there are more results.

Enumerated Values

Parameter Value
sort name_asc
sort name_desc
sort email_asc
sort email_desc

Example responses

200 Response

{
  "code": "OK",
  "message": "Success",
  "organizations": [
    {
      "code": "org_1ccfb819462",
      "name": "Acme Corp",
      "handle": "acme_corp",
      "is_default": false,
      "external_id": "some1234",
      "is_auto_membership_enabled": true
    }
  ],
  "next_token": "Mjo5Om1hbWVfYZNj"
}

Responses

Status Meaning Description Schema
200 OK Organizations successfully retreived. get_organizations_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update Organization

Code samples

const inputBody = '{
  "name": "Acme Corp",
  "external_id": "some1234",
  "background_color": "#fff",
  "button_color": "#fff",
  "button_text_color": "#fff",
  "link_color": "#fff",
  "background_color_dark": "#000",
  "button_color_dark": "#000",
  "button_text_color_dark": "#000",
  "link_color_dark": "#000",
  "theme_code": "light",
  "handle": "acme_corp",
  "is_allow_registrations": true,
  "is_custom_auth_connections_enabled": true,
  "is_auto_join_domain_list": true,
  "allowed_domains": [
    "https://acme.kinde.com",
    "https://acme.com"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organization/{org_code}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/organization/{org_code}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/organization/{org_code} HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/organization/{org_code}

Update an organization.

update:organizations

Body parameter

{
  "name": "Acme Corp",
  "external_id": "some1234",
  "background_color": "#fff",
  "button_color": "#fff",
  "button_text_color": "#fff",
  "link_color": "#fff",
  "background_color_dark": "#000",
  "button_color_dark": "#000",
  "button_text_color_dark": "#000",
  "link_color_dark": "#000",
  "theme_code": "light",
  "handle": "acme_corp",
  "is_allow_registrations": true,
  "is_custom_auth_connections_enabled": true,
  "is_auto_join_domain_list": true,
  "allowed_domains": [
    "https://acme.kinde.com",
    "https://acme.com"
  ]
}

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization.
body body object false Organization details.
» name body string false The organization's name.
» external_id body string false The organization's ID.
» background_color body string false The organization's brand settings - background color.
» button_color body string false The organization's brand settings - button color.
» button_text_color body string false The organization's brand settings - button text color.
» link_color body string false The organization's brand settings - link color.
» background_color_dark body string false The organization's brand settings - dark mode background color.
» button_color_dark body string false The organization's brand settings - dark mode button color.
» button_text_color_dark body string false The organization's brand settings - dark mode button text color.
» link_color_dark body string false The organization's brand settings - dark mode link color.
» theme_code body string false The organization's brand settings - theme/mode.
» handle body string false The organization's handle.
» is_allow_registrations body boolean false Deprecated - Use 'is_auto_membership_enabled' instead.
» is_custom_auth_connections_enabled body boolean false Enable custom auth connections for this organization.
» is_auto_join_domain_list body boolean false Users can sign up to this organization.
» allowed_domains body [string] false Domains allowed for self-sign up to this environment.

Enumerated Values

Parameter Value
» theme_code light
» theme_code dark
» theme_code user_preference

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Organization successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Delete Organization

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organization/{org_code}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/organization/{org_code}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/organization/{org_code} HTTP/1.1

Accept: application/json

DELETE /api/v1/organization/{org_code}

Delete an organization.

delete:organizations

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Organization successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
404 Not Found The specified resource was not found not_found_response
429 Too Many Requests Too many requests. Request was throttled. error_response

List Organization Users

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users HTTP/1.1

Accept: application/json

GET /api/v1/organizations/{org_code}/users

Get users in an organization.

read:organization_users

Parameters

Name In Type Required Description
sort query string false Field and order to sort the result by.
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
next_token query string false A string to get the next page of results if there are more results.
org_code path string true The organization's code.
permissions query string false Filter by user permissions comma separated (where all match)
roles query string false Filter by user roles comma separated (where all match)

Enumerated Values

Parameter Value
sort name_asc
sort name_desc
sort email_asc
sort email_desc
sort id_asc
sort id_desc

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "organization_users": [
    {
      "id": "string",
      "email": "string",
      "full_name": "string",
      "last_name": "string",
      "first_name": "string",
      "picture": "string",
      "roles": [
        "string"
      ]
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response with a list of organization users or an empty list. get_organization_users_response
400 Bad Request Error creating user error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Add Organization Users

Code samples

const inputBody = '{
  "users": [
    {
      "id": "string",
      "roles": [
        "string"
      ],
      "permissions": [
        "string"
      ]
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/organizations/{org_code}/users

Add existing users to an organization.

create:organization_users

Body parameter

{
  "users": [
    {
      "id": "string",
      "roles": [
        "string"
      ],
      "permissions": [
        "string"
      ]
    }
  ]
}

Parameters

Name In Type Required Description
org_code path string true The organization's code.
body body object false none
» users body [object] false Users to be added to the organization.
»» id body string false The users id.
»» roles body [string] false Role keys to assign to the user.
»» permissions body [string] false Permission keys to assign to the user.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "users_added": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK Users successfully added. add_organization_users_response
204 No Content No users added. None
400 Bad Request Bad request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Organization Users

Code samples

const inputBody = '{
  "users": [
    {
      "id": "string",
      "operation": "string",
      "roles": [
        "string"
      ],
      "permissions": [
        "string"
      ]
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/organizations/{org_code}/users

Update users that belong to an organization.

update:organization_users

Body parameter

{
  "users": [
    {
      "id": "string",
      "operation": "string",
      "roles": [
        "string"
      ],
      "permissions": [
        "string"
      ]
    }
  ]
}

Parameters

Name In Type Required Description
org_code path string true The organization's code.
body body object false none
» users body [object] false Users to add, update or remove from the organization.
»» id body string false The users id.
»» operation body string false Optional operation, set to 'delete' to remove the user from the organization.
»» roles body [string] false Role keys to assign to the user.
»» permissions body [string] false Permission keys to assign to the user.

Example responses

200 Response

{
  "message": "string",
  "users_added": [
    "string"
  ],
  "users_updated": [
    "string"
  ],
  "users_removed": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK Users successfully removed. update_organization_users_response
400 Bad Request Error updating organization user. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

List Organization User Roles

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles HTTP/1.1

Accept: application/json

GET /api/v1/organizations/{org_code}/users/{user_id}/roles

Get roles for an organization user.

read:organization_user_roles

Parameters

Name In Type Required Description
org_code path string true The organization's code.
user_id path string true The user's id.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "roles": [
    {
      "id": "string",
      "key": "string",
      "name": "string"
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK A successful response with a list of user roles. get_organizations_user_roles_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Add Organization User Role

Code samples

const inputBody = '{
  "role_id": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/organizations/{org_code}/users/{user_id}/roles

Add role to an organization user.

create:organization_user_roles

Body parameter

{
  "role_id": "string"
}

Parameters

Name In Type Required Description
org_code path string true The organization's code.
user_id path string true The user's id.
body body object true Role details.
» role_id body string false The role id.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Role successfully added. success_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Organization User Role

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles/{role_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles/{role_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/roles/{role_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/organizations/{org_code}/users/{user_id}/roles/{role_id}

Delete role for an organization user.

delete:organization_user_roles

Parameters

Name In Type Required Description
org_code path string true The organization's code.
user_id path string true The user's id.
role_id path string true The role id.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK User successfully removed. success_response
400 Bad Request Error creating user. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

List Organization User Permissions

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions HTTP/1.1

Accept: application/json

GET /api/v1/organizations/{org_code}/users/{user_id}/permissions

Get permissions for an organization user.

read:organization_user_permissions

Parameters

Name In Type Required Description
org_code path string true The organization's code.
user_id path string true The user's id.
expand query string false Specify additional data to retrieve. Use "roles".

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "permissions": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "description": "string",
      "roles": [
        {
          "id": "string",
          "key": "string"
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK A successful response with a list of user permissions. get_organizations_user_permissions_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Add Organization User Permission

Code samples

const inputBody = '{
  "permission_id": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/organizations/{org_code}/users/{user_id}/permissions

Add permission to an organization user.

create:organization_user_permissions

Body parameter

{
  "permission_id": "string"
}

Parameters

Name In Type Required Description
org_code path string true The organization's code.
user_id path string true The user's id.
body body object true Permission details.
» permission_id body string false The permission id.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK User permission successfully updated. success_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Organization User Permission

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions/{permission_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions/{permission_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}/permissions/{permission_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/organizations/{org_code}/users/{user_id}/permissions/{permission_id}

Delete permission for an organization user.

delete:organization_user_permissions

Parameters

Name In Type Required Description
org_code path string true The organization's code.
user_id path string true The user's id.
permission_id path string true The permission id.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK User successfully removed. success_response
400 Bad Request Error creating user. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Remove Organization User

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/users/{user_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/organizations/{org_code}/users/{user_id}

Remove user from an organization.

delete:organization_users

Parameters

Name In Type Required Description
org_code path string true The organization's code.
user_id path string true The user's id.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK User successfully removed from organization success_response
400 Bad Request Error removing user error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

List Organization Feature Flags

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags HTTP/1.1

Accept: application/json

GET /api/v1/organizations/{org_code}/feature_flags

Get all organization feature flags.

read:organization_feature_flags

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "feature_flags": {
    "property1": {
      "type": "str",
      "value": "string"
    },
    "property2": {
      "type": "str",
      "value": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Feature flag overrides successfully returned. get_organization_feature_flags_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Organization Feature Flag Overrides

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags HTTP/1.1

Accept: application/json

DELETE /api/v1/organizations/{org_code}/feature_flags

Delete all organization feature flag overrides.

delete:organization_feature_flags

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag overrides successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Organization Feature Flag Override

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key} HTTP/1.1

Accept: application/json

DELETE /api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}

Delete organization feature flag override.

delete:organization_feature_flags

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization.
feature_flag_key path string true The identifier for the feature flag.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag override successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Organization Feature Flag Override

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}?value=string',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}?value=string HTTP/1.1

Accept: application/json

PATCH /api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}

Update organization feature flag override.

update:organization_feature_flags

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization
feature_flag_key path string true The identifier for the feature flag
value query string true Override value

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag override successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Organization Property value

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties/{property_key}?value=string',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties/{property_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties/{property_key}?value=string HTTP/1.1

Accept: application/json

PUT /api/v1/organizations/{org_code}/properties/{property_key}

Update organization property value.

update:organization_properties

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization
property_key path string true The identifier for the property
value query string true The new property value

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Property successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Get Organization Property Values

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties HTTP/1.1

Accept: application/json

GET /api/v1/organizations/{org_code}/properties

Gets properties for an organization by org code.

read:organization_properties

Parameters

Name In Type Required Description
org_code path string true The organization's code.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "properties": [
    {
      "id": "prop_0192b7e8b4f8ca08110d2b22059662a8",
      "name": "Town",
      "description": "Where the entity is located",
      "key": "kp_town",
      "value": "West-side Staines massive"
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Properties successfully retrieved. get_property_values_response
400 Bad Request Bad request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Organization Property values

Code samples

const inputBody = '{
  "properties": {}
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/organizations/{org_code}/properties HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/organizations/{org_code}/properties

Update organization property values.

update:organization_properties

Body parameter

{
  "properties": {}
}

Parameters

Name In Type Required Description
org_code path string true The identifier for the organization
body body object true Properties to update.
» properties body object true Property keys and values

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Properties successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete organization handle

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/organization/{org_code}/handle',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/organization/{org_code}/handle", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/organization/{org_code}/handle HTTP/1.1

Accept: application/json

DELETE /api/v1/organization/{org_code}/handle

Delete organization handle

delete:organization_handles

Parameters

Name In Type Required Description
org_code path string true The organization's code.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Handle successfully deleted. success_response
400 Bad Request Bad request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Permissions

List Permissions

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/permissions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/permissions HTTP/1.1

Accept: application/json

GET /api/v1/permissions

The returned list can be sorted by permission name or permission ID in ascending or descending order. The number of records to return at a time can also be controlled using the page_size query string parameter.

read:permissions

Parameters

Name In Type Required Description
sort query string false Field and order to sort the result by.
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
next_token query string false A string to get the next page of results if there are more results.

Enumerated Values

Parameter Value
sort name_asc
sort name_desc
sort id_asc
sort id_desc

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "permissions": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "description": "string"
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Permissions successfully retrieved. get_permissions_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Create Permission

Code samples

const inputBody = '{
  "name": "string",
  "description": "string",
  "key": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/permissions',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/permissions HTTP/1.1

Content-Type: application/json
Accept: application/json; charset=utf-8

POST /api/v1/permissions

Create a new permission.

create:permissions

Body parameter

{
  "name": "string",
  "description": "string",
  "key": "string"
}

Parameters

Name In Type Required Description
body body object false Permission details.
» name body string false The permission's name.
» description body string false The permission's description.
» key body string false The permission identifier to use in code.

Example responses

201 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
201 Created Permission successfully created success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Update Permission

Code samples

const inputBody = '{
  "name": "string",
  "description": "string",
  "key": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/permissions/{permission_id}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/permissions/{permission_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/permissions/{permission_id} HTTP/1.1

Content-Type: application/json
Accept: application/json; charset=utf-8

PATCH /api/v1/permissions/{permission_id}

Update permission

update:permissions

Body parameter

{
  "name": "string",
  "description": "string",
  "key": "string"
}

Parameters

Name In Type Required Description
permission_id path integer true The identifier for the permission.
body body object false Permission details.
» name body string false The permission's name.
» description body string false The permission's description.
» key body string false The permission identifier to use in code.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Permission successfully updated success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Delete Permission

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/permissions/{permission_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/permissions/{permission_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/permissions/{permission_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/permissions/{permission_id}

Delete permission

delete:permissions

Parameters

Name In Type Required Description
permission_id path string true The identifier for the permission.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK permission successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Properties

List properties

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/properties',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/properties", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/properties HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/properties

Returns a list of properties

read:properties

Parameters

Name In Type Required Description
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
starting_after query string false The ID of the property to start after.
ending_before query string false The ID of the property to end before.
context query string false Filter results by user, organization or application context

Enumerated Values

Parameter Value
context usr
context org
context app

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "properties": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "is_private": true,
      "description": "string",
      "is_kinde_property": true
    }
  ],
  "has_more": true
}

Responses

Status Meaning Description Schema
200 OK Properties successfully retrieved. get_properties_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Create Property

Code samples

const inputBody = '{
  "name": "string",
  "description": "string",
  "key": "string",
  "type": "single_line_text",
  "context": "org",
  "is_private": true,
  "category_id": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/properties',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/properties", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/properties HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/properties

Create property.

create:properties

Body parameter

{
  "name": "string",
  "description": "string",
  "key": "string",
  "type": "single_line_text",
  "context": "org",
  "is_private": true,
  "category_id": "string"
}

Parameters

Name In Type Required Description
body body object true Property details.
» name body string true The name of the property.
» description body string false Description of the property purpose.
» key body string true The property identifier to use in code.
» type body string true The property type.
» context body string true The context that the property applies to.
» is_private body boolean true Whether the property can be included in id and access tokens.
» category_id body string true Which category the property belongs to.

Enumerated Values

Parameter Value
» type single_line_text
» type multi_line_text
» context org
» context usr
» context app

Example responses

201 Response

{
  "message": "string",
  "code": "string",
  "property": {
    "id": "string"
  }
}

Responses

Status Meaning Description Schema
201 Created Property successfully created create_property_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Property

Code samples

const inputBody = '{
  "name": "string",
  "description": "string",
  "is_private": true,
  "category_id": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/properties/{property_id}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/properties/{property_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/properties/{property_id} HTTP/1.1

Content-Type: application/json
Accept: application/json

PUT /api/v1/properties/{property_id}

Update property.

update:properties

Body parameter

{
  "name": "string",
  "description": "string",
  "is_private": true,
  "category_id": "string"
}

Parameters

Name In Type Required Description
property_id path string true The unique identifier for the property.
body body object true The fields of the property to update.
» name body string true The name of the property.
» description body string false Description of the property purpose.
» is_private body boolean true Whether the property can be included in id and access tokens.
» category_id body string true Which category the property belongs to.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Property successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Delete Property

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/properties/{property_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/properties/{property_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/properties/{property_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/properties/{property_id}

Delete property.

delete:properties

Parameters

Name In Type Required Description
property_id path string true The unique identifier for the property.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Property successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Property Categories

List categories

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/property_categories',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/property_categories", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/property_categories HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/property_categories

Returns a list of categories.

read:property_categories

Parameters

Name In Type Required Description
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
starting_after query string false The ID of the category to start after.
ending_before query string false The ID of the category to end before.
context query string false Filter the results by User or Organization context

Enumerated Values

Parameter Value
context usr
context org

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "categories": [
    {
      "id": "string",
      "name": "string"
    }
  ],
  "has_more": true
}

Responses

Status Meaning Description Schema
200 OK Categories successfully retrieved. get_categories_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Create Category

Code samples

const inputBody = '{
  "name": "string",
  "context": "org"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/property_categories',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/property_categories", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/property_categories HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/property_categories

Create category.

create:property_categories

Body parameter

{
  "name": "string",
  "context": "org"
}

Parameters

Name In Type Required Description
body body object true Category details.
» name body string true The name of the category.
» context body string true The context that the category applies to.

Enumerated Values

Parameter Value
» context org
» context usr
» context app

Example responses

201 Response

{
  "message": "string",
  "code": "string",
  "category": {
    "id": "string"
  }
}

Responses

Status Meaning Description Schema
201 Created Category successfully created create_category_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Category

Code samples

const inputBody = '{
  "name": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/property_categories/{category_id}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/property_categories/{category_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/property_categories/{category_id} HTTP/1.1

Content-Type: application/json
Accept: application/json

PUT /api/v1/property_categories/{category_id}

Update category.

update:property_categories

Body parameter

{
  "name": "string"
}

Parameters

Name In Type Required Description
category_id path string true The unique identifier for the category.
body body object true The fields of the category to update.
» name body string false The name of the category.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK category successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Roles

List roles

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/roles HTTP/1.1

Accept: application/json

GET /api/v1/roles

The returned list can be sorted by role name or role ID in ascending or descending order. The number of records to return at a time can also be controlled using the page_size query string parameter.

read:roles

Parameters

Name In Type Required Description
sort query string false Field and order to sort the result by.
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
next_token query string false A string to get the next page of results if there are more results.

Enumerated Values

Parameter Value
sort name_asc
sort name_desc
sort id_asc
sort id_desc

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "roles": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "description": "string",
      "is_default_role": true
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Roles successfully retrieved. get_roles_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Create role

Code samples

const inputBody = '{
  "name": "string",
  "description": "string",
  "key": "string",
  "is_default_role": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/roles", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/roles HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/roles

Create role.

create:roles

Body parameter

{
  "name": "string",
  "description": "string",
  "key": "string",
  "is_default_role": true
}

Parameters

Name In Type Required Description
body body object false Role details.
» name body string false The role's name.
» description body string false The role's description.
» key body string false The role identifier to use in code.
» is_default_role body boolean false Set role as default for new users.

Example responses

201 Response

{
  "code": "string",
  "message": "string",
  "role": {
    "id": "string"
  }
}

Responses

Status Meaning Description Schema
201 Created Role successfully created create_roles_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get role

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles/{role_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/roles/{role_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/roles/{role_id} HTTP/1.1

Accept: application/json

GET /api/v1/roles/{role_id}

Get a role

read:roles

Parameters

Name In Type Required Description
role_id path string true The identifier for the role.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "role": {
    "id": "01929904-316d-bb2c-069f-99dfea4ac394",
    "key": "admin",
    "name": "Administrator",
    "description": "Full access to all resources.",
    "is_default_role": false
  }
}

Responses

Status Meaning Description Schema
200 OK Role successfully retrieved. get_role_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update role

Code samples

const inputBody = '{
  "name": "string",
  "description": "string",
  "key": "string",
  "is_default_role": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles/{role_id}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/roles/{role_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/roles/{role_id} HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/roles/{role_id}

Update a role

update:roles

Body parameter

{
  "name": "string",
  "description": "string",
  "key": "string",
  "is_default_role": true
}

Parameters

Name In Type Required Description
role_id path string true The identifier for the role.
body body object false Role details.
» name body string true The role's name.
» description body string false The role's description.
» key body string true The role identifier to use in code.
» is_default_role body boolean false Set role as default for new users.

Example responses

201 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
201 Created Role successfully updated success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Delete role

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles/{role_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/roles/{role_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/roles/{role_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/roles/{role_id}

Delete role

delete:roles

Parameters

Name In Type Required Description
role_id path string true The identifier for the role.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Role successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Get role permissions

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions HTTP/1.1

Accept: application/json

GET /api/v1/roles/{role_id}/permissions

Get permissions for a role.

read:role_permissions

Parameters

Name In Type Required Description
role_id path string true The role's public id.
sort query string false Field and order to sort the result by.
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
next_token query string false A string to get the next page of results if there are more results.

Enumerated Values

Parameter Value
sort name_asc
sort name_desc
sort id_asc
sort id_desc

Example responses

200 Response

[
  {
    "id": "string",
    "key": "string",
    "name": "string",
    "description": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK A list of permissions for a role roles_permission_response
400 Bad Request Error removing user error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update role permissions

Code samples

const inputBody = '{
  "permissions": [
    {
      "id": "string",
      "operation": "string"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/roles/{role_id}/permissions

Update role permissions.

update:role_permissions

Body parameter

{
  "permissions": [
    {
      "id": "string",
      "operation": "string"
    }
  ]
}

Parameters

Name In Type Required Description
role_id path string true The identifier for the role.
body body object true none
» permissions body [object] false Permissions to add or remove from the role.
»» id body string false The permission id.
»» operation body string false Optional operation, set to 'delete' to remove the permission from the role.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "permissions_added": [
    "string"
  ],
  "permissions_removed": [
    "string"
  ]
}

Responses

Status Meaning Description Schema
200 OK Permissions successfully updated. update_role_permissions_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Remove role permission

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions/{permission_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions/{permission_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/roles/{role_id}/permissions/{permission_id} HTTP/1.1

Accept: application/json

DELETE /api/v1/roles/{role_id}/permissions/{permission_id}

Remove a permission from a role.

delete:role_permissions

Parameters

Name In Type Required Description
role_id path string true The role's public id.
permission_id path string true The permission's public id.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Permission successfully removed from role success_response
400 Bad Request Error removing user error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Subscribers

List Subscribers

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/subscribers',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/subscribers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/subscribers HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/subscribers

The returned list can be sorted by full name or email address in ascending or descending order. The number of records to return at a time can also be controlled using the page_size query string parameter.

read:subscribers

Parameters

Name In Type Required Description
sort query string false Field and order to sort the result by.
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
next_token query string false A string to get the next page of results if there are more results.

Enumerated Values

Parameter Value
sort name_asc
sort name_desc
sort email_asc
sort email_desc

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "subscribers": [
    {
      "id": "string",
      "email": "string",
      "full_name": "string",
      "first_name": "string",
      "last_name": "string"
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Subscriber successfully retrieved. get_subscribers_response
403 Forbidden Bad request. error_response
429 Too Many Requests Request was throttled. None

Create Subscriber

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/subscribers?first_name=string&last_name=string&email=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/subscribers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/subscribers?first_name=string&last_name=string&email=string HTTP/1.1

Accept: application/json; charset=utf-8

POST /api/v1/subscribers

Create subscriber.

create:subscribers

Parameters

Name In Type Required Description
first_name query string true Subscriber's first name.
last_name query string true Subscriber's last name.
email query string true The email address of the subscriber.

Example responses

201 Response

{
  "subscriber": {
    "subscriber_id": "string"
  }
}

Responses

Status Meaning Description Schema
201 Created Subscriber successfully created create_subscriber_success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Get Subscriber

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/subscribers/{subscriber_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/subscribers/{subscriber_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/subscribers/{subscriber_id} HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/subscribers/{subscriber_id}

Retrieve a subscriber record.

read:subscribers

Parameters

Name In Type Required Description
subscriber_id path string true The subscriber's id.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "subscribers": [
    {
      "id": "string",
      "preferred_email": "string",
      "first_name": "string",
      "last_name": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Subscriber successfully retrieved. get_subscriber_response
400 Bad Request Bad request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Users

Get users

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/users", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/users HTTP/1.1

Accept: application/json

GET /api/v1/users

The returned list can be sorted by full name or email address in ascending or descending order. The number of records to return at a time can also be controlled using the page_size query string parameter.

read:users

Parameters

Name In Type Required Description
page_size query integer false Number of results per page. Defaults to 10 if parameter not sent.
user_id query string false ID of the user to filter by.
next_token query string false A string to get the next page of results if there are more results.
email query string false Filter the results by email address. The query string should be comma separated and url encoded.
username query string false Filter the results by username. The query string should be comma separated and url encoded.
expand query string false Specify additional data to retrieve. Use "organizations" and/or "identities".
has_organization query boolean false Filter the results by if the user has at least one organization assigned.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "users": [
    {
      "id": "string",
      "provided_id": "string",
      "email": "string",
      "username": "string",
      "last_name": "string",
      "first_name": "string",
      "is_suspended": true,
      "picture": "string",
      "total_sign_ins": 0,
      "failed_sign_ins": 0,
      "last_signed_in": "string",
      "created_on": "string",
      "organizations": [
        "string"
      ],
      "identities": [
        {
          "type": "string",
          "identity": "string"
        }
      ]
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Users successfully retrieved. users_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Refresh User Claims and Invalidate Cache

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/refresh_claims',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/refresh_claims", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/users/{user_id}/refresh_claims HTTP/1.1

Accept: application/json; charset=utf-8

POST /api/v1/users/{user_id}/refresh_claims

Refreshes the user's claims and invalidates the current cache.

update:user_refresh_claims

Parameters

Name In Type Required Description
user_id path string true The id of the user whose claims needs to be updated.

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Claims successfully refreshed. success_response
400 Bad Request Bad request. error_response
403 Forbidden Bad request. error_response
429 Too Many Requests Request was throttled. None

Get user

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/user?id=string',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/user", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/user?id=string HTTP/1.1

Accept: application/json

GET /api/v1/user

Retrieve a user record.

read:users

Parameters

Name In Type Required Description
id query string true The user's id.
expand query string false Specify additional data to retrieve. Use "organizations" and/or "identities".

Example responses

200 Response

{
  "id": "string",
  "provided_id": "string",
  "preferred_email": "string",
  "username": "string",
  "last_name": "string",
  "first_name": "string",
  "is_suspended": true,
  "picture": "string",
  "total_sign_ins": 0,
  "failed_sign_ins": 0,
  "last_signed_in": "string",
  "created_on": "string",
  "organizations": [
    "string"
  ],
  "identities": [
    {
      "type": "string",
      "identity": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK User successfully updated. user
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Create user

Code samples

const inputBody = '{
  "profile": {
    "given_name": "string",
    "family_name": "string",
    "picture": "string"
  },
  "organization_code": "string",
  "provided_id": "string",
  "identities": [
    {
      "type": "email",
      "details": {
        "email": "email@email.com"
      }
    },
    {
      "type": "phone",
      "details": {
        "phone": "+61426148233",
        "phone_country_id": "au"
      }
    },
    {
      "type": "username",
      "details": {
        "username": "myusername"
      }
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/user',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/user", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/user HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/user

Creates a user record and optionally zero or more identities for the user. An example identity could be the email address of the user.

create:users

Body parameter

{
  "profile": {
    "given_name": "string",
    "family_name": "string",
    "picture": "string"
  },
  "organization_code": "string",
  "provided_id": "string",
  "identities": [
    {
      "type": "email",
      "details": {
        "email": "email@email.com"
      }
    },
    {
      "type": "phone",
      "details": {
        "phone": "+61426148233",
        "phone_country_id": "au"
      }
    },
    {
      "type": "username",
      "details": {
        "username": "myusername"
      }
    }
  ]
}

Parameters

Name In Type Required Description
body body object false The details of the user to create.
» profile body object false Basic information required to create a user.
»» given_name body string false User's first name.
»» family_name body string false User's last name.
»» picture body string false The user's profile picture.
» organization_code body string false The unique code associated with the organization you want the user to join.
» provided_id body string false An external id to reference the user.
» identities body [object] false Array of identities to assign to the created user
»» type body string false The type of identity to create, e.g. email, username, or phone.
»» details body object false Additional details required to create the user.
»»» email body string false The email address of the user.
»»» phone body string false The phone number of the user.
»»» phone_country_id body string false The country code for the phone number.
»»» username body string false The username of the user.

Enumerated Values

Parameter Value
»» type email
»» type phone
»» type username

Example responses

200 Response

{
  "id": "string",
  "created": true,
  "identities": [
    {
      "type": "string",
      "result": {
        "created": true
      }
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK User successfully created. create_user_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update user

Code samples

const inputBody = '{
  "given_name": "string",
  "family_name": "string",
  "picture": "string",
  "is_suspended": true,
  "is_password_reset_requested": true,
  "provided_id": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/user?id=string',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/user", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/user?id=string HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/user

Update a user record.

update:users

Body parameter

{
  "given_name": "string",
  "family_name": "string",
  "picture": "string",
  "is_suspended": true,
  "is_password_reset_requested": true,
  "provided_id": "string"
}

Parameters

Name In Type Required Description
id query string true The user's id.
body body object true The user to update.
» given_name body string false User's first name.
» family_name body string false User's last name.
» picture body string false The user's profile picture.
» is_suspended body boolean false Whether the user is currently suspended or not.
» is_password_reset_requested body boolean false Prompt the user to change their password on next sign in.
» provided_id body string false An external id to reference the user.

Example responses

200 Response

{
  "id": "string",
  "given_name": "string",
  "family_name": "string",
  "email": "string",
  "is_suspended": true,
  "is_password_reset_requested": true,
  "picture": "string"
}

Responses

Status Meaning Description Schema
200 OK User successfully updated. update_user_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Delete user

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/user?id=kp_c3143a4b50ad43c88e541d9077681782',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/user", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/user?id=kp_c3143a4b50ad43c88e541d9077681782 HTTP/1.1

Accept: application/json

DELETE /api/v1/user

Delete a user record.

delete:users

Parameters

Name In Type Required Description
id query string true The user's id.
is_delete_profile query boolean false Delete all data and remove the user's profile from all of Kinde, including the subscriber list

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK User successfully deleted. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Unauthorized - invalid credentials. error_response
429 Too Many Requests Too many requests. Request was throttled. error_response

Update User Feature Flag Override

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/feature_flags/{feature_flag_key}?value=string',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/feature_flags/{feature_flag_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/users/{user_id}/feature_flags/{feature_flag_key}?value=string HTTP/1.1

Accept: application/json

PATCH /api/v1/users/{user_id}/feature_flags/{feature_flag_key}

Update user feature flag override.

update:user_feature_flags

Parameters

Name In Type Required Description
user_id path string true The identifier for the user
feature_flag_key path string true The identifier for the feature flag
value query string true Override value

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Feature flag override successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Property value

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties/{property_key}?value=string',
{
  method: 'PUT',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties/{property_key}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties/{property_key}?value=string HTTP/1.1

Accept: application/json

PUT /api/v1/users/{user_id}/properties/{property_key}

Update property value.

update:user_properties

Parameters

Name In Type Required Description
user_id path string true The identifier for the user
property_key path string true The identifier for the property
value query string true The new property value

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Property successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Get property values

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties HTTP/1.1

Accept: application/json

GET /api/v1/users/{user_id}/properties

Gets properties for an user by ID.

read:user_properties

Parameters

Name In Type Required Description
user_id path string true The user's ID.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "properties": [
    {
      "id": "prop_0192b7e8b4f8ca08110d2b22059662a8",
      "name": "Town",
      "description": "Where the entity is located",
      "key": "kp_town",
      "value": "West-side Staines massive"
    }
  ],
  "next_token": "string"
}

Responses

Status Meaning Description Schema
200 OK Properties successfully retrieved. get_property_values_response
400 Bad Request Bad request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Update Property values

Code samples

const inputBody = '{
  "properties": {}
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/users/{user_id}/properties HTTP/1.1

Content-Type: application/json
Accept: application/json

PATCH /api/v1/users/{user_id}/properties

Update property values.

update:user_properties

Body parameter

{
  "properties": {}
}

Parameters

Name In Type Required Description
user_id path string true The identifier for the user
body body object true Properties to update.
» properties body object true Property keys and values

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK Properties successfully updated. success_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Set User password

Code samples

const inputBody = '{
  "hashed_password": "string",
  "hashing_method": "bcrypt",
  "salt": "string",
  "salt_position": "prefix",
  "is_temporary_password": true
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/password',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/password", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT https://{subdomain}.kinde.com/api/v1/users/{user_id}/password HTTP/1.1

Content-Type: application/json
Accept: application/json

PUT /api/v1/users/{user_id}/password

Set user password.

update:user_passwords

Body parameter

{
  "hashed_password": "string",
  "hashing_method": "bcrypt",
  "salt": "string",
  "salt_position": "prefix",
  "is_temporary_password": true
}

Parameters

Name In Type Required Description
user_id path string true The identifier for the user
body body object true Password details.
» hashed_password body string true The hashed password.
» hashing_method body string false The hashing method or algorithm used to encrypt the user’s password. Default is bcrypt.
» salt body string false Extra characters added to passwords to make them stronger. Not required for bcrypt.
» salt_position body string false Position of salt in password string. Not required for bcrypt.
» is_temporary_password body boolean false The user will be prompted to set a new password after entering this one.

Enumerated Values

Parameter Value
» hashing_method bcrypt
» hashing_method crypt
» hashing_method md5
» hashing_method wordpress
» salt_position prefix
» salt_position suffix

Example responses

200 Response

{
  "message": "Success",
  "code": "OK"
}

Responses

Status Meaning Description Schema
200 OK User successfully created. success_response
400 Bad Request Error creating user. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Get identities

Code samples


const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/identities',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/identities", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/users/{user_id}/identities HTTP/1.1

Accept: application/json

GET /api/v1/users/{user_id}/identities

Gets a list of identities for an user by ID.

read:user_identities

Parameters

Name In Type Required Description
user_id path string true The user's ID.
starting_after query string false The ID of the identity to start after.
ending_before query string false The ID of the identity to end before.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "identities": [
    {
      "id": "string",
      "type": "string",
      "is_confirmed": true,
      "created_on": "string",
      "last_login_on": "string",
      "total_logins": 0,
      "name": "string"
    }
  ],
  "has_more": true
}

Responses

Status Meaning Description Schema
200 OK Identities successfully retrieved. get_identities_response
400 Bad Request Bad request. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Create identity

Code samples

const inputBody = '{
  "value": "sally@example.com",
  "type": "email",
  "phone_country_id": "au",
  "connection_id": "conn_019289347f1193da6c0e4d49b97b4bd2"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/users/{user_id}/identities',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/users/{user_id}/identities", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/users/{user_id}/identities HTTP/1.1

Content-Type: application/json
Accept: application/json

POST /api/v1/users/{user_id}/identities

Creates an identity for a user.

create:user_identities

Body parameter

{
  "value": "sally@example.com",
  "type": "email",
  "phone_country_id": "au",
  "connection_id": "conn_019289347f1193da6c0e4d49b97b4bd2"
}

Parameters

Name In Type Required Description
user_id path string true The user's ID.
body body object false The identity details.
» value body string false The email address, social identity, or username of the user.
» type body string false The identity type
» phone_country_id body string false The country code for the phone number, only required when identity type is 'phone'.
» connection_id body string false The social connection ID, only required when identity type is 'social'.

Enumerated Values

Parameter Value
» type email
» type username
» type phone
» type enterprise
» type social

Example responses

201 Response

{
  "message": "string",
  "code": "string",
  "identity": {
    "id": "string"
  }
}

Responses

Status Meaning Description Schema
201 Created Identity successfully created. create_identity_response
400 Bad Request Error creating identity. error_response
403 Forbidden Invalid credentials. None
429 Too Many Requests Request was throttled. None

Webhooks

Get Event

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/events/{event_id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/events/{event_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/events/{event_id} HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/events/{event_id}

Returns an event

read:events

Parameters

Name In Type Required Description
event_id path string true The event id.

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "event": {
    "type": "string",
    "source": "string",
    "event_id": "string",
    "timestamp": "string",
    "data": {}
  }
}

Responses

Status Meaning Description Schema
200 OK Event successfully retrieved. get_event_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

List Event Types

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/event_types',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/event_types", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/event_types HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/event_types

Returns a list event type definitions

read:event_types

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "event_types": [
    {
      "id": "string",
      "code": "string",
      "name": "string",
      "origin": "string",
      "schema": {}
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Event types successfully retrieved. get_event_types_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Delete Webhook

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/webhooks/{webhook_id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://{subdomain}.kinde.com/api/v1/webhooks/{webhook_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE https://{subdomain}.kinde.com/api/v1/webhooks/{webhook_id} HTTP/1.1

Accept: application/json; charset=utf-8

DELETE /api/v1/webhooks/{webhook_id}

Delete webhook

delete:webhooks

Parameters

Name In Type Required Description
webhook_id path string true The webhook id.

Example responses

200 Response

{
  "code": "string",
  "message": "string"
}

Responses

Status Meaning Description Schema
200 OK Webhook successfully deleted. delete_webhook_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

List Webhooks

Code samples


const headers = {
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/webhooks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://{subdomain}.kinde.com/api/v1/webhooks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET https://{subdomain}.kinde.com/api/v1/webhooks HTTP/1.1

Accept: application/json; charset=utf-8

GET /api/v1/webhooks

List webhooks

read:webhooks

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "webhooks": [
    {
      "id": "string",
      "name": "string",
      "endpoint": "string",
      "description": "string",
      "event_types": [
        "string"
      ],
      "created_on": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Webhook list successfully returned. get_webhooks_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Create a Webhook

Code samples

const inputBody = '{
  "endpoint": "string",
  "event_types": [
    "string"
  ],
  "name": "string",
  "description": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/webhooks',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://{subdomain}.kinde.com/api/v1/webhooks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST https://{subdomain}.kinde.com/api/v1/webhooks HTTP/1.1

Content-Type: application/json
Accept: application/json; charset=utf-8

POST /api/v1/webhooks

Create a webhook

create:webhooks

Body parameter

{
  "endpoint": "string",
  "event_types": [
    "string"
  ],
  "name": "string",
  "description": "string"
}

Parameters

Name In Type Required Description
body body object true Webhook request specification.
» endpoint body string true The webhook endpoint url
» event_types body [string] true Array of event type keys
» name body string true The webhook name
» description body string¦null false The webhook description

Example responses

200 Response

{
  "code": "string",
  "message": "string",
  "webhook": {
    "id": "string",
    "endpoint": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK Webhook successfully created. create_webhook_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Update a Webhook

Code samples

const inputBody = '{
  "event_types": [
    "string"
  ],
  "name": "string",
  "description": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json; charset=utf-8',
  'Authorization':'Bearer {access-token}'
};

fetch('https://{subdomain}.kinde.com/api/v1/webhooks',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json; charset=utf-8"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://{subdomain}.kinde.com/api/v1/webhooks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH https://{subdomain}.kinde.com/api/v1/webhooks HTTP/1.1

Content-Type: application/json
Accept: application/json; charset=utf-8

PATCH /api/v1/webhooks

Update a webhook

update:webhooks

Body parameter

{
  "event_types": [
    "string"
  ],
  "name": "string",
  "description": "string"
}

Parameters

Name In Type Required Description
body body object true Update webhook request specification.
» event_types body [string] false Array of event type keys
» name body string false The webhook name
» description body string¦null false The webhook description

Example responses

200 Response

{
  "message": "string",
  "code": "string",
  "webhook": {
    "id": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK Webhook successfully updated. update_webhook_response
400 Bad Request Invalid request. error_response
403 Forbidden Invalid credentials. error_response
429 Too Many Requests Request was throttled. None

Schemas

success_response

{
  "message": "Success",
  "code": "OK"
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none

error

{
  "code": "string",
  "message": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Error code.
message string false none Error message.

error_response

{
  "errors": [
    {
      "code": "string",
      "message": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
errors [error] false none none

not_found_response

{
  "errors": {
    "code": "ROUTE_NOT_FOUND",
    "message": "The requested API route does not exist"
  }
}

Properties

Name Type Required Restrictions Description
errors object false none none
» code string false none none
» message string false none none

get_apis_response

{
  "code": "OK",
  "message": "Success",
  "next_token": "Njo5Om1hvWVfYXNj",
  "apis": [
    {
      "id": "7ccd126599aa422a771abcb341596881",
      "name": "Example API",
      "audience": "https://api.example.com",
      "is_management_api": false
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
next_token string false none Pagination token.
apis [object] false none none
» id string false none The unique ID for the API.
» name string false none The API’s name.
» audience string false none A unique identifier for the API - commonly the URL. This value will be used as the audience parameter in authorization claims.
» is_management_api boolean false none Whether or not it is the Kinde management API.

create_apis_response

{
  "message": "Success",
  "code": "OK",
  "api": {
    "id": "7ccd126599aa422a771abcb341596881"
  }
}

Properties

Name Type Required Restrictions Description
message string false none A Kinde generated message.
code string false none A Kinde generated status code.
api object false none none
» id string false none The unique ID for the API.

get_environment_variables_response

{
  "code": "OK",
  "message": "Success",
  "has_more": true,
  "environment_variables": [
    {
      "id": "env_var_0192b1941f125645fa15bf28a662a0b3",
      "key": "MY_API_KEY",
      "value": "some-secret",
      "is_secret": false,
      "created_on": "2021-01-01T00:00:00Z"
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
has_more boolean false none Whether more records exist.
environment_variables [environment_variable] false none none

get_environment_variable_response

{
  "code": "OK",
  "message": "Success",
  "environment_variable": {
    "id": "env_var_0192b1941f125645fa15bf28a662a0b3",
    "key": "MY_API_KEY",
    "value": "some-secret",
    "is_secret": false,
    "created_on": "2021-01-01T00:00:00Z"
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
environment_variable environment_variable false none none

create_environment_variable_response

{
  "message": "Environment variable created",
  "code": "VARIABLE_CREATED",
  "environment_variable": {
    "id": "env_var_0192b194f6156fb7452fe38cfb144958"
  }
}

Properties

Name Type Required Restrictions Description
message string false none A Kinde generated message.
code string false none A Kinde generated status code.
environment_variable object false none none
» id string false none The unique ID for the environment variable.

update_environment_variable_response

{
  "message": "Environment variable updated",
  "code": "ENVIRONMENT_VARIABLE_UPDATED"
}

Properties

Name Type Required Restrictions Description
message string false none A Kinde generated message.
code string false none A Kinde generated status code.

delete_environment_variable_response

{
  "message": "Environment variable deleted",
  "code": "ENVIRONMENT_VARIABLE_DELETED"
}

Properties

Name Type Required Restrictions Description
message string false none A Kinde generated message.
code string false none A Kinde generated status code.

get_business_response

{
  "code": "OK",
  "message": "Success",
  "business": {
    "code": "bus_c69fb73b091",
    "name": "Tailsforce Ltd",
    "phone": "555-555-5555",
    "email": "sally@example.com",
    "industry": "Healthcare & Medical",
    "timezone": "Los Angeles (Pacific Standard Time)",
    "privacy_url": "https://example.com/privacy",
    "terms_url": "https://example.com/terms"
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
business object false none none
» code string false none The unique ID for the business.
» name string false none Your business's name.
» phone string¦null false none Phone number associated with business.
» email string¦null false none Email address associated with business.
» industry string¦null false none The industry your business is in.
» timezone string¦null false none The timezone your business is in.
» privacy_url string¦null false none Your Privacy policy URL.
» terms_url string¦null false none Your Terms and Conditions URL.

get_industries_response

{
  "code": "OK",
  "message": "Success",
  "industries": [
    {
      "key": "administration_office_support",
      "name": "Administration & Office Support"
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
industries [object] false none none
» key string false none The unique key for the industry.
» name string false none The display name for the industry.

get_timezones_response

{
  "code": "OK",
  "message": "Success",
  "timezones": [
    {
      "key": "london_greenwich_mean_time",
      "name": "London (Greenwich Mean Time) [+01:00]"
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
timezones [object] false none none
» key string false none The unique key for the timezone.
» name string false none The display name for the timezone.

get_api_response

{
  "code": "OK",
  "message": "success_response",
  "api": {
    "id": "7ccd126599aa422a771abcb341596881",
    "name": "Example API",
    "audience": "https://api.example.com",
    "is_management_api": false,
    "applications": [
      {
        "id": "3b0b5c6c8fcc464fab397f4969b5f482",
        "name": "My M2M app",
        "type": "Machine to machine (M2M)",
        "is_active": true
      }
    ]
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
api object false none none
» id string false none Unique ID of the API.
» name string false none The API’s name.
» audience string false none A unique identifier for the API - commonly the URL. This value will be used as the audience parameter in authorization claims.
» is_management_api boolean false none Whether or not it is the Kinde management API.
» applications [object] false none none
»» id string false none The Client ID of the application.
»» name string false none The application's name.
»» type string false none The application's type.
»» is_active boolean¦null false none Whether or not the application is authorized to access the API

Enumerated Values

Property Value
type Machine to machine (M2M)
type Back-end web
type Front-end and mobile

authorize_app_api_response

{
  "message": "API applications updated",
  "code": "API_APPLICATIONS_UPDATED",
  "applications_disconnected": [
    "string"
  ],
  "applications_connected": [
    "d2db282d6214242b3b145c123f0c123"
  ]
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none
applications_disconnected [string] false none none
applications_connected [string] false none none

delete_api_response

{
  "message": "API successfully deleted",
  "code": "API_DELETED"
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none

user

{
  "id": "string",
  "provided_id": "string",
  "preferred_email": "string",
  "username": "string",
  "last_name": "string",
  "first_name": "string",
  "is_suspended": true,
  "picture": "string",
  "total_sign_ins": 0,
  "failed_sign_ins": 0,
  "last_signed_in": "string",
  "created_on": "string",
  "organizations": [
    "string"
  ],
  "identities": [
    {
      "type": "string",
      "identity": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string false none Unique ID of the user in Kinde.
provided_id string false none External ID for user.
preferred_email string false none Default email address of the user in Kinde.
username string false none Primary username of the user in Kinde.
last_name string false none User's last name.
first_name string false none User's first name.
is_suspended boolean false none Whether the user is currently suspended or not.
picture string false none User's profile picture URL.
total_sign_ins integer¦null false none Total number of user sign ins.
failed_sign_ins integer¦null false none Number of consecutive failed user sign ins.
last_signed_in string¦null false none Last sign in date in ISO 8601 format.
created_on string¦null false none Date of user creation in ISO 8601 format.
organizations [string] false none Array of organizations a user belongs to.
identities [object] false none Array of identities belonging to the user.
» type string false none none
» identity string false none none

update_user_response

{
  "id": "string",
  "given_name": "string",
  "family_name": "string",
  "email": "string",
  "is_suspended": true,
  "is_password_reset_requested": true,
  "picture": "string"
}

Properties

Name Type Required Restrictions Description
id string false none Unique ID of the user in Kinde.
given_name string false none User's first name.
family_name string false none User's last name.
email string false none User's preferred email.
is_suspended boolean false none Whether the user is currently suspended or not.
is_password_reset_requested boolean false none Whether a password reset has been requested.
picture string¦null false none User's profile picture URL.

users

[
  {
    "id": "string",
    "provided_id": "string",
    "preferred_email": "string",
    "username": "string",
    "last_name": "string",
    "first_name": "string",
    "is_suspended": true,
    "picture": "string",
    "total_sign_ins": 0,
    "failed_sign_ins": 0,
    "last_signed_in": "string",
    "created_on": "string",
    "organizations": [
      "string"
    ],
    "identities": [
      {
        "type": "string",
        "identity": "string"
      }
    ]
  }
]

Array of users.

Properties

Name Type Required Restrictions Description
anonymous [user] false none Array of users.

users_response

{
  "code": "string",
  "message": "string",
  "users": [
    {
      "id": "string",
      "provided_id": "string",
      "email": "string",
      "username": "string",
      "last_name": "string",
      "first_name": "string",
      "is_suspended": true,
      "picture": "string",
      "total_sign_ins": 0,
      "failed_sign_ins": 0,
      "last_signed_in": "string",
      "created_on": "string",
      "organizations": [
        "string"
      ],
      "identities": [
        {
          "type": "string",
          "identity": "string"
        }
      ]
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
users [object] false none none
» id string false none Unique ID of the user in Kinde.
» provided_id string false none External ID for user.
» email string false none Default email address of the user in Kinde.
» username string false none Primary username of the user in Kinde.
» last_name string false none User's last name.
» first_name string false none User's first name.
» is_suspended boolean false none Whether the user is currently suspended or not.
» picture string false none User's profile picture URL.
» total_sign_ins integer¦null false none Total number of user sign ins.
» failed_sign_ins integer¦null false none Number of consecutive failed user sign ins.
» last_signed_in string¦null false none Last sign in date in ISO 8601 format.
» created_on string¦null false none Date of user creation in ISO 8601 format.
» organizations [string] false none Array of organizations a user belongs to.
» identities [object] false none Array of identities belonging to the user.
»» type string false none none
»» identity string false none none
next_token string false none Pagination token.

create_user_response

{
  "id": "string",
  "created": true,
  "identities": [
    {
      "type": "string",
      "result": {
        "created": true
      }
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string false none Unique ID of the user in Kinde.
created boolean false none True if the user was successfully created.
identities [user_identity] false none none

create_organization_response

{
  "message": "Success",
  "code": "OK",
  "organization": {
    "code": "org_1ccfb819462"
  }
}

Properties

Name Type Required Restrictions Description
message string false none Response message.
code string false none Response code.
organization object false none none
» code string false none The organization's unique code.

user_identity

{
  "type": "string",
  "result": {
    "created": true
  }
}

Properties

Name Type Required Restrictions Description
type string false none The type of identity object created.
result object false none The result of the user creation operation.
» created boolean false none True if the user identity was successfully created.

create_property_response

{
  "message": "string",
  "code": "string",
  "property": {
    "id": "string"
  }
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none
property object false none none
» id string false none The property's ID.

create_identity_response

{
  "message": "string",
  "code": "string",
  "identity": {
    "id": "string"
  }
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none
identity object false none none
» id string false none The identity's ID.

get_identities_response

{
  "code": "string",
  "message": "string",
  "identities": [
    {
      "id": "string",
      "type": "string",
      "is_confirmed": true,
      "created_on": "string",
      "last_login_on": "string",
      "total_logins": 0,
      "name": "string"
    }
  ],
  "has_more": true
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
identities [identity] false none none
has_more boolean false none Whether more records exist.

get_properties_response

{
  "code": "string",
  "message": "string",
  "properties": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "is_private": true,
      "description": "string",
      "is_kinde_property": true
    }
  ],
  "has_more": true
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
properties [property] false none none
has_more boolean false none Whether more records exist.

get_property_values_response

{
  "code": "string",
  "message": "string",
  "properties": [
    {
      "id": "prop_0192b7e8b4f8ca08110d2b22059662a8",
      "name": "Town",
      "description": "Where the entity is located",
      "key": "kp_town",
      "value": "West-side Staines massive"
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
properties [property_value] false none none
next_token string false none Pagination token.

create_category_response

{
  "message": "string",
  "code": "string",
  "category": {
    "id": "string"
  }
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none
category object false none none
» id string false none The category's ID.

get_categories_response

{
  "code": "string",
  "message": "string",
  "categories": [
    {
      "id": "string",
      "name": "string"
    }
  ],
  "has_more": true
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
categories [category] false none none
has_more boolean false none Whether more records exist.

get_event_response

{
  "code": "string",
  "message": "string",
  "event": {
    "type": "string",
    "source": "string",
    "event_id": "string",
    "timestamp": "string",
    "data": {}
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
event object false none none
» type string false none none
» source string false none none
» event_id string false none none
» timestamp string false none Timestamp in ISO 8601 format.
» data object false none Event specific data object.

get_event_types_response

{
  "code": "string",
  "message": "string",
  "event_types": [
    {
      "id": "string",
      "code": "string",
      "name": "string",
      "origin": "string",
      "schema": {}
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
event_types [event_type] false none none

get_webhooks_response

{
  "code": "string",
  "message": "string",
  "webhooks": [
    {
      "id": "string",
      "name": "string",
      "endpoint": "string",
      "description": "string",
      "event_types": [
        "string"
      ],
      "created_on": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
webhooks [webhook] false none none

webhook

{
  "id": "string",
  "name": "string",
  "endpoint": "string",
  "description": "string",
  "event_types": [
    "string"
  ],
  "created_on": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
endpoint string false none none
description string false none none
event_types [string] false none none
created_on string false none Created on date in ISO 8601 format.

create_webhook_response

{
  "code": "string",
  "message": "string",
  "webhook": {
    "id": "string",
    "endpoint": "string"
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
webhook object false none none
» id string false none none
» endpoint string false none none

update_webhook_response

{
  "message": "string",
  "code": "string",
  "webhook": {
    "id": "string"
  }
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none
webhook object false none none
» id string false none none

create_connection_response

{
  "message": "string",
  "code": "string",
  "connection": {
    "id": "string"
  }
}

Properties

Name Type Required Restrictions Description
message string false none none
code string false none none
connection object false none none
» id string false none The connection's ID.

get_connections_response

{
  "code": "string",
  "message": "string",
  "connections": [
    {
      "id": "string",
      "name": "string",
      "display_name": "string",
      "strategy": "string"
    }
  ],
  "has_more": true
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
connections [connection] false none none
has_more boolean false none Whether more records exist.

delete_webhook_response

{
  "code": "string",
  "message": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.

event_type

{
  "id": "string",
  "code": "string",
  "name": "string",
  "origin": "string",
  "schema": {}
}

Properties

Name Type Required Restrictions Description
id string false none none
code string false none none
name string false none none
origin string false none none
schema object false none none

token_introspect

{
  "active": true,
  "aud": [
    "string"
  ],
  "client_id": "string",
  "exp": "string",
  "iat": "string"
}

Properties

Name Type Required Restrictions Description
active boolean false none Indicates the status of the token.
aud [string] false none Array of intended token recipients.
client_id string false none Identifier for the requesting client.
exp string false none Token expiration timestamp.
iat string false none Token issuance timestamp.

token_error_response

{
  "error": "string",
  "error_description": "string"
}

Properties

Name Type Required Restrictions Description
error string false none Error.
error_description string false none The error description.

user_profile_v2

{
  "sub": "kp_c3143a4b50ad43c88e541d9077681782",
  "provided_id": "some_external_id",
  "name": "John Snow",
  "given_name": "John",
  "family_name": "Snow",
  "updated_at": 1612345678,
  "email": "john.snow@example.com",
  "email_verified": true,
  "picture": "https://example.com/john_snow.jpg",
  "preferred_username": "john_snow",
  "id": "kp_c3143a4b50ad43c88e541d9077681782"
}

Properties

Name Type Required Restrictions Description
sub string false none Unique ID of the user in Kinde.
provided_id string¦null false none Value of the user's ID in a third-party system when the user is imported into Kinde.
name string false none User's first and last name separated by a space.
given_name string false none User's first name.
family_name string false none User's last name.
updated_at integer false none Date the user was last updated at (In Unix time).
email string false none User's email address if available.
email_verified boolean false none Whether the user's email address has been verified.
picture string¦null false none URL that point's to the user's picture or avatar
preferred_username string¦null false none User's preferred username.
id string false none Unique ID of the user in Kinde

organization_item_schema

{
  "code": "org_1ccfb819462",
  "name": "Acme Corp",
  "handle": "acme_corp",
  "is_default": false,
  "external_id": "some1234",
  "is_auto_membership_enabled": true
}

Properties

Name Type Required Restrictions Description
code string false none The unique identifier for the organization.
name string false none The organization's name.
handle string¦null false none A unique handle for the organization - can be used for dynamic callback urls.
is_default boolean false none Whether the organization is the default organization.
external_id string¦null false none The organization's external identifier - commonly used when migrating from or mapping to other systems.
is_auto_membership_enabled boolean false none If users become members of this organization when the org code is supplied during authentication.

get_organization_response

{
  "code": "org_1ccfb819462",
  "name": "Acme Corp",
  "handle": "acme_corp",
  "is_default": false,
  "external_id": "some1234",
  "is_auto_membership_enabled": true,
  "logo": "string",
  "link_color": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "background_color": {
    "raw": "#ffffff",
    "hex": "#ffffff",
    "hsl": "hsl(0, 0%, 100%)"
  },
  "button_color": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "button_text_color": {
    "raw": "#ffffff",
    "hex": "#ffffff",
    "hsl": "hsl(0, 0%, 100%)"
  },
  "link_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "background_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "button_text_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "button_color_dark": {
    "raw": "#0056F1",
    "hex": "#0056F1",
    "hsl": "hsl(220, 100%, 50%)"
  },
  "is_allow_registrations": true
}

Properties

Name Type Required Restrictions Description
code string false none The unique identifier for the organization.
name string false none The organization's name.
handle string¦null false none A unique handle for the organization - can be used for dynamic callback urls.
is_default boolean false none Whether the organization is the default organization.
external_id string¦null false none The organization's external identifier - commonly used when migrating from or mapping to other systems.
is_auto_membership_enabled boolean false none If users become members of this organization when the org code is supplied during authentication.
logo string¦null false none none
link_color object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
background_color object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
button_color object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
button_text_color object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
link_color_dark object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
background_color_dark object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
button_text_color_dark object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
button_color_dark object¦null false none none
» raw string false none none
» hex string false none none
» hsl string false none none
is_allow_registrations boolean¦null false none Deprecated - Use 'is_auto_membership_enabled' instead

organization_user

{
  "id": "string",
  "email": "string",
  "full_name": "string",
  "last_name": "string",
  "first_name": "string",
  "picture": "string",
  "roles": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
id string false none none
email string false none none
full_name string false none none
last_name string false none none
first_name string false none none
picture string false none none
roles [string] false none none

category

{
  "id": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none

connection

{
  "id": "string",
  "name": "string",
  "display_name": "string",
  "strategy": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
display_name string false none none
strategy string false none none

environment_variable

{
  "id": "env_var_0192b1941f125645fa15bf28a662a0b3",
  "key": "MY_API_KEY",
  "value": "some-secret",
  "is_secret": false,
  "created_on": "2021-01-01T00:00:00Z"
}

Properties

Name Type Required Restrictions Description
id string false none The unique ID for the environment variable.
key string false none The name of the environment variable.
value string¦null false none The value of the environment variable.
is_secret boolean false none Whether the environment variable is sensitive.
created_on string false none The date the environment variable was created.

identity

{
  "id": "string",
  "type": "string",
  "is_confirmed": true,
  "created_on": "string",
  "last_login_on": "string",
  "total_logins": 0,
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
type string false none none
is_confirmed boolean false none none
created_on string false none Date of user creation in ISO 8601 format.
last_login_on string false none Date of user creation in ISO 8601 format.
total_logins integer false none none
name string false none none

property

{
  "id": "string",
  "key": "string",
  "name": "string",
  "is_private": true,
  "description": "string",
  "is_kinde_property": true
}

Properties

Name Type Required Restrictions Description
id string false none none
key string false none none
name string false none none
is_private boolean false none none
description string false none none
is_kinde_property boolean false none none

property_value

{
  "id": "prop_0192b7e8b4f8ca08110d2b22059662a8",
  "name": "Town",
  "description": "Where the entity is located",
  "key": "kp_town",
  "value": "West-side Staines massive"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
description string¦null false none none
key string false none none
value string¦null false none none

role

{
  "id": "string",
  "key": "string",
  "name": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
key string false none none
name string false none none
description string false none none

subscribers_subscriber

{
  "id": "string",
  "email": "string",
  "full_name": "string",
  "first_name": "string",
  "last_name": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
email string false none none
full_name string false none none
first_name string false none none
last_name string false none none

subscriber

{
  "id": "string",
  "preferred_email": "string",
  "first_name": "string",
  "last_name": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
preferred_email string false none none
first_name string false none none
last_name string false none none

organization_user_role

{
  "id": "string",
  "key": "string",
  "name": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
key string false none none
name string false none none

organization_user_role_permissions

{
  "id": "string",
  "role": "string",
  "permissions": {
    "key": "string"
  }
}

Properties

Name Type Required Restrictions Description
id string false none none
role string false none none
permissions object false none none
» key string false none none

organization_user_permission

{
  "id": "string",
  "key": "string",
  "name": "string",
  "description": "string",
  "roles": [
    {
      "id": "string",
      "key": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string false none none
key string false none none
name string false none none
description string false none none
roles [object] false none none
» id string false none none
» key string false none none

organization_users

[
  {
    "id": "string",
    "email": "string",
    "full_name": "string",
    "last_name": "string",
    "first_name": "string",
    "picture": "string",
    "roles": [
      "string"
    ]
  }
]

Properties

Name Type Required Restrictions Description
anonymous [organization_user] false none none

get_subscriber_response

{
  "code": "string",
  "message": "string",
  "subscribers": [
    {
      "id": "string",
      "preferred_email": "string",
      "first_name": "string",
      "last_name": "string"
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
subscribers [subscriber] false none none

get_subscribers_response

{
  "code": "string",
  "message": "string",
  "subscribers": [
    {
      "id": "string",
      "email": "string",
      "full_name": "string",
      "first_name": "string",
      "last_name": "string"
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
subscribers [subscribers_subscriber] false none none
next_token string false none Pagination token.

get_roles_response

{
  "code": "string",
  "message": "string",
  "roles": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "description": "string",
      "is_default_role": true
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
roles [roles] false none none
next_token string false none Pagination token.

get_role_response

{
  "code": "string",
  "message": "string",
  "role": {
    "id": "01929904-316d-bb2c-069f-99dfea4ac394",
    "key": "admin",
    "name": "Administrator",
    "description": "Full access to all resources.",
    "is_default_role": false
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
role object false none none
» id string false none The role's ID.
» key string false none The role identifier to use in code.
» name string false none The role's name.
» description string false none The role's description.
» is_default_role boolean false none Whether the role is the default role.

create_roles_response

{
  "code": "string",
  "message": "string",
  "role": {
    "id": "string"
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
role object false none none
» id string false none The role's ID.

get_organizations_response

{
  "code": "OK",
  "message": "Success",
  "organizations": [
    {
      "code": "org_1ccfb819462",
      "name": "Acme Corp",
      "handle": "acme_corp",
      "is_default": false,
      "external_id": "some1234",
      "is_auto_membership_enabled": true
    }
  ],
  "next_token": "Mjo5Om1hbWVfYZNj"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
organizations [organization_item_schema] false none none
next_token string false none Pagination token.

get_organization_users_response

{
  "code": "string",
  "message": "string",
  "organization_users": [
    {
      "id": "string",
      "email": "string",
      "full_name": "string",
      "last_name": "string",
      "first_name": "string",
      "picture": "string",
      "roles": [
        "string"
      ]
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
organization_users [organization_user] false none none
next_token string false none Pagination token.

get_organizations_user_roles_response

{
  "code": "string",
  "message": "string",
  "roles": [
    {
      "id": "string",
      "key": "string",
      "name": "string"
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
roles [organization_user_role] false none none
next_token string false none Pagination token.

get_organizations_user_permissions_response

{
  "code": "string",
  "message": "string",
  "permissions": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "description": "string",
      "roles": [
        {
          "id": "string",
          "key": "string"
        }
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
permissions [organization_user_permission] false none none

get_organization_feature_flags_response

{
  "code": "string",
  "message": "string",
  "feature_flags": {
    "property1": {
      "type": "str",
      "value": "string"
    },
    "property2": {
      "type": "str",
      "value": "string"
    }
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
feature_flags object false none The environment's feature flag settings.
» additionalProperties object false none none
»» type string false none none
»» value string false none none

Enumerated Values

Property Value
type str
type int
type bool

get_environment_feature_flags_response

{
  "code": "string",
  "message": "string",
  "feature_flags": {
    "property1": {
      "type": "str",
      "value": "string"
    },
    "property2": {
      "type": "str",
      "value": "string"
    }
  },
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
feature_flags object false none The environment's feature flag settings.
» additionalProperties object false none none
»» type string false none none
»» value string false none none
next_token string false none Pagination token.

Enumerated Values

Property Value
type str
type int
type bool

add_organization_users_response

{
  "code": "string",
  "message": "string",
  "users_added": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
users_added [string] false none none

update_role_permissions_response

{
  "code": "string",
  "message": "string",
  "permissions_added": [
    "string"
  ],
  "permissions_removed": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
code string false none none
message string false none none
permissions_added [string] false none none
permissions_removed [string] false none none

update_organization_users_response

{
  "message": "string",
  "users_added": [
    "string"
  ],
  "users_updated": [
    "string"
  ],
  "users_removed": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
message string false none none
users_added [string] false none none
users_updated [string] false none none
users_removed [string] false none none

connected_apps_auth_url

{
  "url": "string",
  "session_id": "string"
}

Properties

Name Type Required Restrictions Description
url string false none A URL that is used to authenticate an end-user against a connected app.
session_id string false none A unique identifier for the login session.

create_subscriber_success_response

{
  "subscriber": {
    "subscriber_id": "string"
  }
}

Properties

Name Type Required Restrictions Description
subscriber object false none none
» subscriber_id string false none A unique identifier for the subscriber.

connected_apps_access_token

{
  "access_token": "string",
  "access_token_expiry": "string"
}

Properties

Name Type Required Restrictions Description
access_token string false none The access token to access a third-party provider.
access_token_expiry string false none The date and time that the access token expires.

api_result

{
  "result": "string"
}

Properties

Name Type Required Restrictions Description
result string false none The result of the api operation.

create_application_response

{
  "code": "string",
  "message": "string",
  "application": {
    "id": "string",
    "client_id": "string",
    "client_secret": "string"
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
application object false none none
» id string false none The application's identifier.
» client_id string false none The application's client ID.
» client_secret string false none The application's client secret.

get_application_response

{
  "code": "string",
  "message": "string",
  "application": {
    "id": "string",
    "name": "string",
    "type": "string",
    "client_id": "string",
    "client_secret": "string",
    "login_uri": "string",
    "homepage_uri": "string"
  }
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
application object false none none
» id string false none The application's identifier.
» name string false none The application's name.
» type string false none The application's type.
» client_id string false none The application's client ID.
» client_secret string false none The application's client secret.
» login_uri string false none The default login route for resolving session issues.
» homepage_uri string false none The homepage link to your application.

applications

{
  "id": "string",
  "name": "string",
  "type": "string"
}

Properties

Name Type Required Restrictions Description
id string false none none
name string false none none
type string false none none

get_applications_response

{
  "code": "string",
  "message": "string",
  "applications": [
    {
      "id": "string",
      "name": "string",
      "type": "string"
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
applications [applications] false none none
next_token string false none Pagination token.

redirect_callback_urls

{
  "redirect_urls": [
    "string"
  ]
}

Properties

Name Type Required Restrictions Description
redirect_urls [string] false none An application's redirect URLs.

get_redirect_callback_urls_response

{
  "redirect_urls": [
    {
      "redirect_urls": [
        "string"
      ]
    }
  ]
}

Properties

Name Type Required Restrictions Description
redirect_urls [redirect_callback_urls] false none An application's redirect callback URLs.

logout_redirect_urls

{
  "logout_urls": [
    "string"
  ],
  "code": "OK",
  "message": "Success"
}

Properties

Name Type Required Restrictions Description
logout_urls [string] false none An application's logout URLs.
code string false none Response code.
message string false none Response message.

get_permissions_response

{
  "code": "string",
  "message": "string",
  "permissions": [
    {
      "id": "string",
      "key": "string",
      "name": "string",
      "description": "string"
    }
  ],
  "next_token": "string"
}

Properties

Name Type Required Restrictions Description
code string false none Response code.
message string false none Response message.
permissions [permissions] false none none
next_token string false none Pagination token.

permissions

{
  "id": "string",
  "key": "string",
  "name": "string",
  "description": "string"
}

Properties

Name Type Required Restrictions Description
id string false none The permission's ID.
key string false none The permission identifier to use in code.
name string false none The permission's name.
description string false none The permission's description.

roles

{
  "id": "string",
  "key": "string",
  "name": "string",
  "description": "string",
  "is_default_role": true
}

Properties

Name Type Required Restrictions Description
id string false none The role's ID.
key string false none The role identifier to use in code.
name string false none The role's name.
description string¦null false none The role's description.
is_default_role boolean false none Whether the role is the default role.

roles_permission_response

[
  {
    "id": "string",
    "key": "string",
    "name": "string",
    "description": "string"
  }
]

Properties

Name Type Required Restrictions Description
id string false none none
key string false none none
name string false none none
description string false none none