MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token.

Endpoints

GET api/health

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/health" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/health"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "status": "ok",
    "service": "gryphon-api",
    "version": "unknown",
    "timestamp": "2026-09-25T08:45:10+00:00",
    "app_version": "unknown"
}
 

Request   

GET api/health

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Handle webhook from WorkMarket for payment status updates

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/workmarket/webhook" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/webhook"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/workmarket/webhook

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Public login-page endpoint. Returns active site banners only.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/site-banners/active" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/site-banners/active"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "data": [],
    "app_version": "unknown"
}
 

Request   

GET api/site-banners/active

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/status/outage

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/status/outage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/status/outage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "outage": false,
    "app_version": "unknown"
}
 

Request   

GET api/status/outage

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Return the registry contract as {data: placeholder[], meta: {contexts: {key, label}[], storage_strategy: string}}.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rich-text/placeholders" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rich-text/placeholders"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rich-text/placeholders

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/rich-text/resolution-failures

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rich-text/resolution-failures" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"context\": \"b\",
    \"end_date\": \"2052-10-18\",
    \"page\": 22,
    \"per_page\": 7,
    \"render_stage\": \"preview\",
    \"sort_by\": \"render_stage\",
    \"sort_order\": \"desc\",
    \"start_date\": \"2026-09-25T08:45:10\",
    \"token\": \"z\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rich-text/resolution-failures"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "context": "b",
    "end_date": "2052-10-18",
    "page": 22,
    "per_page": 7,
    "render_stage": "preview",
    "sort_by": "render_stage",
    "sort_order": "desc",
    "start_date": "2026-09-25T08:45:10",
    "token": "z"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rich-text/resolution-failures

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

context   string  optional  

Must not be greater than 100 characters. Example: b

end_date   string  optional  

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-10-18

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

reference_id   string  optional  
render_stage   string  optional  

Example: preview

Must be one of:
  • preview
  • final_render
sort_by   string  optional  

Example: render_stage

Must be one of:
  • context
  • created_at
  • reference_id
  • render_stage
  • token
sort_order   string  optional  

Example: desc

Must be one of:
  • asc
  • desc
start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

token   string  optional  

Must not be greater than 100 characters. Example: z

GET api/rich-text/resolution-failures/{richTextResolutionFailure}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rich-text/resolution-failures/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rich-text/resolution-failures/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rich-text/resolution-failures/{richTextResolutionFailure}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

richTextResolutionFailure   string   

Example: architecto

POST api/rich-text/render

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/rich-text/render" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"content\": {
        \"content\": [],
        \"type\": \"doc\"
    },
    \"context\": \"alert_template\",
    \"output_format\": \"pdf\",
    \"reference_id\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rich-text/render"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "content": {
        "content": [],
        "type": "doc"
    },
    "context": "alert_template",
    "output_format": "pdf",
    "reference_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/rich-text/render

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

content   object   
content   object   
type   string   

Example: doc

Must be one of:
  • doc
context   string   

Example: alert_template

Must be one of:
  • alert_template
output_format   string   

Example: pdf

Must be one of:
  • html
  • pdf
reference_id   string   

Example: architecto

POST api/rich-text/resolve

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/rich-text/resolve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"context\": \"banner_builder\",
    \"reference_id\": \"architecto\",
    \"render_stage\": \"final_render\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rich-text/resolve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "context": "banner_builder",
    "reference_id": "architecto",
    "render_stage": "final_render"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/rich-text/resolve

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

context   string   

Example: banner_builder

Must be one of:
  • alert_template
  • banner_builder
reference_id   string   

Example: architecto

render_stage   string   

Example: final_render

Must be one of:
  • preview
  • final_render

POST api/rich-text/validate

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/rich-text/validate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"content\": {
        \"content\": [],
        \"type\": \"doc\"
    },
    \"context\": \"banner_builder\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rich-text/validate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "content": {
        "content": [],
        "type": "doc"
    },
    "context": "banner_builder"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/rich-text/validate

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

content   object   
content   object   
type   string   

Example: doc

Must be one of:
  • doc
context   string   

Example: banner_builder

Must be one of:
  • alert_template
  • banner_builder

GET api/addresses

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/addresses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/addresses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/addresses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/addresses/zip-lookup

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/addresses/zip-lookup" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/addresses/zip-lookup"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/addresses/zip-lookup

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/addresses/complete

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/addresses/complete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/addresses/complete"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/addresses/complete

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/qs_reports

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/qs_reports" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/qs_reports"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/qs_reports

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/qs_reports/getEmbedUrl

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/qs_reports/getEmbedUrl" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/qs_reports/getEmbedUrl"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/qs_reports/getEmbedUrl

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/logout

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/logout" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/logout"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/logout

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/register/submit

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/register/submit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"domain\": \"architecto\",
    \"company\": \"n\",
    \"name\": \"g\",
    \"email\": \"rowan.gulgowski@example.com\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/register/submit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "domain": "architecto",
    "company": "n",
    "name": "g",
    "email": "rowan.gulgowski@example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/register/submit

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

domain   string  optional  

Example: architecto

company   string   

Must not be greater than 255 characters. Example: n

name   string   

Must not be greater than 255 characters. Example: g

email   string   

Must be a valid email address. Must not be greater than 255 characters. Example: rowan.gulgowski@example.com

GET api/professional-designations

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/professional-designations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/professional-designations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/professional-designations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/professional-designations

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/professional-designations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"architecto\",
    \"name\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"is_active\": false,
    \"display_order\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/professional-designations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "architecto",
    "name": "architecto",
    "description": "Eius et animi quos velit et.",
    "is_active": false,
    "display_order": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/professional-designations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

code   string   

Example: architecto

name   string   

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

is_active   boolean  optional  

Example: false

display_order   integer  optional  

Example: 16

POST /api/clients/standalone Creates a top-level (standalone) company.

requires authentication

Requires company_role=Operational (enforced by write service).

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/standalone" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"company_name\": \"b\",
    \"company_role\": \"architecto\",
    \"abbreviation\": \"ngzmiy\",
    \"domain\": \"v\",
    \"under_loa\": true,
    \"case_id_type\": \"d\",
    \"timezone\": \"Asia\\/Barnaul\",
    \"client_category_id\": 16,
    \"phones\": [
        {
            \"number\": \"b\",
            \"type\": \"mobile\"
        }
    ],
    \"emails\": [
        {
            \"address\": \"n\",
            \"type\": \"work\"
        }
    ],
    \"business_state\": \"GA\",
    \"addresses\": [
        {
            \"line_1\": \"g\",
            \"line_2\": \"z\",
            \"city\": \"m\",
            \"state\": \"i\",
            \"zip_code\": \"y\",
            \"is_primary\": true,
            \"type\": \"work\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/standalone"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "company_name": "b",
    "company_role": "architecto",
    "abbreviation": "ngzmiy",
    "domain": "v",
    "under_loa": true,
    "case_id_type": "d",
    "timezone": "Asia\/Barnaul",
    "client_category_id": 16,
    "phones": [
        {
            "number": "b",
            "type": "mobile"
        }
    ],
    "emails": [
        {
            "address": "n",
            "type": "work"
        }
    ],
    "business_state": "GA",
    "addresses": [
        {
            "line_1": "g",
            "line_2": "z",
            "city": "m",
            "state": "i",
            "zip_code": "y",
            "is_primary": true,
            "type": "work"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/standalone

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

company_name   string   

Must not be greater than 255 characters. Example: b

company_role   string   

Example: architecto

Must be one of:
  • Operational
  • Organizational
  • Vendor
abbreviation   string  optional  

Must not be greater than 10 characters. Example: ngzmiy

domain   string  optional  

Must not be greater than 63 characters. Example: v

under_loa   boolean   

Example: true

case_id_type   string   

Must not be greater than 100 characters. Example: d

timezone   string  optional  

Must be a valid time zone, such as Africa/Accra. Example: Asia/Barnaul

client_category_id   integer  optional  

The id of an existing record in the client_categories table. Example: 16

data   object  optional  
phones   object[]   

Must have at least 1 items.

number   string   

Must not be greater than 255 characters. Example: b

type   string   

Example: mobile

Must be one of:
  • main
  • home
  • work
  • mobile
emails   object[]   

Must have at least 1 items.

address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string   

Example: work

Must be one of:
  • main
  • personal
  • work
  • secondary
addresses   object[]  optional  
line_1   string   

Must not be greater than 255 characters. Example: g

line_2   string  optional  

Must not be greater than 255 characters. Example: z

city   string   

Must not be greater than 255 characters. Example: m

state   string   

Must not be greater than 255 characters. Example: i

zip_code   string   

Must not be greater than 255 characters. Example: y

is_primary   boolean  optional  

Example: true

type   string   

Example: work

Must be one of:
  • home
  • work
  • billing
  • shipping
business_state   string  optional  

Example: GA

Must be one of:
  • AL
  • AK
  • AZ
  • AR
  • CA
  • CO
  • CT
  • DE
  • DC
  • FL
  • GA
  • HI
  • ID
  • IL
  • IN
  • IA
  • KS
  • KY
  • LA
  • ME
  • MD
  • MA
  • MI
  • MN
  • MS
  • MO
  • MT
  • NE
  • NV
  • NH
  • NJ
  • NM
  • NY
  • NC
  • ND
  • OH
  • OK
  • OR
  • PA
  • RI
  • SC
  • SD
  • TN
  • TX
  • UT
  • VT
  • VA
  • WA
  • WV
  • WI
  • WY

POST /api/clients/{parentId}/children Creates a child company under the given parent.

requires authentication

Parent must exist and belong to the tenant tree.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/children" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"company_name\": \"b\",
    \"company_role\": \"architecto\",
    \"abbreviation\": \"ngzmiy\",
    \"domain\": \"v\",
    \"under_loa\": false,
    \"case_id_type\": \"d\",
    \"timezone\": \"Asia\\/Barnaul\",
    \"client_category_id\": 16,
    \"phones\": [
        {
            \"number\": \"b\",
            \"type\": \"mobile\"
        }
    ],
    \"emails\": [
        {
            \"address\": \"n\",
            \"type\": \"main\"
        }
    ],
    \"business_state\": \"NJ\",
    \"addresses\": [
        {
            \"line_1\": \"g\",
            \"line_2\": \"z\",
            \"city\": \"m\",
            \"state\": \"i\",
            \"zip_code\": \"y\",
            \"is_primary\": true,
            \"type\": \"billing\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/children"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "company_name": "b",
    "company_role": "architecto",
    "abbreviation": "ngzmiy",
    "domain": "v",
    "under_loa": false,
    "case_id_type": "d",
    "timezone": "Asia\/Barnaul",
    "client_category_id": 16,
    "phones": [
        {
            "number": "b",
            "type": "mobile"
        }
    ],
    "emails": [
        {
            "address": "n",
            "type": "main"
        }
    ],
    "business_state": "NJ",
    "addresses": [
        {
            "line_1": "g",
            "line_2": "z",
            "city": "m",
            "state": "i",
            "zip_code": "y",
            "is_primary": true,
            "type": "billing"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{parentId}/children

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

parentId   string   

Example: 564

Body Parameters

company_name   string   

Must not be greater than 255 characters. Example: b

company_role   string  optional  

Example: architecto

Must be one of:
  • Operational
  • Organizational
  • Vendor
abbreviation   string  optional  

Must not be greater than 10 characters. Example: ngzmiy

domain   string  optional  

Must not be greater than 63 characters. Example: v

under_loa   boolean   

Example: false

case_id_type   string   

Must not be greater than 100 characters. Example: d

timezone   string  optional  

Must be a valid time zone, such as Africa/Accra. Example: Asia/Barnaul

client_category_id   integer  optional  

The id of an existing record in the client_categories table. Example: 16

data   object  optional  
phones   object[]   

Must have at least 1 items.

number   string   

Must not be greater than 255 characters. Example: b

type   string   

Example: mobile

Must be one of:
  • main
  • home
  • work
  • mobile
emails   object[]   

Must have at least 1 items.

address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string   

Example: main

Must be one of:
  • main
  • personal
  • work
  • secondary
addresses   object[]  optional  
line_1   string   

Must not be greater than 255 characters. Example: g

line_2   string  optional  

Must not be greater than 255 characters. Example: z

city   string   

Must not be greater than 255 characters. Example: m

state   string   

Must not be greater than 255 characters. Example: i

zip_code   string   

Must not be greater than 255 characters. Example: y

is_primary   boolean  optional  

Example: true

type   string   

Example: billing

Must be one of:
  • home
  • work
  • billing
  • shipping
business_state   string  optional  

Example: NJ

Must be one of:
  • AL
  • AK
  • AZ
  • AR
  • CA
  • CO
  • CT
  • DE
  • DC
  • FL
  • GA
  • HI
  • ID
  • IL
  • IN
  • IA
  • KS
  • KY
  • LA
  • ME
  • MD
  • MA
  • MI
  • MN
  • MS
  • MO
  • MT
  • NE
  • NV
  • NH
  • NJ
  • NM
  • NY
  • NC
  • ND
  • OH
  • OK
  • OR
  • PA
  • RI
  • SC
  • SD
  • TN
  • TX
  • UT
  • VT
  • VA
  • WA
  • WV
  • WI
  • WY

GET /api/clients/operational-picker Returns Operational + Active companies visible to the authenticated user, with hierarchy paths resolved in a single batch query.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/operational-picker" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/operational-picker"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/operational-picker

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET /api/clients/{id}/hierarchy Accepts any node ID (root, child, or deep descendant).

requires authentication

Auto-resolves to the tree root via the closure table. ModelNotFoundException propagates to Handler → 404 'Client not found.'

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/hierarchy" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/hierarchy"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/hierarchy

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the client. Example: 564

GET /api/clients/{id}/relationships Returns direct parent and direct children for the given client.

requires authentication

ModelNotFoundException propagates to Handler → 404 'Client not found.'

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/relationships" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/relationships"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/relationships

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the client. Example: 564

GET /api/clients/{id}/eligible-parents Returns the clients eligible to become the parent of the given company, backing the Add Parent picker (Client Hierarchy BE §1.8 Q6).

requires authentication

In-hierarchy target → clients sharing its root minus self + descendants (cycle-safe). Standalone/parentless target → all clients except self. Vendor companies are always excluded. Paginated via the standard page/per_page params. ModelNotFoundException propagates to Handler → 404 'Client not found.'

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/eligible-parents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/eligible-parents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/eligible-parents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the client. Example: 564

GET /api/clients/{id}/covered-companies/effective Directly-attached companies plus their auto-inherited descendants.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies/effective" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies/effective"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/covered-companies/effective

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the client. Example: 564

GET /api/clients/{id}/covered-companies Directly-attached covered companies (no descendant expansion).

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/covered-companies

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the client. Example: 564

POST /api/clients/{id}/covered-companies Attach one or more covered companies; returns the updated direct list.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"company_ids\": [
        16
    ],
    \"case_creation\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "company_ids": [
        16
    ],
    "case_creation": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{id}/covered-companies

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the client. Example: 564

Body Parameters

company_ids   integer[]  optional  

The id of an existing record in the clients table.

case_creation   boolean  optional  

Example: false

DELETE /api/clients/{id}/covered-companies/{companyId} Detach a single covered company.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/covered-companies/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clients/{id}/covered-companies/{companyId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the client. Example: 564

companyId   string   

Example: 564

GET /api/clients/{client}/internal-documents Lists internal documents for a central user on the given client.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{client_id}/internal-documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

POST /api/clients/{client}/internal-documents Uploads a new internal document for the given client.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "file=@/tmp/phpm5gmqf4ko407b6prp4T" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request   

POST api/clients/{client_id}/internal-documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

Body Parameters

file   file   

Must be a file. Must not be greater than 8192 kilobytes. Example: /tmp/phpm5gmqf4ko407b6prp4T

GET /api/clients/{client}/internal-documents/{documentId}/preview Returns a signed preview URL when supported, otherwise an inline stream.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents/564/preview" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents/564/preview"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{client_id}/internal-documents/{documentId}/preview

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

documentId   string   

Example: 564

GET api/clients/{client_id}/documents

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16/documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{client_id}/documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

POST api/clients/{client_id}/documents

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/16/documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "file=@/tmp/phpeas7vq21ab7kaQMgcEk" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request   

POST api/clients/{client_id}/documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

Body Parameters

file   file   

Must be a file. Must not be greater than 8192 kilobytes. Example: /tmp/phpeas7vq21ab7kaQMgcEk

GET api/clients/{client_id}/documents/{documentId}/preview

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16/documents/564/preview" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/documents/564/preview"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{client_id}/documents/{documentId}/preview

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

documentId   string   

Example: 564

DELETE api/clients/{client_id}/documents/{documentId}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clients/16/documents/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/documents/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clients/{client_id}/documents/{documentId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

documentId   string   

Example: 564

PATCH /api/clients/{client}/internal-documents/{documentId} Replaces an existing internal document with a new file upload.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "file=@/tmp/phpg9clho2rorfgcA9ftBx" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "PATCH",
    headers,
    body,
}).then(response => response.json());

Request   

PATCH api/clients/{client_id}/internal-documents/{documentId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

documentId   string   

Example: 564

Body Parameters

file   file   

Must be a file. Must not be greater than 8192 kilobytes. Example: /tmp/phpg9clho2rorfgcA9ftBx

DELETE /api/clients/{client}/internal-documents/{documentId} Soft-deletes an internal document and removes its stored binary.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/internal-documents/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clients/{client_id}/internal-documents/{documentId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

documentId   string   

Example: 564

POST /api/clients/{clientId}/inheritance/detach Detaches a section from parent inheritance, making it locally owned.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/inheritance/detach" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"section\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/inheritance/detach"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "section": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{clientId}/inheritance/detach

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clientId   integer   

Example: 564

Body Parameters

section   string   

Must not be greater than 100 characters. Example: b

Must be one of:
  • DUE_DATES_AND_TURNAROUND_TIMES
  • MISCELLANEOUS
  • LINES_OF_BUSINESS_AND_MEMBER_ID_TYPES
  • REQUEST_TYPES
  • CLINICAL_CRITERIA
  • PRICING
  • NARRATIVE_REPORTS_SUBMISSION
  • AUTO_ASSIGN_CASE_MANAGERS
  • CUSTOM_ALERTS
  • PAYER_INFO
  • INVOICE_SUBMISSION
  • INVOICE_CONTENT_TYPES
  • PURCHASE_ORDER
  • USERS

POST /api/clients/{clientId}/inheritance/reattach Re-attaches a section to the parent's inheritance chain.

requires authentication

Requires confirm=true (FormRequest enforces this).

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/inheritance/reattach" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"section\": \"b\",
    \"confirm\": true
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/inheritance/reattach"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "section": "b",
    "confirm": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{clientId}/inheritance/reattach

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clientId   integer   

Example: 564

Body Parameters

section   string   

Must not be greater than 100 characters. Example: b

Must be one of:
  • DUE_DATES_AND_TURNAROUND_TIMES
  • MISCELLANEOUS
  • LINES_OF_BUSINESS_AND_MEMBER_ID_TYPES
  • REQUEST_TYPES
  • CLINICAL_CRITERIA
  • PRICING
  • NARRATIVE_REPORTS_SUBMISSION
  • AUTO_ASSIGN_CASE_MANAGERS
  • CUSTOM_ALERTS
  • PAYER_INFO
  • INVOICE_SUBMISSION
  • INVOICE_CONTENT_TYPES
  • PURCHASE_ORDER
  • USERS
confirm   boolean   

Must be accepted. Example: true

GET /api/clients/{clientId}/sections

requires authentication

Deliberately role-NEUTRAL, including for Vendors (decided under GRY-3814): the listing describes which sections exist and their inheritance state, not which ones a role's form renders. The Vendor section matrix is product spec §4.4 and the FE drives its hide-list from registry declarations (GRY-3850 / GRY-3844), so filtering here would duplicate that rule in a second place and drift from it. Vendor exclusion is enforced where it changes state instead — per-section read/write guards (Payer Info: GRY-3814; Invoice Submission: GRY-3807; Invoice Content: GRY-3808; Purchase Order: GRY-3809).

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/sections" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/sections"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{clientId}/sections

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clientId   integer   

Example: 564

PATCH /api/clients/{id}/payer

requires authentication

Assign a payer company to this client. Guards:

On Finance incompleteness: fires audit event payer_assignment_blocked_missing_finance (fire-and-forget) then throws PayerAssignmentBlockedMissingFinanceException (→ 400).

Permission: update:organizations

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/564/payer" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"payer_client_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/payer"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "payer_client_id": 16
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}/payer

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

payer_client_id   integer   

The id of an existing record in the clients table. Example: 16

GET api/clients/{id}/payer-info

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/payer-info" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/payer-info"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/payer-info

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

PATCH api/clients/{id}/payer-info

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/564/payer-info" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"billing_email\": {
        \"address\": \"b\"
    },
    \"billing_phone\": {
        \"number\": \"n\"
    },
    \"billing_address\": {
        \"line_1\": \"g\",
        \"line_2\": \"z\",
        \"city\": \"m\",
        \"state\": \"i\",
        \"zip_code\": \"y\"
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/payer-info"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "billing_email": {
        "address": "b"
    },
    "billing_phone": {
        "number": "n"
    },
    "billing_address": {
        "line_1": "g",
        "line_2": "z",
        "city": "m",
        "state": "i",
        "zip_code": "y"
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}/payer-info

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

billing_email   object  optional  

Must have at least 1 items.

address   string  optional  

This field is required when billing_email is present. Must be a valid email address. Must not be greater than 255 characters. Example: b

billing_phone   object  optional  

Must have at least 1 items.

number   string  optional  

This field is required when billing_phone is present. Must not be greater than 255 characters. Example: n

billing_address   object  optional  

Must have at least 1 items.

line_1   string  optional  

This field is required when billing_address is present. Must not be greater than 255 characters. Example: g

line_2   string  optional  

Must not be greater than 255 characters. Example: z

city   string  optional  

This field is required when billing_address is present. Must not be greater than 255 characters. Example: m

state   string  optional  

This field is required when billing_address is present. Must not be greater than 255 characters. Example: i

zip_code   string  optional  

This field is required when billing_address is present. Must not be greater than 255 characters. Example: y

GET api/clients/{id}/rules

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/rules" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/rules"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/rules

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

PATCH api/clients/{id}/rules

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/564/rules" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"narrative_report_submission\": false,
    \"auto_assign_case_managers\": true,
    \"custom_alerts_enabled\": false,
    \"turnaround_days\": 1,
    \"yellow_threshold_hours\": 22,
    \"red_threshold_hours\": 7,
    \"sla_contact_hours\": 16,
    \"business_state\": \"NY\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/rules"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "narrative_report_submission": false,
    "auto_assign_case_managers": true,
    "custom_alerts_enabled": false,
    "turnaround_days": 1,
    "yellow_threshold_hours": 22,
    "red_threshold_hours": 7,
    "sla_contact_hours": 16,
    "business_state": "NY"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}/rules

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

narrative_report_submission   boolean  optional  

Example: false

auto_assign_case_managers   boolean  optional  

Example: true

custom_alerts_enabled   boolean  optional  

Example: false

turnaround_days   integer  optional  

Must be at least 0. Must not be greater than 4294967295. Example: 1

yellow_threshold_hours   integer  optional  

Must be at least 0. Must not be greater than 4294967295. Example: 22

red_threshold_hours   integer  optional  

Must be at least 0. Must not be greater than 4294967295. Example: 7

sla_contact_hours   integer  optional  

Must be at least 0. Must not be greater than 4294967295. Example: 16

business_state   string  optional  

Example: NY

Must be one of:
  • AL
  • AK
  • AZ
  • AR
  • CA
  • CO
  • CT
  • DE
  • DC
  • FL
  • GA
  • HI
  • ID
  • IL
  • IN
  • IA
  • KS
  • KY
  • LA
  • ME
  • MD
  • MA
  • MI
  • MN
  • MS
  • MO
  • MT
  • NE
  • NV
  • NH
  • NJ
  • NM
  • NY
  • NC
  • ND
  • OH
  • OK
  • OR
  • PA
  • RI
  • SC
  • SD
  • TN
  • TX
  • UT
  • VT
  • VA
  • WA
  • WV
  • WI
  • WY

GET api/clients/{id}/miscellaneous

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/miscellaneous" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/miscellaneous"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/miscellaneous

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

PATCH api/clients/{id}/miscellaneous

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/564/miscellaneous" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_notes\": \"architecto\",
    \"references\": \"architecto\",
    \"same_state_license\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/miscellaneous"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_notes": "architecto",
    "references": "architecto",
    "same_state_license": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}/miscellaneous

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

client_notes   string  optional  

Example: architecto

references   string  optional  

Example: architecto

same_state_license   boolean  optional  

Example: false

GET api/clients/{id}/invoice-submission

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-submission" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-submission"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/invoice-submission

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

PATCH api/clients/{id}/invoice-submission

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-submission" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"method\": \"email\",
    \"billing_frequency\": \"b\",
    \"time_to_invoice_due_days\": 22,
    \"payment_format\": \"g\",
    \"invoice_contact_email\": \"rowan.gulgowski@example.com\",
    \"send_format\": \"d\",
    \"security_level\": \"l\",
    \"email_recipients\": [
        \"j\"
    ],
    \"email_cc\": [
        \"n\"
    ],
    \"email_subject\": \"i\",
    \"email_body\": \"architecto\",
    \"email_attachments\": false,
    \"coupa_company_name\": \"n\",
    \"coupa_url\": \"http:\\/\\/crooks.biz\\/et-fugiat-sunt-nihil-accusantium\",
    \"coupa_id\": \"n\",
    \"coupa_shared_secret\": \"i\",
    \"invoice_location\": \"k\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-submission"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "method": "email",
    "billing_frequency": "b",
    "time_to_invoice_due_days": 22,
    "payment_format": "g",
    "invoice_contact_email": "rowan.gulgowski@example.com",
    "send_format": "d",
    "security_level": "l",
    "email_recipients": [
        "j"
    ],
    "email_cc": [
        "n"
    ],
    "email_subject": "i",
    "email_body": "architecto",
    "email_attachments": false,
    "coupa_company_name": "n",
    "coupa_url": "http:\/\/crooks.biz\/et-fugiat-sunt-nihil-accusantium",
    "coupa_id": "n",
    "coupa_shared_secret": "i",
    "invoice_location": "k"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}/invoice-submission

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

method   string  optional  

Example: email

Must be one of:
  • email
  • coupa
  • manual
billing_frequency   string  optional  

Must not be greater than 100 characters. Example: b

time_to_invoice_due_days   integer  optional  

Must be at least 0. Must not be greater than 4294967295. Example: 22

payment_format   string  optional  

Must not be greater than 100 characters. Example: g

invoice_contact_email   string  optional  

Must be a valid email address. Must not be greater than 255 characters. Example: rowan.gulgowski@example.com

send_format   string  optional  

Must not be greater than 100 characters. Example: d

security_level   string  optional  

Must not be greater than 100 characters. Example: l

email_recipients   string[]  optional  

Must be a valid email address. Must not be greater than 255 characters.

email_cc   string[]  optional  

Must be a valid email address. Must not be greater than 255 characters.

email_subject   string  optional  

Must not be greater than 255 characters. Example: i

email_body   string  optional  

Example: architecto

email_attachments   boolean  optional  

Example: false

coupa_company_name   string  optional  

Must not be greater than 255 characters. Example: n

coupa_url   string  optional  

Must be a valid URL. Must not be greater than 2048 characters. Example: http://crooks.biz/et-fugiat-sunt-nihil-accusantium

coupa_id   string  optional  

Must not be greater than 255 characters. Example: n

coupa_shared_secret   string  optional  

Must not be greater than 255 characters. Example: i

invoice_location   string  optional  

Must not be greater than 255 characters. Example: k

GET api/clients/{id}/invoice-content

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-content" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-content"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/invoice-content

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

PATCH api/clients/{id}/invoice-content

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-content" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"content_types\": [
        {
            \"format\": \"pdf\",
            \"label\": \"b\",
            \"summary_type\": \"by_lob\",
            \"detail_columns\": [
                \"n\"
            ],
            \"header_options\": [
                false
            ],
            \"xml_template\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/invoice-content"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "content_types": [
        {
            "format": "pdf",
            "label": "b",
            "summary_type": "by_lob",
            "detail_columns": [
                "n"
            ],
            "header_options": [
                false
            ],
            "xml_template": "architecto"
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}/invoice-content

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

content_types   object[]  optional  
format   string   

Example: pdf

Must be one of:
  • pdf
  • csv
  • xml
label   string  optional  

Must not be greater than 255 characters. Example: b

summary_type   string  optional  

Example: by_lob

Must be one of:
  • by_lob
  • by_item_type
  • by_hierarchy
  • by_client_and_type
detail_columns   string[]  optional  

Must not be greater than 100 characters.

header_options   boolean[]  optional  
xml_template   string  optional  

Example: architecto

GET api/clients/{id}/purchase-order

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/purchase-order" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/purchase-order"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/purchase-order

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

PATCH api/clients/{id}/purchase-order

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/564/purchase-order" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"active_period_start\": \"2026-09-25T08:45:10\",
    \"active_period_end\": \"2026-09-25T08:45:10\",
    \"billing_threshold\": 1,
    \"finance_alert_enabled\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/purchase-order"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "active_period_start": "2026-09-25T08:45:10",
    "active_period_end": "2026-09-25T08:45:10",
    "billing_threshold": 1,
    "finance_alert_enabled": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}/purchase-order

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

active_period_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

active_period_end   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

billing_threshold   number  optional  

Must be at least 0. Must not be greater than 9999999999.99. Example: 1

finance_alert_enabled   boolean  optional  

Example: false

POST /api/clients/{id}/move/preview Returns inheritance diff and an operation token required for confirm.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/move/preview" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"new_parent_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/move/preview"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "new_parent_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{id}/move/preview

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

new_parent_id   integer   

Must be at least 1. Example: 16

POST /api/clients/{id}/move/confirm Executes the move after token and concurrency validation.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/move/confirm" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"operation_token\": \"b\",
    \"expected_updated_at\": \"2026-09-25T08:45:10\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/move/confirm"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "operation_token": "b",
    "expected_updated_at": "2026-09-25T08:45:10"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{id}/move/confirm

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

operation_token   string   

Must not be greater than 255 characters. Example: b

expected_updated_at   string   

Must be a valid date. Example: 2026-09-25T08:45:10

POST /api/clients/{id}/parent-above Inserts a new blank parent company above the given company.

requires authentication

The new parent gets all sections LOCAL; the existing company's settings are unchanged.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/parent-above" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"company_name\": \"b\",
    \"company_role\": \"architecto\",
    \"abbreviation\": \"ngzmiy\",
    \"under_loa\": true,
    \"case_id_type\": \"v\",
    \"timezone\": \"Asia\\/Anadyr\",
    \"client_category_id\": 16,
    \"phones\": [
        {
            \"number\": \"b\",
            \"type\": \"main\"
        }
    ],
    \"emails\": [
        {
            \"address\": \"n\",
            \"type\": \"personal\"
        }
    ],
    \"business_state\": \"AL\",
    \"addresses\": [
        {
            \"line_1\": \"g\",
            \"line_2\": \"z\",
            \"city\": \"m\",
            \"state\": \"i\",
            \"zip_code\": \"y\",
            \"is_primary\": true,
            \"type\": \"billing\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/parent-above"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "company_name": "b",
    "company_role": "architecto",
    "abbreviation": "ngzmiy",
    "under_loa": true,
    "case_id_type": "v",
    "timezone": "Asia\/Anadyr",
    "client_category_id": 16,
    "phones": [
        {
            "number": "b",
            "type": "main"
        }
    ],
    "emails": [
        {
            "address": "n",
            "type": "personal"
        }
    ],
    "business_state": "AL",
    "addresses": [
        {
            "line_1": "g",
            "line_2": "z",
            "city": "m",
            "state": "i",
            "zip_code": "y",
            "is_primary": true,
            "type": "billing"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{id}/parent-above

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

company_name   string   

Must not be greater than 255 characters. Example: b

company_role   string   

Example: architecto

Must be one of:
  • Operational
  • Organizational
  • Vendor
abbreviation   string  optional  

Must not be greater than 10 characters. Example: ngzmiy

under_loa   boolean   

Example: true

case_id_type   string   

Must not be greater than 100 characters. Example: v

timezone   string  optional  

Must be a valid time zone, such as Africa/Accra. Example: Asia/Anadyr

client_category_id   integer  optional  

The id of an existing record in the client_categories table. Example: 16

phones   object[]   

Must have at least 1 items.

number   string   

Must not be greater than 255 characters. Example: b

type   string   

Example: main

Must be one of:
  • main
  • home
  • work
  • mobile
emails   object[]   

Must have at least 1 items.

address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string   

Example: personal

Must be one of:
  • main
  • personal
  • work
  • secondary
addresses   object[]  optional  
line_1   string   

Must not be greater than 255 characters. Example: g

line_2   string  optional  

Must not be greater than 255 characters. Example: z

city   string   

Must not be greater than 255 characters. Example: m

state   string   

Must not be greater than 255 characters. Example: i

zip_code   string   

Must not be greater than 255 characters. Example: y

is_primary   boolean  optional  

Example: true

type   string   

Example: billing

Must be one of:
  • home
  • work
  • billing
  • shipping
business_state   string  optional  

Example: AL

Must be one of:
  • AL
  • AK
  • AZ
  • AR
  • CA
  • CO
  • CT
  • DE
  • DC
  • FL
  • GA
  • HI
  • ID
  • IL
  • IN
  • IA
  • KS
  • KY
  • LA
  • ME
  • MD
  • MA
  • MI
  • MN
  • MS
  • MO
  • MT
  • NE
  • NV
  • NH
  • NJ
  • NM
  • NY
  • NC
  • ND
  • OH
  • OK
  • OR
  • PA
  • RI
  • SC
  • SD
  • TN
  • TX
  • UT
  • VT
  • VA
  • WA
  • WV
  • WI
  • WY

POST /api/clients/{id}/attach-parent Designates an existing Active client as the parent of the target.

requires authentication

Supports both standalone targets (primary use) and mid-hierarchy targets (within the same tree). The target's inheritance settings are preserved unchanged.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/attach-parent" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"parent_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/attach-parent"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "parent_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{id}/attach-parent

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

parent_id   integer   

Example: 16

POST /api/clients/{id}/activate Activates the company. Idempotent if already active.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/activate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/activate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/clients/{id}/activate

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

POST /api/clients/{id}/disable Deactivates the company. Mode defaults to full; dormant is the softer alternative.

requires authentication

Idempotent if already fully disabled.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/disable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"mode\": \"full\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/disable"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "mode": "full"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{id}/disable

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

mode   string  optional  

Example: full

Must be one of:
  • dormant
  • full

GET /api/clients/{id}/deactivation-preview Pre-flight preview of a deactivation's blast radius: affected companies, client users, and open cases, plus whether full deactivation is blocked and the recommended mode.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/deactivation-preview" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/deactivation-preview"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/deactivation-preview

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

POST /api/clients/{id}/reassign-parent Deprecated legacy endpoint kept only to return an explicit migration error.

requires authentication

Use move preview/confirm endpoints instead.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/564/reassign-parent" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"new_parent_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/reassign-parent"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "new_parent_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{id}/reassign-parent

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

Body Parameters

new_parent_id   integer  optional  

The id of an existing record in the clients table. Example: 16

GET /api/clients/{id}/users Returns all users associated with the company itself AND all its ancestor companies.

requires authentication

Users from children or siblings are NOT included.

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/564/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/564/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}/users

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 564

GET api/clients/{client_id}/secure-domains

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16/secure-domains" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/secure-domains"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{client_id}/secure-domains

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

POST api/clients/{client_id}/secure-domains

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/16/secure-domains" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"domain\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/secure-domains"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "domain": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{client_id}/secure-domains

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

Body Parameters

domain   string   

Must match the regex /^(?:a-z0-9?.)+[a-z]{2,}$/. Must not be greater than 255 characters. Example: b

DELETE api/clients/{client_id}/secure-domains/{secureEmailDomain_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clients/16/secure-domains/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/secure-domains/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clients/{client_id}/secure-domains/{secureEmailDomain_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

secureEmailDomain_id   integer   

The ID of the secureEmailDomain. Example: 16

GET api/clients/{client_id}/access-groups

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{client_id}/access-groups

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

POST api/clients/{client_id}/access-groups

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"companies\": [
        {
            \"id\": 16,
            \"case_creation\": true
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "companies": [
        {
            "id": 16,
            "case_creation": true
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/{client_id}/access-groups

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

companies   object[]  optional  
id   integer   

The id of an existing record in the clients table. Example: 16

case_creation   boolean  optional  

Example: true

GET api/clients/{client_id}/access-groups/{accessGroup_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{client_id}/access-groups/{accessGroup_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

accessGroup_id   integer   

The ID of the accessGroup. Example: 16

PUT api/clients/{client_id}/access-groups/{accessGroup_id}

requires authentication

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"companies\": [
        {
            \"id\": 16,
            \"case_creation\": false
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "companies": [
        {
            "id": 16,
            "case_creation": false
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/clients/{client_id}/access-groups/{accessGroup_id}

PATCH api/clients/{client_id}/access-groups/{accessGroup_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

accessGroup_id   integer   

The ID of the accessGroup. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

companies   object[]  optional  
id   integer   

The id of an existing record in the clients table. Example: 16

case_creation   boolean  optional  

Example: false

DELETE api/clients/{client_id}/access-groups/{accessGroup_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16/access-groups/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clients/{client_id}/access-groups/{accessGroup_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

accessGroup_id   integer   

The ID of the accessGroup. Example: 16

Global picker — distinct domains registered across all clients. Used by the FE to suggest existing domain values when registering a new entry (business rule 7: "selected from previously registered domains").

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/secure-domains" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/secure-domains"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/secure-domains

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/clients

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assessment_label\": \"b\",
    \"category\": {
        \"id\": 16
    },
    \"company_name\": \"n\",
    \"abbreviation\": \"gzmiyv\",
    \"timezone\": \"Asia\\/Anadyr\",
    \"domain\": \"l\",
    \"client_access\": [
        {
            \"id\": 16
        }
    ],
    \"gryphon_activities\": [
        {
            \"message\": \"architecto\",
            \"priority\": \"low\",
            \"visibility\": \"internal\",
            \"user\": {
                \"id\": 16
            }
        }
    ],
    \"phones\": [
        {
            \"number\": \"n\",
            \"type\": \"work\"
        }
    ],
    \"emails\": [
        {
            \"address\": \"g\",
            \"type\": \"work\"
        }
    ],
    \"addresses\": [
        {
            \"line_1\": \"z\",
            \"line_2\": \"m\",
            \"city\": \"i\",
            \"state\": \"y\",
            \"zip_code\": \"v\",
            \"is_primary\": true,
            \"type\": \"home\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assessment_label": "b",
    "category": {
        "id": 16
    },
    "company_name": "n",
    "abbreviation": "gzmiyv",
    "timezone": "Asia\/Anadyr",
    "domain": "l",
    "client_access": [
        {
            "id": 16
        }
    ],
    "gryphon_activities": [
        {
            "message": "architecto",
            "priority": "low",
            "visibility": "internal",
            "user": {
                "id": 16
            }
        }
    ],
    "phones": [
        {
            "number": "n",
            "type": "work"
        }
    ],
    "emails": [
        {
            "address": "g",
            "type": "work"
        }
    ],
    "addresses": [
        {
            "line_1": "z",
            "line_2": "m",
            "city": "i",
            "state": "y",
            "zip_code": "v",
            "is_primary": true,
            "type": "home"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

parent_id   string  optional  
parent   string  optional  
children   string  optional  
assessment_label   string  optional  

Must not be greater than 255 characters. Example: b

category   object  optional  
id   integer  optional  

The id of an existing record in the client_categories table. Example: 16

company_name   string   

Must not be greater than 255 characters. Example: n

abbreviation   string  optional  

Must not be greater than 10 characters. Example: gzmiyv

timezone   string  optional  

Must be a valid time zone, such as Africa/Accra. Example: Asia/Anadyr

domain   string  optional  

Must not be greater than 63 characters. Example: l

data   object  optional  
client_access   object[]  optional  
id   integer   

The id of an existing record in the clients table. Example: 16

gryphon_activities   object[]  optional  
message   string   

Example: architecto

priority   string   

Example: low

Must be one of:
  • low
  • medium
  • high
  • urgent
visibility   string   

Example: internal

Must be one of:
  • public
  • internal
  • private
  • financial
user   object  optional  
id   integer  optional  

The id of an existing record in the users table. Example: 16

parent   string  optional  
phones   object[]  optional  
number   string   

Must not be greater than 255 characters. Example: n

type   string   

Example: work

Must be one of:
  • main
  • home
  • work
  • mobile
emails   object[]  optional  
address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: g

type   string   

Example: work

Must be one of:
  • main
  • personal
  • work
  • secondary
addresses   object[]  optional  
line_1   string   

Must not be greater than 255 characters. Example: z

line_2   string  optional  

Must not be greater than 255 characters. Example: m

city   string   

Must not be greater than 255 characters. Example: i

state   string   

Must not be greater than 255 characters. Example: y

zip_code   string   

Must not be greater than 255 characters. Example: v

is_primary   boolean  optional  

Example: true

type   string   

Example: home

Must be one of:
  • home
  • work
  • billing
  • shipping

GET api/clients

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

The union return type is load-bearing, not cosmetic: returnForbiddenResponse() is declared : JsonResponse, so narrowing this to GryphonActivityResource made the guard below fatal with a TypeError — the permission check fired correctly and then returned 500 instead of 403 (GRY-4349). Matches UserController::addGryphonActivity(), which already declared the union.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clients/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibility\": \"public\",
    \"priority\": \"low\",
    \"message\": \"architecto\",
    \"user\": {
        \"id\": 16
    },
    \"parent\": {
        \"id\": 16
    },
    \"watcher_ids\": [
        16
    ],
    \"watchers\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibility": "public",
    "priority": "low",
    "message": "architecto",
    "user": {
        "id": 16
    },
    "parent": {
        "id": 16
    },
    "watcher_ids": [
        16
    ],
    "watchers": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clients/gryphon-activities/{client_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

Body Parameters

visibility   string   

Example: public

Must be one of:
  • public
  • internal
  • private
  • financial
priority   string   

Example: low

Must be one of:
  • low
  • medium
  • high
  • urgent
message   string   

Example: architecto

user   object  optional  
id   integer  optional  

The id of an existing record in the users table. Example: 16

parent   object  optional  
id   integer  optional  

The id of an existing record in the gryphon_activities table. Example: 16

watchers   object[]  optional  
id   integer   

The id of an existing record in the users table. Example: 16

watcher_ids   integer[]   

The id of an existing record in the users table.

GET api/clients/gryphon-activities/{client_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"start_date\": \"2026-09-25T08:45:10\",
    \"end_date\": \"2026-09-25T08:45:10\",
    \"created_at\": \"2026-09-25T08:45:10\",
    \"activity_type\": \"architecto\",
    \"priority\": \"architecto\",
    \"visibility\": \"architecto\",
    \"user_id\": 16,
    \"parent_id\": 16,
    \"updated_at\": \"2026-09-25T08:45:10\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort\": \"architecto\",
    \"order\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "start_date": "2026-09-25T08:45:10",
    "end_date": "2026-09-25T08:45:10",
    "created_at": "2026-09-25T08:45:10",
    "activity_type": "architecto",
    "priority": "architecto",
    "visibility": "architecto",
    "user_id": 16,
    "parent_id": 16,
    "updated_at": "2026-09-25T08:45:10",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort": "architecto",
    "order": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/gryphon-activities/{client_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

Body Parameters

search   string  optional  

Example: architecto

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

end_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

created_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

activity_type   string  optional  

Example: architecto

priority   string  optional  

Example: architecto

visibility   string  optional  

Example: architecto

user_id   integer  optional  

Example: 16

parent_id   integer  optional  

Example: 16

updated_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

sort   string  optional  

Example: architecto

order   string  optional  

Example: architecto

people   string  optional  

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

GET api/clients/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clients/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clients/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 16

PATCH api/clients/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clients/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assessment_label\": \"b\",
    \"category\": {
        \"id\": 16
    },
    \"company_name\": \"n\",
    \"abbreviation\": \"gzmiyv\",
    \"under_loa\": true,
    \"case_id_type\": \"d\",
    \"timezone\": \"Asia\\/Barnaul\",
    \"client_access\": [
        {
            \"id\": 16
        }
    ],
    \"phones\": [
        {
            \"number\": \"n\",
            \"type\": \"mobile\"
        }
    ],
    \"emails\": [
        {
            \"address\": \"g\",
            \"type\": \"work\"
        }
    ],
    \"addresses\": [
        {
            \"line_1\": \"z\",
            \"line_2\": \"m\",
            \"city\": \"i\",
            \"state\": \"y\",
            \"zip_code\": \"v\",
            \"is_primary\": false,
            \"type\": \"home\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assessment_label": "b",
    "category": {
        "id": 16
    },
    "company_name": "n",
    "abbreviation": "gzmiyv",
    "under_loa": true,
    "case_id_type": "d",
    "timezone": "Asia\/Barnaul",
    "client_access": [
        {
            "id": 16
        }
    ],
    "phones": [
        {
            "number": "n",
            "type": "mobile"
        }
    ],
    "emails": [
        {
            "address": "g",
            "type": "work"
        }
    ],
    "addresses": [
        {
            "line_1": "z",
            "line_2": "m",
            "city": "i",
            "state": "y",
            "zip_code": "v",
            "is_primary": false,
            "type": "home"
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clients/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 16

Body Parameters

parent_id   string  optional  
parent   string  optional  
children   string  optional  
assessment_label   string  optional  

Must not be greater than 255 characters. Example: b

category   object  optional  
id   integer  optional  

The id of an existing record in the client_categories table. Example: 16

company_name   string  optional  

Must not be greater than 255 characters. Example: n

abbreviation   string  optional  

Must not be greater than 10 characters. Example: gzmiyv

under_loa   boolean  optional  

Example: true

case_id_type   string  optional  

Must not be greater than 100 characters. Example: d

timezone   string  optional  

Must be a valid time zone, such as Africa/Accra. Example: Asia/Barnaul

data   object  optional  
client_access   object[]  optional  
id   integer   

The id of an existing record in the clients table. Example: 16

phones   object[]  optional  
number   string   

Must not be greater than 255 characters. Example: n

type   string   

Example: mobile

Must be one of:
  • main
  • home
  • work
  • mobile
emails   object[]  optional  
address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: g

type   string   

Example: work

Must be one of:
  • main
  • personal
  • work
  • secondary
addresses   object[]  optional  
line_1   string   

Must not be greater than 255 characters. Example: z

line_2   string  optional  

Must not be greater than 255 characters. Example: m

city   string   

Must not be greater than 255 characters. Example: i

state   string   

Must not be greater than 255 characters. Example: y

zip_code   string   

Must not be greater than 255 characters. Example: v

is_primary   boolean  optional  

Example: false

type   string   

Example: home

Must be one of:
  • home
  • work
  • billing
  • shipping

DELETE /api/clients/{client} Soft-delete a company. Leaf-only and blocked by open cases (see ClientDeletionService).

requires authentication

Route-model binding excludes trashed rows, so a repeat delete returns 404.

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clients/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clients/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clients/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the client. Example: 16

GET api/client-categories

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/client-categories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/client-categories

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/lob-categories

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/lob-categories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/lob-categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/lob-categories

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/users/gryphon-activities/{user_id}

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibility\": \"internal\",
    \"priority\": \"urgent\",
    \"message\": \"architecto\",
    \"user\": {
        \"id\": 16
    },
    \"parent\": {
        \"id\": 16
    },
    \"watcher_ids\": [
        16
    ],
    \"watchers\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibility": "internal",
    "priority": "urgent",
    "message": "architecto",
    "user": {
        "id": 16
    },
    "parent": {
        "id": 16
    },
    "watcher_ids": [
        16
    ],
    "watchers": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/gryphon-activities/{user_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

visibility   string   

Example: internal

Must be one of:
  • public
  • internal
  • private
  • financial
priority   string   

Example: urgent

Must be one of:
  • low
  • medium
  • high
  • urgent
message   string   

Example: architecto

user   object  optional  
id   integer  optional  

The id of an existing record in the users table. Example: 16

parent   object  optional  
id   integer  optional  

The id of an existing record in the gryphon_activities table. Example: 16

watchers   object[]  optional  
id   integer   

The id of an existing record in the users table. Example: 16

watcher_ids   integer[]   

The id of an existing record in the users table.

GET api/users/gryphon-activities/{user_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"start_date\": \"2026-09-25T08:45:10\",
    \"end_date\": \"2026-09-25T08:45:10\",
    \"created_at\": \"2026-09-25T08:45:10\",
    \"activity_type\": \"architecto\",
    \"priority\": \"architecto\",
    \"visibility\": \"architecto\",
    \"user_id\": 16,
    \"parent_id\": 16,
    \"updated_at\": \"2026-09-25T08:45:10\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort\": \"architecto\",
    \"order\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "start_date": "2026-09-25T08:45:10",
    "end_date": "2026-09-25T08:45:10",
    "created_at": "2026-09-25T08:45:10",
    "activity_type": "architecto",
    "priority": "architecto",
    "visibility": "architecto",
    "user_id": 16,
    "parent_id": 16,
    "updated_at": "2026-09-25T08:45:10",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort": "architecto",
    "order": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/gryphon-activities/{user_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

search   string  optional  

Example: architecto

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

end_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

created_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

activity_type   string  optional  

Example: architecto

priority   string  optional  

Example: architecto

visibility   string  optional  

Example: architecto

user_id   integer  optional  

Example: 16

parent_id   integer  optional  

Example: 16

updated_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

sort   string  optional  

Example: architecto

order   string  optional  

Example: architecto

people   string  optional  

GET api/users/me

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/me" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/me"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/me

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

PATCH api/users/me

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/users/me" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"|]|{+-\",
    \"legal_first_name\": \"v\",
    \"legal_last_name\": \"d\",
    \"job_title\": \"l\",
    \"status\": \"architecto\",
    \"phones\": [
        {
            \"type\": \"main\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/me"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "|]|{+-",
    "legal_first_name": "v",
    "legal_last_name": "d",
    "job_title": "l",
    "status": "architecto",
    "phones": [
        {
            "type": "main"
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/users/me

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

password   string  optional  

Must be at least 8 characters. Example: |]|{+-

legal_first_name   string  optional  

Must not be greater than 255 characters. Example: v

legal_last_name   string  optional  

Must not be greater than 255 characters. Example: d

preferred_first_name   string  optional  
preferred_last_name   string  optional  
date_of_birth   string  optional  
phone   string  optional  
ssn   string  optional  
upper_first_name   string  optional  
upper_last_name   string  optional  
salutation   string  optional  
job_title   string  optional  

Must not be greater than 64 characters. Example: l

address   string  optional  
status   string  optional  

Example: architecto

Must be one of:
  • setup
  • pending
  • training
  • active
  • clinical_hold
  • standby
  • deactivated
phones   object[]  optional  
number   string  optional  
type   string  optional  

Example: main

Must be one of:
  • main
  • home
  • work
  • mobile

Self-service, driver-aware password reset (GRY-4115).

requires authentication

The app switches between Auth0 and Sanctum at runtime via AUTH_SERVICE, so the caller must not have to know which is live — AuthService picks the flow.

The response is the same 202 in every success case and says nothing about the account: not whether the address exists, not whether a provider identity is attached, not whether mail actually went out. The only distinguishable outcomes are the ones the caller can act on (a 422 for an unlinked account, a 502 upstream failure, a 429 from the limiter).

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/me/password-reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/me/password-reset"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/users/me/password-reset

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/users/profile-image/{user_id}

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/profile-image/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "profile_image=@/tmp/phptdqob3sp8459bnWJCux" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/profile-image/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('profile_image', document.querySelector('input[name="profile_image"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request   

POST api/users/profile-image/{user_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

profile_image   file   

Must be an image. Must not be greater than 2048 kilobytes. Example: /tmp/phptdqob3sp8459bnWJCux

POST api/users/me/profile-image

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/me/profile-image" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "profile_image=@/tmp/php8g04etrkn4l368i1CpM" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/me/profile-image"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('profile_image', document.querySelector('input[name="profile_image"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request   

POST api/users/me/profile-image

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

profile_image   file   

Must be an image. Must not be greater than 2048 kilobytes. Example: /tmp/php8g04etrkn4l368i1CpM

GET api/users/profile-image/{user_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/profile-image/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/profile-image/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/profile-image/{user_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

POST api/users

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_id\": 16,
    \"name\": \"n\",
    \"email\": \"ashly64@example.com\",
    \"password\": \"pBNvYg\",
    \"access_group_id\": 16,
    \"role\": {
        \"id\": 16
    },
    \"legal_first_name\": \"n\",
    \"legal_last_name\": \"g\",
    \"phone\": \"z\",
    \"user_type\": \"architecto\",
    \"job_title\": \"n\",
    \"caseload\": 84,
    \"payee_type\": \"architecto\",
    \"employment_type\": \"architecto\",
    \"compensation_type\": \"architecto\",
    \"pay_period\": \"architecto\",
    \"deduct_drive_time\": true,
    \"roles\": [
        {
            \"id\": 16
        }
    ],
    \"phones\": [
        {
            \"number\": \"n\",
            \"type\": \"home\"
        }
    ],
    \"emails\": [
        {
            \"address\": \"g\",
            \"type\": \"secondary\"
        }
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_id": 16,
    "name": "n",
    "email": "ashly64@example.com",
    "password": "pBNvYg",
    "access_group_id": 16,
    "role": {
        "id": 16
    },
    "legal_first_name": "n",
    "legal_last_name": "g",
    "phone": "z",
    "user_type": "architecto",
    "job_title": "n",
    "caseload": 84,
    "payee_type": "architecto",
    "employment_type": "architecto",
    "compensation_type": "architecto",
    "pay_period": "architecto",
    "deduct_drive_time": true,
    "roles": [
        {
            "id": 16
        }
    ],
    "phones": [
        {
            "number": "n",
            "type": "home"
        }
    ],
    "emails": [
        {
            "address": "g",
            "type": "secondary"
        }
    ],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

name   string  optional  

Must not be greater than 255 characters. Example: n

email   string   

Must be a valid email address. Example: ashly64@example.com

password   string  optional  

Must be at least 8 characters. Example: pBNvYg

roles   object[]  optional  
id   integer  optional  

This field is required when roles is present. The id of an existing record in the roles table. Example: 16

access_group_id   integer  optional  

The id of an existing record in the access_groups table. Example: 16

role   object  optional  
id   integer  optional  

This field is required when role is present. The id of an existing record in the roles table. Example: 16

capabilities   object  optional  
legal_first_name   string  optional  

Must not be greater than 255 characters. Example: n

legal_last_name   string  optional  

Must not be greater than 255 characters. Example: g

preferred_first_name   string  optional  
preferred_last_name   string  optional  
date_of_birth   string  optional  
phone   string  optional  

Must not be greater than 255 characters. Example: z

phones   object[]  optional  
number   string  optional  

Must not be greater than 255 characters. Example: n

type   string  optional  

Example: home

Must be one of:
  • main
  • home
  • work
  • mobile
emails   object[]  optional  
address   string  optional  

This field is required when emails is present. Must be a valid email address. Must not be greater than 255 characters. Example: g

type   string  optional  

Example: secondary

Must be one of:
  • main
  • personal
  • work
  • secondary
ssn   string  optional  
start_date   string  optional  
startdate   string  optional  
work_status   string  optional  
last_day_of_work   string  optional  
user_type   string  optional  

Example: architecto

Must be one of:
  • clinical
  • internal
  • client_user
usertype   string  optional  
upper_first_name   string  optional  
upper_last_name   string  optional  
salutation   string  optional  
job_title   string  optional  

Must not be greater than 64 characters. Example: n

addresses   object  optional  
personas   string  optional  
tags   object[]  optional  
id   integer   

The id of an existing record in the tags table. Example: 16

caseload   integer  optional  

Must be at least 0. Example: 84

payee_type   string  optional  

Example: architecto

Must be one of:
  • independent_contractor_individual
  • independent_contractor_company
  • employee
employment_type   string  optional  

Example: architecto

Must be one of:
  • w2_full_time
  • 1099_contractor
compensation_type   string  optional  

Example: architecto

Must be one of:
  • salary
  • hourly
  • piece_work
pay_period   string  optional  

Example: architecto

Must be one of:
  • monthly
  • semi_monthly
deduct_drive_time   boolean  optional  

Example: true

professional_designations   string[]  optional  
id   integer  optional  

The id of an existing record in the professional_designations table. Example: 16

code   string  optional  

The code of an existing record in the professional_designations table. Example: architecto

obtained_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

POST /api/users/batch — create several users in one submission (GRY-3922, "Add More").

requires authentication

Partial success by design: valid rows are committed and invalid ones reported per row (see UserBatchCreationService). The status code is therefore always 200 with the report in the body — same contract as the other bulk endpoints — rather than a 201 that would misdescribe a batch where some rows failed.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/batch" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"users\": [
        []
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/batch"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "users": [
        []
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/batch

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

users   object[]   

Create a new user from the dashboard with Auth0-first workflow.

requires authentication

This endpoint creates the user in Auth0 first, then the database record with the returned auth0_id, and only then issues the invite (GRY-4107 moved the invite last, so a failed write cannot email someone for a user that never existed). If the database creation or the invite fails, the Auth0 user is automatically deleted (rollback) and the request transaction is rolled back.

Access Requirements:

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/invite" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_id\": 16,
    \"email\": \"zbailey@example.net\",
    \"legal_first_name\": \"i\",
    \"legal_last_name\": \"y\",
    \"name\": \"v\",
    \"preferred_first_name\": \"d\",
    \"preferred_last_name\": \"l\",
    \"date_of_birth\": \"2026-09-25T08:45:10\",
    \"ssn\": \"architecto\",
    \"usertype\": \"architecto\",
    \"job_title\": \"n\",
    \"phone\": \"architecto\",
    \"role\": {
        \"id\": 16
    },
    \"payee_type\": \"architecto\",
    \"employment_type\": \"architecto\",
    \"compensation_type\": \"architecto\",
    \"pay_period\": \"architecto\",
    \"deduct_drive_time\": true,
    \"phones\": [
        {
            \"number\": \"architecto\",
            \"type\": \"mobile\",
            \"sms\": false
        }
    ],
    \"emails\": [
        {
            \"address\": \"n\",
            \"type\": \"personal\"
        }
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ],
    \"roles\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/invite"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_id": 16,
    "email": "zbailey@example.net",
    "legal_first_name": "i",
    "legal_last_name": "y",
    "name": "v",
    "preferred_first_name": "d",
    "preferred_last_name": "l",
    "date_of_birth": "2026-09-25T08:45:10",
    "ssn": "architecto",
    "usertype": "architecto",
    "job_title": "n",
    "phone": "architecto",
    "role": {
        "id": 16
    },
    "payee_type": "architecto",
    "employment_type": "architecto",
    "compensation_type": "architecto",
    "pay_period": "architecto",
    "deduct_drive_time": true,
    "phones": [
        {
            "number": "architecto",
            "type": "mobile",
            "sms": false
        }
    ],
    "emails": [
        {
            "address": "n",
            "type": "personal"
        }
    ],
    "tags": [
        {
            "id": 16
        }
    ],
    "roles": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/invite

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

email   string   

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

legal_first_name   string  optional  

This field is required when preferred_first_name is not present. Must not be greater than 255 characters. Example: i

legal_last_name   string  optional  

This field is required when preferred_last_name is not present. Must not be greater than 255 characters. Example: y

name   string  optional  

Must not be greater than 255 characters. Example: v

preferred_first_name   string  optional  

Must not be greater than 255 characters. Example: d

preferred_last_name   string  optional  

Must not be greater than 255 characters. Example: l

date_of_birth   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

ssn   string  optional  

Example: architecto

usertype   string  optional  

Example: architecto

Must be one of:
  • clinical
  • internal
  • client_user
job_title   string  optional  

Must not be greater than 64 characters. Example: n

phone   string  optional  

Example: architecto

phones   object[]  optional  
number   string  optional  

This field is required when phones is present. Example: architecto

type   string  optional  

Example: mobile

Must be one of:
  • main
  • home
  • work
  • mobile
sms   boolean  optional  

Example: false

emails   object[]  optional  
address   string  optional  

This field is required when emails is present. Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string  optional  

Example: personal

Must be one of:
  • main
  • personal
  • work
  • secondary
addresses   object  optional  
tags   object[]  optional  
id   integer   

The id of an existing record in the tags table. Example: 16

roles   object[]  optional  
id   integer  optional  

This field is required when roles is present. The id of an existing record in the roles table. Example: 16

role   object  optional  
id   integer  optional  

This field is required when role is present. The id of an existing record in the roles table. Example: 16

payee_type   string  optional  

Example: architecto

Must be one of:
  • independent_contractor_individual
  • independent_contractor_company
  • employee
employment_type   string  optional  

Example: architecto

Must be one of:
  • w2_full_time
  • 1099_contractor
compensation_type   string  optional  

Example: architecto

Must be one of:
  • salary
  • hourly
  • piece_work
pay_period   string  optional  

Example: architecto

Must be one of:
  • monthly
  • semi_monthly
deduct_drive_time   boolean  optional  

Example: true

professional_designations   string[]  optional  
id   integer  optional  

The id of an existing record in the professional_designations table. Example: 16

code   string  optional  

The code of an existing record in the professional_designations table. Example: architecto

obtained_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

POST /api/users/bulk/status — apply one status to several users (GRY-3921).

requires authentication

Partial success: each row is attempted through the same choke point the single-user PATCH uses and its outcome reported. A mixed-status selection may only be Deactivated (spec §1.5); any other target is a 422 for the whole request, raised by the service and rendered by the Handler.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/bulk/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_ids\": [
        16
    ],
    \"status\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/bulk/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_ids": [
        16
    ],
    "status": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/bulk/status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_ids   integer[]   

The id of an existing record in the users table.

status   string   

Example: architecto

Must be one of:
  • setup
  • pending
  • training
  • active
  • clinical_hold
  • standby
  • deactivated

POST /api/users/bulk/access — apply one access level to several users (GRY-3921).

requires authentication

Exactly one of access_group_id / visible_clients is supplied — the access slot as the per-user path defines it. Partial success, per-row results.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/bulk/access" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_ids\": [
        16
    ],
    \"access_group_id\": 16,
    \"visible_clients\": [
        {
            \"id\": 16,
            \"include_descendants\": false
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/bulk/access"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_ids": [
        16
    ],
    "access_group_id": 16,
    "visible_clients": [
        {
            "id": 16,
            "include_descendants": false
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/bulk/access

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_ids   integer[]   

The id of an existing record in the users table.

access_group_id   integer  optional  

This field is required when visible_clients is not present. The id of an existing record in the access_groups table. Example: 16

visible_clients   object[]  optional  

This field is required when access_group_id is not present.

id   integer   

The id of an existing record in the clients table. Example: 16

include_descendants   boolean  optional  

Example: false

GET api/users

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"q\": \"b\",
    \"name\": \"n\",
    \"email\": \"ashly64@example.com\",
    \"phone\": \"vdljnikhwaykcmyu\",
    \"case_id\": 16,
    \"tag_id\": [
        16
    ],
    \"tag_category_id\": 16,
    \"tag_type\": \"n\",
    \"case_load\": false,
    \"sort_by\": \"travel_distance_miles\",
    \"sort_order\": \"asc\",
    \"page\": 67,
    \"per_page\": 16,
    \"limit\": 17,
    \"offset\": 8,
    \"role_id\": 16,
    \"role_ids\": [
        16
    ],
    \"role_names\": [
        \"n\"
    ],
    \"case_assignment\": true,
    \"has_client\": false,
    \"internal_only\": true,
    \"status\": [
        \"standby\"
    ],
    \"domain\": [
        \"executive_suite\"
    ],
    \"filter_mode\": \"and\",
    \"valid_license\": true,
    \"work_status\": [
        \"Disabled\"
    ],
    \"city\": \"g\",
    \"state\": \"zm\",
    \"zip\": \"iyvdlj\",
    \"first_name\": \"n\",
    \"last_name\": \"i\",
    \"middle_name\": \"k\",
    \"address\": \"h\",
    \"capability\": \"w\",
    \"periscope_id\": 7,
    \"payee_type\": \"independent_contractor_company\",
    \"compensation_type\": \"salary\",
    \"pay_period\": \"semi_monthly\",
    \"direct_deposit\": true,
    \"account_type\": \"Human Resources\",
    \"document_types\": \"y\",
    \"document_expiration_start\": \"2026-09-25T08:45:10\",
    \"document_expiration_end\": \"2026-09-25T08:45:10\",
    \"context\": \"consultant\",
    \"filters\": {
        \"logic\": \"OR\"
    },
    \"licenses\": [
        {
            \"id\": 16
        }
    ],
    \"professions\": [
        {
            \"id\": 16
        }
    ],
    \"trainings\": [
        {
            \"id\": 16
        }
    ],
    \"request_types\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "q": "b",
    "name": "n",
    "email": "ashly64@example.com",
    "phone": "vdljnikhwaykcmyu",
    "case_id": 16,
    "tag_id": [
        16
    ],
    "tag_category_id": 16,
    "tag_type": "n",
    "case_load": false,
    "sort_by": "travel_distance_miles",
    "sort_order": "asc",
    "page": 67,
    "per_page": 16,
    "limit": 17,
    "offset": 8,
    "role_id": 16,
    "role_ids": [
        16
    ],
    "role_names": [
        "n"
    ],
    "case_assignment": true,
    "has_client": false,
    "internal_only": true,
    "status": [
        "standby"
    ],
    "domain": [
        "executive_suite"
    ],
    "filter_mode": "and",
    "valid_license": true,
    "work_status": [
        "Disabled"
    ],
    "city": "g",
    "state": "zm",
    "zip": "iyvdlj",
    "first_name": "n",
    "last_name": "i",
    "middle_name": "k",
    "address": "h",
    "capability": "w",
    "periscope_id": 7,
    "payee_type": "independent_contractor_company",
    "compensation_type": "salary",
    "pay_period": "semi_monthly",
    "direct_deposit": true,
    "account_type": "Human Resources",
    "document_types": "y",
    "document_expiration_start": "2026-09-25T08:45:10",
    "document_expiration_end": "2026-09-25T08:45:10",
    "context": "consultant",
    "filters": {
        "logic": "OR"
    },
    "licenses": [
        {
            "id": 16
        }
    ],
    "professions": [
        {
            "id": 16
        }
    ],
    "trainings": [
        {
            "id": 16
        }
    ],
    "request_types": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

q   string  optional  

Must not be greater than 255 characters. Example: b

name   string  optional  

Must not be greater than 255 characters. Example: n

email   string  optional  

Must not be greater than 255 characters. Example: ashly64@example.com

phone   string  optional  

Must not be greater than 20 characters. Example: vdljnikhwaykcmyu

case_id   integer  optional  

The id of an existing record in the cases table. Example: 16

tag_id   integer[]  optional  

The id of an existing record in the tags table.

tag_category_id   integer  optional  

The id of an existing record in the tag_categories table. Example: 16

tag_type   string  optional  

Must not be greater than 255 characters. Example: n

case_load   boolean  optional  

Example: false

sort_by   string  optional  

Example: travel_distance_miles

Must be one of:
  • name
  • email
  • created_at
  • updated_at
  • caseload
  • start_date
  • last_day_of_work
  • legal_first_name
  • legal_last_name
  • preferred_first_name
  • preferred_last_name
  • work_status
  • status
  • role
  • city
  • state
  • zip
  • travel_distance_miles
  • travel_duration_seconds
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
page   integer  optional  

Must be at least 1. Example: 67

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 17

offset   integer  optional  

Must be at least 0. Example: 8

licenses   object[]  optional  
id   integer  optional  

The id of an existing record in the licenses table. Example: 16

professions   object[]  optional  
id   integer  optional  

The id of an existing record in the expertise_areas table. Example: 16

trainings   object[]  optional  
id   integer  optional  

The id of an existing record in the credentials table. Example: 16

request_types   object[]  optional  
id   integer  optional  

The id of an existing record in the request_types table. Example: 16

role_id   integer  optional  

The id of an existing record in the roles table. Example: 16

role_ids   integer[]  optional  

The id of an existing record in the roles table.

role_names   string[]  optional  

Must not be greater than 255 characters.

case_assignment   boolean  optional  

Example: true

has_client   boolean  optional  

Example: false

internal_only   boolean  optional  

Example: true

status   string[]  optional  
Must be one of:
  • setup
  • pending
  • training
  • active
  • clinical_hold
  • standby
  • deactivated
domain   string[]  optional  
Must be one of:
  • clinical
  • Clinical
  • client_services
  • Client Services
  • finance
  • Finance
  • human_resources
  • Human Resources
  • HR
  • engineering
  • Engineering
  • executive_suite
  • Executive Suite
  • Executive
  • client
  • Client
  • compliance
  • Compliance
filter_mode   string  optional  

Example: and

Must be one of:
  • and
  • or
valid_license   boolean  optional  

Example: true

work_status   string[]  optional  
Must be one of:
  • Training
  • Active
  • Pending
  • Disabled
city   string  optional  

Must not be greater than 100 characters. Example: g

state   string  optional  

Must be 2 characters. Example: zm

zip   string  optional  

Must not be greater than 10 characters. Example: iyvdlj

first_name   string  optional  

Must not be greater than 255 characters. Example: n

last_name   string  optional  

Must not be greater than 255 characters. Example: i

middle_name   string  optional  

Must not be greater than 255 characters. Example: k

address   string  optional  

Must not be greater than 500 characters. Example: h

capability   string  optional  

Must not be greater than 255 characters. Example: w

periscope_id   integer  optional  

Must be at least 1. Example: 7

payee_type   string  optional  

Example: independent_contractor_company

Must be one of:
  • independent_contractor_individual
  • independent_contractor_company
  • employee
compensation_type   string  optional  

Example: salary

Must be one of:
  • salary
  • hourly
  • piece_work
pay_period   string  optional  

Example: semi_monthly

Must be one of:
  • monthly
  • semi_monthly
direct_deposit   boolean  optional  

Example: true

account_type   string  optional  

Example: Human Resources

Must be one of:
  • clinical
  • Clinical
  • client_services
  • Client Services
  • finance
  • Finance
  • human_resources
  • Human Resources
  • HR
  • engineering
  • Engineering
  • executive_suite
  • Executive Suite
  • Executive
  • client
  • Client
  • compliance
  • Compliance
document_types   string  optional  

Must not be greater than 255 characters. Example: y

document_expiration_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

document_expiration_end   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

context   string  optional  

Example: consultant

Must be one of:
  • assessor
  • consultant
filters   object  optional  
logic   string  optional  

This field is required when filters is present. Example: OR

Must be one of:
  • AND
  • OR
conditions   object  optional  

This field is required when filters is present. Must have at least 1 items.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"q\": \"b\",
    \"name\": \"n\",
    \"email\": \"ashly64@example.com\",
    \"phone\": \"vdljnikhwaykcmyu\",
    \"case_id\": 16,
    \"tag_id\": [
        16
    ],
    \"tag_category_id\": 16,
    \"tag_type\": \"n\",
    \"case_load\": true,
    \"sort_by\": \"name\",
    \"sort_order\": \"desc\",
    \"page\": 67,
    \"per_page\": 16,
    \"limit\": 17,
    \"offset\": 8,
    \"role_id\": 16,
    \"role_ids\": [
        16
    ],
    \"role_names\": [
        \"n\"
    ],
    \"case_assignment\": true,
    \"has_client\": false,
    \"internal_only\": false,
    \"status\": [
        \"standby\"
    ],
    \"domain\": [
        \"client\"
    ],
    \"filter_mode\": \"and\",
    \"valid_license\": true,
    \"work_status\": [
        \"Disabled\"
    ],
    \"city\": \"g\",
    \"state\": \"zm\",
    \"zip\": \"iyvdlj\",
    \"first_name\": \"n\",
    \"last_name\": \"i\",
    \"middle_name\": \"k\",
    \"address\": \"h\",
    \"capability\": \"w\",
    \"periscope_id\": 7,
    \"payee_type\": \"employee\",
    \"compensation_type\": \"piece_work\",
    \"pay_period\": \"semi_monthly\",
    \"direct_deposit\": false,
    \"account_type\": \"Client\",
    \"document_types\": \"y\",
    \"document_expiration_start\": \"2026-09-25T08:45:10\",
    \"document_expiration_end\": \"2026-09-25T08:45:10\",
    \"context\": \"assessor\",
    \"filters\": {
        \"logic\": \"AND\"
    },
    \"licenses\": [
        {
            \"id\": 16
        }
    ],
    \"professions\": [
        {
            \"id\": 16
        }
    ],
    \"trainings\": [
        {
            \"id\": 16
        }
    ],
    \"request_types\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "q": "b",
    "name": "n",
    "email": "ashly64@example.com",
    "phone": "vdljnikhwaykcmyu",
    "case_id": 16,
    "tag_id": [
        16
    ],
    "tag_category_id": 16,
    "tag_type": "n",
    "case_load": true,
    "sort_by": "name",
    "sort_order": "desc",
    "page": 67,
    "per_page": 16,
    "limit": 17,
    "offset": 8,
    "role_id": 16,
    "role_ids": [
        16
    ],
    "role_names": [
        "n"
    ],
    "case_assignment": true,
    "has_client": false,
    "internal_only": false,
    "status": [
        "standby"
    ],
    "domain": [
        "client"
    ],
    "filter_mode": "and",
    "valid_license": true,
    "work_status": [
        "Disabled"
    ],
    "city": "g",
    "state": "zm",
    "zip": "iyvdlj",
    "first_name": "n",
    "last_name": "i",
    "middle_name": "k",
    "address": "h",
    "capability": "w",
    "periscope_id": 7,
    "payee_type": "employee",
    "compensation_type": "piece_work",
    "pay_period": "semi_monthly",
    "direct_deposit": false,
    "account_type": "Client",
    "document_types": "y",
    "document_expiration_start": "2026-09-25T08:45:10",
    "document_expiration_end": "2026-09-25T08:45:10",
    "context": "assessor",
    "filters": {
        "logic": "AND"
    },
    "licenses": [
        {
            "id": 16
        }
    ],
    "professions": [
        {
            "id": 16
        }
    ],
    "trainings": [
        {
            "id": 16
        }
    ],
    "request_types": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Export users to CSV.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"q\": \"b\",
    \"name\": \"n\",
    \"email\": \"ashly64@example.com\",
    \"phone\": \"vdljnikhwaykcmyu\",
    \"case_id\": 16,
    \"tag_id\": [
        16
    ],
    \"tag_category_id\": 16,
    \"tag_type\": \"n\",
    \"case_load\": true,
    \"sort_by\": \"travel_distance_miles\",
    \"sort_order\": \"asc\",
    \"page\": 67,
    \"per_page\": 16,
    \"limit\": 17,
    \"offset\": 8,
    \"role_id\": 16,
    \"role_ids\": [
        16
    ],
    \"role_names\": [
        \"n\"
    ],
    \"case_assignment\": true,
    \"has_client\": true,
    \"internal_only\": false,
    \"status\": [
        \"standby\"
    ],
    \"domain\": [
        \"client\"
    ],
    \"filter_mode\": \"and\",
    \"valid_license\": true,
    \"work_status\": [
        \"Active\"
    ],
    \"city\": \"g\",
    \"state\": \"zm\",
    \"zip\": \"iyvdlj\",
    \"first_name\": \"n\",
    \"last_name\": \"i\",
    \"middle_name\": \"k\",
    \"address\": \"h\",
    \"capability\": \"w\",
    \"periscope_id\": 7,
    \"payee_type\": \"independent_contractor_individual\",
    \"compensation_type\": \"salary\",
    \"pay_period\": \"semi_monthly\",
    \"direct_deposit\": true,
    \"account_type\": \"Executive\",
    \"document_types\": \"y\",
    \"document_expiration_start\": \"2026-09-25T08:45:10\",
    \"document_expiration_end\": \"2026-09-25T08:45:10\",
    \"context\": \"assessor\",
    \"filters\": {
        \"logic\": \"AND\"
    },
    \"fields\": [
        \"k\"
    ],
    \"field_order\": [
        \"c\"
    ],
    \"licenses\": [
        {
            \"id\": 16
        }
    ],
    \"professions\": [
        {
            \"id\": 16
        }
    ],
    \"trainings\": [
        {
            \"id\": 16
        }
    ],
    \"request_types\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "q": "b",
    "name": "n",
    "email": "ashly64@example.com",
    "phone": "vdljnikhwaykcmyu",
    "case_id": 16,
    "tag_id": [
        16
    ],
    "tag_category_id": 16,
    "tag_type": "n",
    "case_load": true,
    "sort_by": "travel_distance_miles",
    "sort_order": "asc",
    "page": 67,
    "per_page": 16,
    "limit": 17,
    "offset": 8,
    "role_id": 16,
    "role_ids": [
        16
    ],
    "role_names": [
        "n"
    ],
    "case_assignment": true,
    "has_client": true,
    "internal_only": false,
    "status": [
        "standby"
    ],
    "domain": [
        "client"
    ],
    "filter_mode": "and",
    "valid_license": true,
    "work_status": [
        "Active"
    ],
    "city": "g",
    "state": "zm",
    "zip": "iyvdlj",
    "first_name": "n",
    "last_name": "i",
    "middle_name": "k",
    "address": "h",
    "capability": "w",
    "periscope_id": 7,
    "payee_type": "independent_contractor_individual",
    "compensation_type": "salary",
    "pay_period": "semi_monthly",
    "direct_deposit": true,
    "account_type": "Executive",
    "document_types": "y",
    "document_expiration_start": "2026-09-25T08:45:10",
    "document_expiration_end": "2026-09-25T08:45:10",
    "context": "assessor",
    "filters": {
        "logic": "AND"
    },
    "fields": [
        "k"
    ],
    "field_order": [
        "c"
    ],
    "licenses": [
        {
            "id": 16
        }
    ],
    "professions": [
        {
            "id": 16
        }
    ],
    "trainings": [
        {
            "id": 16
        }
    ],
    "request_types": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/export

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

q   string  optional  

Must not be greater than 255 characters. Example: b

name   string  optional  

Must not be greater than 255 characters. Example: n

email   string  optional  

Must not be greater than 255 characters. Example: ashly64@example.com

phone   string  optional  

Must not be greater than 20 characters. Example: vdljnikhwaykcmyu

case_id   integer  optional  

The id of an existing record in the cases table. Example: 16

tag_id   integer[]  optional  

The id of an existing record in the tags table.

tag_category_id   integer  optional  

The id of an existing record in the tag_categories table. Example: 16

tag_type   string  optional  

Must not be greater than 255 characters. Example: n

case_load   boolean  optional  

Example: true

sort_by   string  optional  

Example: travel_distance_miles

Must be one of:
  • name
  • email
  • created_at
  • updated_at
  • caseload
  • start_date
  • last_day_of_work
  • legal_first_name
  • legal_last_name
  • preferred_first_name
  • preferred_last_name
  • work_status
  • status
  • role
  • city
  • state
  • zip
  • travel_distance_miles
  • travel_duration_seconds
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
page   integer  optional  

Must be at least 1. Example: 67

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 17

offset   integer  optional  

Must be at least 0. Example: 8

licenses   object[]  optional  
id   integer  optional  

The id of an existing record in the licenses table. Example: 16

professions   object[]  optional  
id   integer  optional  

The id of an existing record in the expertise_areas table. Example: 16

trainings   object[]  optional  
id   integer  optional  

The id of an existing record in the credentials table. Example: 16

request_types   object[]  optional  
id   integer  optional  

The id of an existing record in the request_types table. Example: 16

role_id   integer  optional  

The id of an existing record in the roles table. Example: 16

role_ids   integer[]  optional  

The id of an existing record in the roles table.

role_names   string[]  optional  

Must not be greater than 255 characters.

case_assignment   boolean  optional  

Example: true

has_client   boolean  optional  

Example: true

internal_only   boolean  optional  

Example: false

status   string[]  optional  
Must be one of:
  • setup
  • pending
  • training
  • active
  • clinical_hold
  • standby
  • deactivated
domain   string[]  optional  
Must be one of:
  • clinical
  • Clinical
  • client_services
  • Client Services
  • finance
  • Finance
  • human_resources
  • Human Resources
  • HR
  • engineering
  • Engineering
  • executive_suite
  • Executive Suite
  • Executive
  • client
  • Client
  • compliance
  • Compliance
filter_mode   string  optional  

Example: and

Must be one of:
  • and
  • or
valid_license   boolean  optional  

Example: true

work_status   string[]  optional  
Must be one of:
  • Training
  • Active
  • Pending
  • Disabled
city   string  optional  

Must not be greater than 100 characters. Example: g

state   string  optional  

Must be 2 characters. Example: zm

zip   string  optional  

Must not be greater than 10 characters. Example: iyvdlj

first_name   string  optional  

Must not be greater than 255 characters. Example: n

last_name   string  optional  

Must not be greater than 255 characters. Example: i

middle_name   string  optional  

Must not be greater than 255 characters. Example: k

address   string  optional  

Must not be greater than 500 characters. Example: h

capability   string  optional  

Must not be greater than 255 characters. Example: w

periscope_id   integer  optional  

Must be at least 1. Example: 7

payee_type   string  optional  

Example: independent_contractor_individual

Must be one of:
  • independent_contractor_individual
  • independent_contractor_company
  • employee
compensation_type   string  optional  

Example: salary

Must be one of:
  • salary
  • hourly
  • piece_work
pay_period   string  optional  

Example: semi_monthly

Must be one of:
  • monthly
  • semi_monthly
direct_deposit   boolean  optional  

Example: true

account_type   string  optional  

Example: Executive

Must be one of:
  • clinical
  • Clinical
  • client_services
  • Client Services
  • finance
  • Finance
  • human_resources
  • Human Resources
  • HR
  • engineering
  • Engineering
  • executive_suite
  • Executive Suite
  • Executive
  • client
  • Client
  • compliance
  • Compliance
document_types   string  optional  

Must not be greater than 255 characters. Example: y

document_expiration_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

document_expiration_end   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

context   string  optional  

Example: assessor

Must be one of:
  • assessor
  • consultant
filters   object  optional  
logic   string  optional  

This field is required when filters is present. Example: AND

Must be one of:
  • AND
  • OR
conditions   object  optional  

This field is required when filters is present. Must have at least 1 items.

fields   string[]  optional  

Must not be greater than 255 characters.

field_order   string[]  optional  

Must not be greater than 255 characters.

GET api/users/searchable-fields

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/searchable-fields" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/searchable-fields"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/searchable-fields

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/users/sortable-fields

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/sortable-fields" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/sortable-fields"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/sortable-fields

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/users/credential-expirations

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/credential-expirations?within_days=1&include_expired=&per_page=22&page=67" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/credential-expirations"
);

const params = {
    "within_days": "1",
    "include_expired": "0",
    "per_page": "22",
    "page": "67",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/credential-expirations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

within_days   integer  optional  

Must be at least 0. Must not be greater than 730. Example: 1

include_expired   boolean  optional  

Example: false

per_page   integer  optional  

Must be at least 1. Must not be greater than 200. Example: 22

page   integer  optional  

Must be at least 1. Example: 67

POST api/users/credential-expirations/export

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/credential-expirations/export?within_days=1&include_expired=1&per_page=22&page=67" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/credential-expirations/export"
);

const params = {
    "within_days": "1",
    "include_expired": "1",
    "per_page": "22",
    "page": "67",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/users/credential-expirations/export

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

within_days   integer  optional  

Must be at least 0. Must not be greater than 730. Example: 1

include_expired   boolean  optional  

Example: true

per_page   integer  optional  

Must be at least 1. Must not be greater than 200. Example: 22

page   integer  optional  

Must be at least 1. Example: 67

GET api/users/{user_id}/compliance-documents

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/compliance-documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/compliance-documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/compliance-documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

GET api/users/{user_id}/workmarket-expenses

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/workmarket-expenses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/workmarket-expenses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/workmarket-expenses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Get the capabilities assigned to a user.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/capabilities" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/capabilities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/capabilities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Assign capabilities to a user.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/16/capabilities" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"capabilities\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/capabilities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "capabilities": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/{user_id}/capabilities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

capabilities   object[]   

Must have at least 1 items.

id   integer   

The id of an existing record in the roles table. Example: 16

Remove a capability from a user.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/users/16/capabilities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/capabilities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/users/{user_id}/capabilities/{capability_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

capability_id   integer   

The ID of the capability. Example: 16

PATCH api/users/{id}

requires authentication deprecated

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/users/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"password\": \"-0pBNvYgxw\",
    \"caseload\": 39,
    \"access_group_id\": 16,
    \"legal_first_name\": \"n\",
    \"legal_last_name\": \"g\",
    \"preferred_first_name\": \"z\",
    \"preferred_last_name\": \"m\",
    \"date_of_birth\": \"2026-09-25T08:45:10\",
    \"phone\": \"architecto\",
    \"ssn\": \"n\",
    \"start_date\": \"2026-09-25T08:45:10\",
    \"work_status\": \"g\",
    \"last_day_of_work\": \"2026-09-25T08:45:10\",
    \"user_type\": \"architecto\",
    \"upper_first_name\": \"n\",
    \"upper_last_name\": \"g\",
    \"salutation\": \"z\",
    \"job_title\": \"m\",
    \"payee_type\": \"architecto\",
    \"employment_type\": \"architecto\",
    \"status\": \"architecto\",
    \"compensation_type\": \"architecto\",
    \"pay_period\": \"architecto\",
    \"deduct_drive_time\": false,
    \"workmarket_id\": \"lg4\",
    \"phones\": [
        {
            \"number\": \"architecto\",
            \"type\": \"home\"
        }
    ],
    \"emails\": [
        {
            \"address\": \"n\",
            \"type\": \"work\"
        }
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "password": "-0pBNvYgxw",
    "caseload": 39,
    "access_group_id": 16,
    "legal_first_name": "n",
    "legal_last_name": "g",
    "preferred_first_name": "z",
    "preferred_last_name": "m",
    "date_of_birth": "2026-09-25T08:45:10",
    "phone": "architecto",
    "ssn": "n",
    "start_date": "2026-09-25T08:45:10",
    "work_status": "g",
    "last_day_of_work": "2026-09-25T08:45:10",
    "user_type": "architecto",
    "upper_first_name": "n",
    "upper_last_name": "g",
    "salutation": "z",
    "job_title": "m",
    "payee_type": "architecto",
    "employment_type": "architecto",
    "status": "architecto",
    "compensation_type": "architecto",
    "pay_period": "architecto",
    "deduct_drive_time": false,
    "workmarket_id": "lg4",
    "phones": [
        {
            "number": "architecto",
            "type": "home"
        }
    ],
    "emails": [
        {
            "address": "n",
            "type": "work"
        }
    ],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/users/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the user. Example: 16

Body Parameters

name   string  optional  

Must not be greater than 255 characters. Example: b

email   string  optional  

Must be a valid email address. Example: zbailey@example.net

password   string  optional  

Must be at least 8 characters. Example: -0pBNvYgxw

caseload   integer  optional  

Must be at least 0. Example: 39

role   object  optional  
id   string  optional  

The id of an existing record in the roles table.

roles   object[]  optional  
id   string  optional  

The id of an existing record in the roles table.

access_group_id   integer  optional  

The id of an existing record in the access_groups table. Example: 16

capabilities   object  optional  
legal_first_name   string  optional  

Must not be greater than 255 characters. Example: n

legal_last_name   string  optional  

Must not be greater than 255 characters. Example: g

preferred_first_name   string  optional  

Must not be greater than 255 characters. Example: z

preferred_last_name   string  optional  

Must not be greater than 255 characters. Example: m

date_of_birth   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

phone   string  optional  

Example: architecto

phones   object[]  optional  
number   string  optional  

Example: architecto

type   string  optional  

Example: home

Must be one of:
  • main
  • home
  • work
  • mobile
emails   object[]  optional  
address   string  optional  

This field is required when emails is present. Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string  optional  

Example: work

Must be one of:
  • main
  • personal
  • work
  • secondary
ssn   string  optional  

Must not be greater than 255 characters. Example: n

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

startdate   string  optional  
work_status   string  optional  

Must not be greater than 255 characters. Example: g

last_day_of_work   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

user_type   string  optional  

Example: architecto

Must be one of:
  • clinical
  • internal
  • client_user
usertype   string  optional  
upper_first_name   string  optional  

Must not be greater than 255 characters. Example: n

upper_last_name   string  optional  

Must not be greater than 255 characters. Example: g

salutation   string  optional  

Must not be greater than 255 characters. Example: z

job_title   string  optional  

Must not be greater than 64 characters. Example: m

addresses   object  optional  
personas   object  optional  
tags   object[]  optional  
id   integer  optional  

The id of an existing record in the tags table. Example: 16

payee_type   string  optional  

Example: architecto

Must be one of:
  • independent_contractor_individual
  • independent_contractor_company
  • employee
employment_type   string  optional  

Example: architecto

Must be one of:
  • w2_full_time
  • 1099_contractor
status   string  optional  

Example: architecto

compensation_type   string  optional  

Example: architecto

Must be one of:
  • salary
  • hourly
  • piece_work
pay_period   string  optional  

Example: architecto

Must be one of:
  • monthly
  • semi_monthly
deduct_drive_time   boolean  optional  

Example: false

workmarket_id   string  optional  

Must match the regex /^[a-zA-Z0-9]+$/. Example: lg4

professional_designations   string[]  optional  
id   integer  optional  

The id of an existing record in the professional_designations table. Example: 16

code   string  optional  

The code of an existing record in the professional_designations table. Example: architecto

obtained_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

PUT /api/users/{user}/profile — routes to direct-apply or PCR creation based on caller permission.

requires authentication

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/users/16/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"requested_changes\": {
        \"name\": \"b\",
        \"email\": \"zbailey@example.net\",
        \"legal_first_name\": \"i\",
        \"legal_last_name\": \"y\",
        \"preferred_first_name\": \"v\",
        \"preferred_last_name\": \"d\",
        \"date_of_birth\": \"2026-09-25T08:45:10\",
        \"salutation\": \"l\",
        \"job_title\": \"j\",
        \"status\": \"architecto\",
        \"mentor_id\": 16,
        \"access_group_id\": 16,
        \"roles\": [
            {
                \"id\": 16
            }
        ],
        \"capabilities\": [
            {
                \"id\": 16
            }
        ],
        \"visible_clients\": [
            {
                \"id\": 16,
                \"include_descendants\": true
            }
        ],
        \"emails\": [
            {
                \"address\": \"n\",
                \"type\": \"personal\"
            }
        ],
        \"phones\": [
            {
                \"number\": \"gzmiyvdljnikhway\",
                \"sms\": true,
                \"type\": \"work\"
            }
        ],
        \"addresses\": [
            {
                \"line_1\": \"k\",
                \"line_2\": \"c\",
                \"city\": \"m\",
                \"state\": \"y\",
                \"zip\": \"uwpwlvqwrsitcpsc\",
                \"county_name\": \"q\",
                \"is_primary\": false,
                \"type\": \"shipping\"
            }
        ],
        \"user_alert_settings\": [
            {
                \"email_id\": 16,
                \"phone_id\": 16,
                \"threshold\": \"urgent\",
                \"is_enabled\": true
            }
        ]
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "requested_changes": {
        "name": "b",
        "email": "zbailey@example.net",
        "legal_first_name": "i",
        "legal_last_name": "y",
        "preferred_first_name": "v",
        "preferred_last_name": "d",
        "date_of_birth": "2026-09-25T08:45:10",
        "salutation": "l",
        "job_title": "j",
        "status": "architecto",
        "mentor_id": 16,
        "access_group_id": 16,
        "roles": [
            {
                "id": 16
            }
        ],
        "capabilities": [
            {
                "id": 16
            }
        ],
        "visible_clients": [
            {
                "id": 16,
                "include_descendants": true
            }
        ],
        "emails": [
            {
                "address": "n",
                "type": "personal"
            }
        ],
        "phones": [
            {
                "number": "gzmiyvdljnikhway",
                "sms": true,
                "type": "work"
            }
        ],
        "addresses": [
            {
                "line_1": "k",
                "line_2": "c",
                "city": "m",
                "state": "y",
                "zip": "uwpwlvqwrsitcpsc",
                "county_name": "q",
                "is_primary": false,
                "type": "shipping"
            }
        ],
        "user_alert_settings": [
            {
                "email_id": 16,
                "phone_id": 16,
                "threshold": "urgent",
                "is_enabled": true
            }
        ]
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/users/{user_id}/profile

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

requested_changes   object   

Must have at least 1 items.

name   string  optional  

Must not be greater than 255 characters. Example: b

email   string  optional  

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

legal_first_name   string  optional  

Must not be greater than 255 characters. Example: i

legal_last_name   string  optional  

Must not be greater than 255 characters. Example: y

preferred_first_name   string  optional  

Must not be greater than 255 characters. Example: v

preferred_last_name   string  optional  

Must not be greater than 255 characters. Example: d

date_of_birth   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

salutation   string  optional  

Must not be greater than 50 characters. Example: l

job_title   string  optional  

Must not be greater than 64 characters. Example: j

status   string  optional  

Example: architecto

mentor_id   integer  optional  

The id of an existing record in the users table. Example: 16

roles   object[]  optional  
id   integer   

The id of an existing record in the roles table. Example: 16

capabilities   object[]  optional  
id   integer   

The id of an existing record in the roles table. Example: 16

access_group_id   integer  optional  

The id of an existing record in the access_groups table. Example: 16

visible_clients   object[]  optional  
id   integer   

The id of an existing record in the clients table. Example: 16

include_descendants   boolean  optional  

Example: true

emails   object[]  optional  

Must have at least 1 items.

address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string   

Example: personal

Must be one of:
  • main
  • personal
  • work
  • secondary
phones   object[]  optional  

Must have at least 1 items.

number   string   

Must not be greater than 20 characters. Example: gzmiyvdljnikhway

sms   boolean  optional  

Example: true

type   string   

Example: work

Must be one of:
  • main
  • home
  • work
  • mobile
addresses   object[]  optional  

Must have at least 1 items.

line_1   string   

Must not be greater than 255 characters. Example: k

line_2   string  optional  

Must not be greater than 255 characters. Example: c

city   string   

Must not be greater than 255 characters. Example: m

state   string   

Must not be greater than 255 characters. Example: y

zip   string   

Must not be greater than 20 characters. Example: uwpwlvqwrsitcpsc

county_name   string  optional  

Must not be greater than 255 characters. Example: q

is_primary   boolean  optional  

Example: false

type   string   

Example: shipping

Must be one of:
  • home
  • work
  • billing
  • shipping
user_alert_settings   object[]  optional  
email_id   integer  optional  

This field is required when none of requested_changes.user_alert_settings..phone_id and requested_changes.user_alert_settings..alert_email are present. The email_id of an existing record in the email_user table. Example: 16

phone_id   integer  optional  

This field is required when none of requested_changes.user_alert_settings..email_id and requested_changes.user_alert_settings..alert_email are present. The phone_id of an existing record in the phone_user table. Example: 16

alert_email   string  optional  
threshold   string   

Example: urgent

Must be one of:
  • low
  • medium
  • high
  • urgent
is_enabled   boolean  optional  

Example: true

professional_designations   string[]  optional  
id   integer  optional  

The id of an existing record in the professional_designations table. Example: 16

code   string  optional  

The code of an existing record in the professional_designations table. Example: architecto

obtained_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

GET api/users/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the user. Example: 16

DELETE api/users/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/users/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/users/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the user. Example: 16

GET api/users/{user_id}/visible-clients

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/visible-clients

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

POST api/users/{user_id}/visible-clients

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibleClients\": [
        {
            \"id\": 16,
            \"includeDescendants\": true
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibleClients": [
        {
            "id": 16,
            "includeDescendants": true
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/{user_id}/visible-clients

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

visibleClients   object[]   

Must have at least 1 items.

id   integer   

The id of an existing record in the clients table. Example: 16

includeDescendants   boolean  optional  

Example: true

GET api/users/{user_id}/visible-clients/{client_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/visible-clients/{client_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

client_id   integer   

The ID of the client. Example: 16

PATCH api/users/{user_id}/visible-clients

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibleClients\": [
        {
            \"id\": 16,
            \"includeDescendants\": true
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibleClients": [
        {
            "id": 16,
            "includeDescendants": true
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/users/{user_id}/visible-clients

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

visibleClients   object[]   
id   integer   

The id of an existing record in the clients table. Example: 16

includeDescendants   boolean  optional  

Example: true

DELETE api/users/{user_id}/visible-clients/{client_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/visible-clients/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/users/{user_id}/visible-clients/{client_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

client_id   integer   

The ID of the client. Example: 16

Display a listing of the user's unavailability records.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/unavailability" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2026-09-25\",
    \"end_date\": \"2026-09-25\",
    \"include_past\": false,
    \"per_page\": 1
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/unavailability"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "start_date": "2026-09-25",
    "end_date": "2026-09-25",
    "include_past": false,
    "per_page": 1
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/unavailability

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

start_date   string  optional  

Must be a valid date. Must be a valid date in the format Y-m-d. Example: 2026-09-25

end_date   string  optional  

Must be a valid date. Must be a valid date in the format Y-m-d. Example: 2026-09-25

include_past   boolean  optional  

Example: false

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 1

Store a newly created user unavailability record.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/16/unavailability" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2022-10-19\",
    \"end_date\": \"2052-10-18\",
    \"type\": \"single_date\",
    \"reason\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/unavailability"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "start_date": "2022-10-19",
    "end_date": "2052-10-18",
    "type": "single_date",
    "reason": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/{user_id}/unavailability

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

start_date   string   

Must be a valid date. Must be a date before or equal to end_date. Example: 2022-10-19

end_date   string   

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-10-18

type   string  optional  

Example: single_date

Must be one of:
  • single_date
  • date_range
reason   string  optional  

Must not be greater than 255 characters. Example: n

Update the specified user unavailability record.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/users/16/unavailability/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2022-10-19\",
    \"end_date\": \"2052-10-18\",
    \"type\": \"single_date\",
    \"reason\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/unavailability/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "start_date": "2022-10-19",
    "end_date": "2052-10-18",
    "type": "single_date",
    "reason": "n"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/users/{user_id}/unavailability/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

id   integer   

The ID of the unavailability. Example: 16

Body Parameters

start_date   string  optional  

Must be a valid date. Must be a date before or equal to end_date. Example: 2022-10-19

end_date   string  optional  

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-10-18

type   string  optional  

Example: single_date

Must be one of:
  • single_date
  • date_range
reason   string  optional  

Must not be greater than 255 characters. Example: n

Remove the specified user unavailability record.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/users/16/unavailability/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/unavailability/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/users/{user_id}/unavailability/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

id   integer   

The ID of the unavailability. Example: 16

GET api/clinician-casework-preferences

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinician-casework-preferences

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/clinician-casework-preferences

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 16,
    \"client_id\": 16,
    \"preference_flag\": \"Last Resort\",
    \"mentor_id\": 16,
    \"caseload\": 39,
    \"assessor_note\": \"architecto\",
    \"consultant_note\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 16,
    "client_id": 16,
    "preference_flag": "Last Resort",
    "mentor_id": 16,
    "caseload": 39,
    "assessor_note": "architecto",
    "consultant_note": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clinician-casework-preferences

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   integer   

The id of an existing record in the users table. Example: 16

client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

preference_flag   string  optional  

Example: Last Resort

Must be one of:
  • Preferred
  • Last Resort
mentor_id   integer  optional  

The id of an existing record in the users table. Example: 16

caseload   integer  optional  

Must be at least 0. Example: 39

assessor_note   string  optional  

Example: architecto

consultant_note   string  optional  

Example: architecto

GET api/clinician-casework-preferences/user/{userId}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/user/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/user/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinician-casework-preferences/user/{userId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

userId   integer   

Example: 16

GET api/clinician-casework-preferences/{clinicianCaseworkPreference_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinician-casework-preferences/{clinicianCaseworkPreference_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicianCaseworkPreference_id   integer   

The ID of the clinicianCaseworkPreference. Example: 16

PATCH api/clinician-casework-preferences/{clinicianCaseworkPreference_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 16,
    \"client_id\": 16,
    \"preference_flag\": \"Preferred\",
    \"mentor_id\": 16,
    \"caseload\": 39,
    \"assessor_note\": \"architecto\",
    \"consultant_note\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 16,
    "client_id": 16,
    "preference_flag": "Preferred",
    "mentor_id": 16,
    "caseload": 39,
    "assessor_note": "architecto",
    "consultant_note": "architecto"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clinician-casework-preferences/{clinicianCaseworkPreference_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicianCaseworkPreference_id   integer   

The ID of the clinicianCaseworkPreference. Example: 16

Body Parameters

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

preference_flag   string  optional  

Example: Preferred

Must be one of:
  • Preferred
  • Last Resort
mentor_id   integer  optional  

The id of an existing record in the users table. Example: 16

caseload   integer  optional  

Must be at least 0. Example: 39

assessor_note   string  optional  

Example: architecto

consultant_note   string  optional  

Example: architecto

DELETE api/clinician-casework-preferences/{clinicianCaseworkPreference_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-casework-preferences/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clinician-casework-preferences/{clinicianCaseworkPreference_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicianCaseworkPreference_id   integer   

The ID of the clinicianCaseworkPreference. Example: 16

Display a listing of the user's notes.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/notes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/notes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/notes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Display the specified user note.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/notes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/notes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/notes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

id   integer   

The ID of the note. Example: 16

Store a newly created note for the user.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/16/notes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"note\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/notes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "note": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/{user_id}/notes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

note   string   

Must not be greater than 65535 characters. Example: b

Update the specified user note.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/users/16/notes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"note\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/notes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "note": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/users/{user_id}/notes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

id   integer   

The ID of the note. Example: 16

Body Parameters

note   string  optional  

Must not be greater than 65535 characters. Example: b

Remove the specified user note.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/users/16/notes/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/notes/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/users/{user_id}/notes/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

id   integer   

The ID of the note. Example: 16

Display a paginated listing of profile change requests for a user.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/profile-change-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/profile-change-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/profile-change-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Store a newly created profile change request.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/16/profile-change-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"requested_changes\": {
        \"name\": \"b\",
        \"email\": \"zbailey@example.net\",
        \"legal_first_name\": \"i\",
        \"legal_last_name\": \"y\",
        \"preferred_first_name\": \"v\",
        \"preferred_last_name\": \"d\",
        \"date_of_birth\": \"2026-09-25T08:45:10\",
        \"salutation\": \"l\",
        \"job_title\": \"j\",
        \"status\": \"architecto\",
        \"mentor_id\": 16,
        \"access_group_id\": 16,
        \"roles\": [
            {
                \"id\": 16
            }
        ],
        \"capabilities\": [
            {
                \"id\": 16
            }
        ],
        \"visible_clients\": [
            {
                \"id\": 16,
                \"include_descendants\": true
            }
        ],
        \"emails\": [
            {
                \"address\": \"n\",
                \"type\": \"main\"
            }
        ],
        \"phones\": [
            {
                \"number\": \"gzmiyvdljnikhway\",
                \"sms\": true,
                \"type\": \"work\"
            }
        ],
        \"addresses\": [
            {
                \"line_1\": \"k\",
                \"line_2\": \"c\",
                \"city\": \"m\",
                \"state\": \"y\",
                \"zip\": \"uwpwlvqwrsitcpsc\",
                \"county_name\": \"q\",
                \"is_primary\": false,
                \"type\": \"shipping\"
            }
        ],
        \"user_alert_settings\": [
            {
                \"email_id\": 16,
                \"phone_id\": 16,
                \"threshold\": \"urgent\",
                \"is_enabled\": false
            }
        ]
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/profile-change-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "requested_changes": {
        "name": "b",
        "email": "zbailey@example.net",
        "legal_first_name": "i",
        "legal_last_name": "y",
        "preferred_first_name": "v",
        "preferred_last_name": "d",
        "date_of_birth": "2026-09-25T08:45:10",
        "salutation": "l",
        "job_title": "j",
        "status": "architecto",
        "mentor_id": 16,
        "access_group_id": 16,
        "roles": [
            {
                "id": 16
            }
        ],
        "capabilities": [
            {
                "id": 16
            }
        ],
        "visible_clients": [
            {
                "id": 16,
                "include_descendants": true
            }
        ],
        "emails": [
            {
                "address": "n",
                "type": "main"
            }
        ],
        "phones": [
            {
                "number": "gzmiyvdljnikhway",
                "sms": true,
                "type": "work"
            }
        ],
        "addresses": [
            {
                "line_1": "k",
                "line_2": "c",
                "city": "m",
                "state": "y",
                "zip": "uwpwlvqwrsitcpsc",
                "county_name": "q",
                "is_primary": false,
                "type": "shipping"
            }
        ],
        "user_alert_settings": [
            {
                "email_id": 16,
                "phone_id": 16,
                "threshold": "urgent",
                "is_enabled": false
            }
        ]
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/users/{user_id}/profile-change-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

requested_changes   object   

Must have at least 1 items.

name   string  optional  

Must not be greater than 255 characters. Example: b

email   string  optional  

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

legal_first_name   string  optional  

Must not be greater than 255 characters. Example: i

legal_last_name   string  optional  

Must not be greater than 255 characters. Example: y

preferred_first_name   string  optional  

Must not be greater than 255 characters. Example: v

preferred_last_name   string  optional  

Must not be greater than 255 characters. Example: d

date_of_birth   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

salutation   string  optional  

Must not be greater than 50 characters. Example: l

job_title   string  optional  

Must not be greater than 64 characters. Example: j

status   string  optional  

Example: architecto

mentor_id   integer  optional  

The id of an existing record in the users table. Example: 16

roles   object[]  optional  
id   integer   

The id of an existing record in the roles table. Example: 16

capabilities   object[]  optional  
id   integer   

The id of an existing record in the roles table. Example: 16

access_group_id   integer  optional  

The id of an existing record in the access_groups table. Example: 16

visible_clients   object[]  optional  
id   integer   

The id of an existing record in the clients table. Example: 16

include_descendants   boolean  optional  

Example: true

emails   object[]  optional  

Must have at least 1 items.

address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string   

Example: main

Must be one of:
  • main
  • personal
  • work
  • secondary
phones   object[]  optional  

Must have at least 1 items.

number   string   

Must not be greater than 20 characters. Example: gzmiyvdljnikhway

sms   boolean  optional  

Example: true

type   string   

Example: work

Must be one of:
  • main
  • home
  • work
  • mobile
addresses   object[]  optional  

Must have at least 1 items.

line_1   string   

Must not be greater than 255 characters. Example: k

line_2   string  optional  

Must not be greater than 255 characters. Example: c

city   string   

Must not be greater than 255 characters. Example: m

state   string   

Must not be greater than 255 characters. Example: y

zip   string   

Must not be greater than 20 characters. Example: uwpwlvqwrsitcpsc

county_name   string  optional  

Must not be greater than 255 characters. Example: q

is_primary   boolean  optional  

Example: false

type   string   

Example: shipping

Must be one of:
  • home
  • work
  • billing
  • shipping
user_alert_settings   object[]  optional  
email_id   integer  optional  

This field is required when none of requested_changes.user_alert_settings..phone_id and requested_changes.user_alert_settings..alert_email are present. The email_id of an existing record in the email_user table. Example: 16

phone_id   integer  optional  

This field is required when none of requested_changes.user_alert_settings..email_id and requested_changes.user_alert_settings..alert_email are present. The phone_id of an existing record in the phone_user table. Example: 16

alert_email   string  optional  
threshold   string   

Example: urgent

Must be one of:
  • low
  • medium
  • high
  • urgent
is_enabled   boolean  optional  

Example: false

professional_designations   string[]  optional  
id   integer  optional  

The id of an existing record in the professional_designations table. Example: 16

code   string  optional  

The code of an existing record in the professional_designations table. Example: architecto

obtained_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:10

Display the specified profile change request.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/profile-change-requests/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/profile-change-requests/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/profile-change-requests/{profileChangeRequest_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

profileChangeRequest_id   integer   

The ID of the profileChangeRequest. Example: 16

Display a paginated listing of all profile change requests.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/profile-change-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"denied\",
    \"user_id\": 16,
    \"requester_id\": 16,
    \"reviewer_id\": 16,
    \"created_from\": \"2026-09-25\",
    \"created_to\": \"2052-10-18\",
    \"sort_by\": \"status\",
    \"sort_order\": \"asc\",
    \"per_page\": 22,
    \"page\": 67,
    \"limit\": 16,
    \"offset\": 77
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "denied",
    "user_id": 16,
    "requester_id": 16,
    "reviewer_id": 16,
    "created_from": "2026-09-25",
    "created_to": "2052-10-18",
    "sort_by": "status",
    "sort_order": "asc",
    "per_page": 22,
    "page": 67,
    "limit": 16,
    "offset": 77
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/profile-change-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

status   string  optional  

Example: denied

Must be one of:
  • pending
  • approved
  • denied
  • cancelled
user_id   integer  optional  

The id of an existing record in the users table. Example: 16

requester_id   integer  optional  

The id of an existing record in the users table. Example: 16

reviewer_id   integer  optional  

The id of an existing record in the users table. Example: 16

created_from   string  optional  

Must be a valid date. Must be a valid date in the format Y-m-d. Example: 2026-09-25

created_to   string  optional  

Must be a valid date. Must be a valid date in the format Y-m-d. Must be a date after or equal to created_from. Example: 2052-10-18

sort_by   string  optional  

Example: status

Must be one of:
  • created_at
  • updated_at
  • status
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 22

page   integer  optional  

Must be at least 1. Example: 67

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

Display the specified profile change request by ID.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/profile-change-requests/{profileChangeRequest_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

profileChangeRequest_id   integer   

The ID of the profileChangeRequest. Example: 16

Approve a profile change request.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reviewer_notes\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16/approve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reviewer_notes": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/profile-change-requests/{profileChangeRequest_id}/approve

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

profileChangeRequest_id   integer   

The ID of the profileChangeRequest. Example: 16

Body Parameters

reviewer_notes   string  optional  

Must not be greater than 1000 characters. Example: b

Cancel a profile change request.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Request   

PATCH api/profile-change-requests/{profileChangeRequest_id}/cancel

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

profileChangeRequest_id   integer   

The ID of the profileChangeRequest. Example: 16

Deny a profile change request.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16/deny" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reviewer_notes\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/profile-change-requests/16/deny"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reviewer_notes": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/profile-change-requests/{profileChangeRequest_id}/deny

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

profileChangeRequest_id   integer   

The ID of the profileChangeRequest. Example: 16

Body Parameters

reviewer_notes   string  optional  

Must not be greater than 1000 characters. Example: b

Display a listing of document change requests for a user.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/document-change-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Store a newly created document change request.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "action_type=delete"\
    --form "document_id=16"\
    --form "requested_changes[title]=n"\
    --form "requested_changes[document_label]=g"\
    --form "requested_changes[document_type]=z"\
    --form "requested_changes[state]=m"\
    --form "requested_changes[expiration_date]=2026-09-25T08:45:11"\
    --form "requested_changes[completion_date]=2026-09-25T08:45:11"\
    --form "requested_changes[signature_files]=architecto"\
    --form "requested_changes[certification_type]=architecto"\
    --form "requested_changes[description]=Eius et animi quos velit et."\
    --form "file=@/tmp/phpp7vnrf7drn2i1acs1z3" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('action_type', 'delete');
body.append('document_id', '16');
body.append('requested_changes[title]', 'n');
body.append('requested_changes[document_label]', 'g');
body.append('requested_changes[document_type]', 'z');
body.append('requested_changes[state]', 'm');
body.append('requested_changes[expiration_date]', '2026-09-25T08:45:11');
body.append('requested_changes[completion_date]', '2026-09-25T08:45:11');
body.append('requested_changes[signature_files]', 'architecto');
body.append('requested_changes[certification_type]', 'architecto');
body.append('requested_changes[description]', 'Eius et animi quos velit et.');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request   

POST api/users/{user_id}/document-change-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

action_type   string   

Example: delete

Must be one of:
  • create
  • update
  • delete
document_id   integer  optional  

This field is required when action_type is update or delete. The id of an existing record in the documents table. Example: 16

file   file  optional  

This field is required when action_type is create. Must be a file. Must not be greater than 10240 kilobytes. Example: /tmp/phpp7vnrf7drn2i1acs1z3

requested_changes   object  optional  

This field is required when action_type is create or update.

title   string  optional  

Must not be greater than 255 characters. Example: n

document_label   string  optional  

Must not be greater than 255 characters. Example: g

document_type   string  optional  

Must not be greater than 100 characters. Example: z

state   string  optional  

Must not be greater than 50 characters. Example: m

expiration_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

completion_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

signature_files   string  optional  

Example: architecto

certification_type   string  optional  

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

Display the specified document change request.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/document-change-requests/{documentChangeRequest_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

documentChangeRequest_id   integer   

The ID of the documentChangeRequest. Example: 16

Update the specified document change request.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "action_type=update"\
    --form "requested_changes[title]=b"\
    --form "requested_changes[document_label]=n"\
    --form "requested_changes[document_type]=g"\
    --form "requested_changes[state]=z"\
    --form "requested_changes[expiration_date]=2026-09-25T08:45:11"\
    --form "requested_changes[description]=Eius et animi quos velit et."\
    --form "file=@/tmp/phphhvaf2nan93v9jhfXnn" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('action_type', 'update');
body.append('requested_changes[title]', 'b');
body.append('requested_changes[document_label]', 'n');
body.append('requested_changes[document_type]', 'g');
body.append('requested_changes[state]', 'z');
body.append('requested_changes[expiration_date]', '2026-09-25T08:45:11');
body.append('requested_changes[description]', 'Eius et animi quos velit et.');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "PATCH",
    headers,
    body,
}).then(response => response.json());

Request   

PATCH api/users/{user_id}/document-change-requests/{documentChangeRequest_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

documentChangeRequest_id   integer   

The ID of the documentChangeRequest. Example: 16

Body Parameters

action_type   string  optional  

Example: update

Must be one of:
  • create
  • update
  • delete
file   file  optional  

Must be a file. Must not be greater than 10240 kilobytes. Example: /tmp/phphhvaf2nan93v9jhfXnn

requested_changes   object  optional  
title   string  optional  

Must not be greater than 255 characters. Example: b

document_label   string  optional  

Must not be greater than 255 characters. Example: n

document_type   string  optional  

Must not be greater than 100 characters. Example: g

state   string  optional  

Must not be greater than 50 characters. Example: z

expiration_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

description   string  optional  

Example: Eius et animi quos velit et.

Remove the specified document change request.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/document-change-requests/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/users/{user_id}/document-change-requests/{documentChangeRequest_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

documentChangeRequest_id   integer   

The ID of the documentChangeRequest. Example: 16

List the target user's bills that have been exported to payroll.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/bills" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1,
    \"search\": \"n\",
    \"sort_by\": \"created_at\",
    \"sort_order\": \"asc\",
    \"per_page\": 7,
    \"page\": 66
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/bills"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1,
    "search": "n",
    "sort_by": "created_at",
    "sort_order": "asc",
    "per_page": 7,
    "page": 66
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/bills

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Body Parameters

year   integer  optional  

Must be at least 2000. Must not be greater than 2100. Example: 1

search   string  optional  

Must not be greater than 50 characters. Example: n

sort_by   string  optional  

Example: created_at

Must be one of:
  • pay_period
  • created_at
  • total_amount
  • bill_number
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

page   integer  optional  

Must be at least 1. Example: 66

Show one of the target user's bills.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/bills/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/bills/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/bills/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

id   integer   

The ID of the bill. Example: 16

Return all blackout/unavailability dates for a specific user.

requires authentication

Used by the Clinician Profile tab to display unavailability.

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/users/16/blackouts" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/users/16/blackouts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/users/{user_id}/blackouts

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   integer   

The ID of the user. Example: 16

Display a paginated listing of all document change requests.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/document-change-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"cancelled\",
    \"request_type\": \"create\",
    \"user_id\": 16,
    \"requested_by\": 16,
    \"reviewed_by\": 16,
    \"document_id\": 16,
    \"created_from\": \"2026-09-25T08:45:11\",
    \"created_to\": \"2026-09-25T08:45:11\",
    \"sort_by\": \"request_type\",
    \"sort_order\": \"asc\",
    \"per_page\": 22
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/document-change-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "cancelled",
    "request_type": "create",
    "user_id": 16,
    "requested_by": 16,
    "reviewed_by": 16,
    "document_id": 16,
    "created_from": "2026-09-25T08:45:11",
    "created_to": "2026-09-25T08:45:11",
    "sort_by": "request_type",
    "sort_order": "asc",
    "per_page": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/document-change-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

status   string  optional  

Example: cancelled

Must be one of:
  • pending
  • approved
  • denied
  • cancelled
request_type   string  optional  

Example: create

Must be one of:
  • create
  • update
  • delete
user_id   integer  optional  

The id of an existing record in the users table. Example: 16

requested_by   integer  optional  

The id of an existing record in the users table. Example: 16

reviewed_by   integer  optional  

The id of an existing record in the users table. Example: 16

document_id   integer  optional  

The id of an existing record in the documents table. Example: 16

created_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

created_to   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

sort_by   string  optional  

Example: request_type

Must be one of:
  • created_at
  • updated_at
  • status
  • request_type
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 22

Display the specified document change request by ID.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/document-change-requests/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/document-change-requests/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/document-change-requests/{documentChangeRequest_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

documentChangeRequest_id   integer   

The ID of the documentChangeRequest. Example: 16

Approve a document change request.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/document-change-requests/16/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reviewer_notes\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/document-change-requests/16/approve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reviewer_notes": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/document-change-requests/{documentChangeRequest_id}/approve

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

documentChangeRequest_id   integer   

The ID of the documentChangeRequest. Example: 16

Body Parameters

reviewer_notes   string  optional  

Must not be greater than 1000 characters. Example: b

Deny a document change request.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/document-change-requests/16/deny" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"denial_reason\": \"b\",
    \"reviewer_notes\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/document-change-requests/16/deny"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "denial_reason": "b",
    "reviewer_notes": "n"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/document-change-requests/{documentChangeRequest_id}/deny

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

documentChangeRequest_id   integer   

The ID of the documentChangeRequest. Example: 16

Body Parameters

denial_reason   string   

Must be at least 10 characters. Must not be greater than 1000 characters. Example: b

reviewer_notes   string  optional  

Must not be greater than 1000 characters. Example: n

Cancel a document change request.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/document-change-requests/16/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/document-change-requests/16/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Request   

PATCH api/document-change-requests/{documentChangeRequest_id}/cancel

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

documentChangeRequest_id   integer   

The ID of the documentChangeRequest. Example: 16

GET api/roles

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/roles

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/roles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\",
    \"user_type\": \"architecto\",
    \"permissions\": [
        16
    ],
    \"permission_groups\": [
        16
    ],
    \"api_id\": \"architecto\",
    \"persona_abbreviation\": \"architecto\",
    \"persona_type\": \"architecto\",
    \"is_capability\": true,
    \"is_specialty\": true,
    \"case_assignment\": true,
    \"bypasses_document_approval\": false,
    \"visibility_scope\": \"architecto\",
    \"notes\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Eius et animi quos velit et.",
    "user_type": "architecto",
    "permissions": [
        16
    ],
    "permission_groups": [
        16
    ],
    "api_id": "architecto",
    "persona_abbreviation": "architecto",
    "persona_type": "architecto",
    "is_capability": true,
    "is_specialty": true,
    "case_assignment": true,
    "bypasses_document_approval": false,
    "visibility_scope": "architecto",
    "notes": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/roles

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

user_type   string   

Example: architecto

Must be one of:
  • Clinical
  • Client Services
  • Finance
  • Human Resources
  • Engineering
  • Executive Suite
  • Client
  • Compliance
permissions   integer[]  optional  
permission_groups   integer[]  optional  
api_id   string  optional  

Example: architecto

persona_abbreviation   string  optional  

Example: architecto

persona_type   string  optional  

Example: architecto

is_capability   boolean  optional  

Example: true

is_specialty   boolean  optional  

Example: true

case_assignment   boolean  optional  

Example: true

bypasses_document_approval   boolean  optional  

Example: false

visibility_scope   string  optional  

Example: architecto

notes   string  optional  

Example: architecto

GET api/roles/capabilities

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles/capabilities" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"b\",
    \"sort_by\": \"domain\",
    \"sort_order\": \"desc\",
    \"page\": 22,
    \"per_page\": 7
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "b",
    "sort_by": "domain",
    "sort_order": "desc",
    "page": 22,
    "per_page": 7
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles/capabilities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

search   string  optional  

Must not be greater than 255 characters. Example: b

sort_by   string  optional  

Example: domain

Must be one of:
  • name
  • domain
  • description
  • user_count
  • last_updated_at
  • last_updated_by
sort_order   string  optional  

Example: desc

Must be one of:
  • asc
  • desc
page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

POST api/roles/capabilities

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"domains\": [
        \"Client Services\"
    ],
    \"permissions\": [
        16
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "domains": [
        "Client Services"
    ],
    "permissions": [
        16
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/roles/capabilities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 2000 characters. Example: Et animi quos velit et fugiat.

domains   string[]   
Must be one of:
  • Clinical
  • Client Services
  • Finance
  • Human Resources
  • Engineering
  • Executive Suite
  • Client
  • Compliance
permissions   integer[]  optional  

The id of an existing record in the permissions table.

GET api/roles/capabilities/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles/capabilities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles/capabilities/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the capability. Example: 16

PATCH api/roles/capabilities/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"version\": 16,
    \"name\": \"n\",
    \"description\": \"Animi quos velit et fugiat.\",
    \"domains\": [
        \"Engineering\"
    ],
    \"permissions\": [
        16
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "version": 16,
    "name": "n",
    "description": "Animi quos velit et fugiat.",
    "domains": [
        "Engineering"
    ],
    "permissions": [
        16
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/roles/capabilities/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the capability. Example: 16

Body Parameters

version   integer   

Must be at least 1. Example: 16

name   string   

Must not be greater than 255 characters. Example: n

description   string  optional  

Must not be greater than 2000 characters. Example: Animi quos velit et fugiat.

domains   string[]   
Must be one of:
  • Clinical
  • Client Services
  • Finance
  • Human Resources
  • Engineering
  • Executive Suite
  • Client
  • Compliance
permissions   integer[]  optional  

The id of an existing record in the permissions table.

DELETE api/roles/capabilities/{capability_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/capabilities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/roles/capabilities/{capability_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

capability_id   integer   

The ID of the capability. Example: 16

GET api/roles/domains

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles/domains" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/domains"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles/domains

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/roles/grouped-by-domain

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles/grouped-by-domain" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/grouped-by-domain"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles/grouped-by-domain

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/roles/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the role. Example: 16

Get all users assigned to a role.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles/16/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles/{role_id}/users

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   integer   

The ID of the role. Example: 16

PATCH api/roles/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/roles/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"version\": 16,
    \"name\": \"n\",
    \"description\": \"Eius et animi quos velit et.\",
    \"user_type\": \"architecto\",
    \"permissions\": [
        16
    ],
    \"permission_groups\": [
        16
    ],
    \"api_id\": \"architecto\",
    \"persona_abbreviation\": \"architecto\",
    \"persona_type\": \"architecto\",
    \"is_capability\": true,
    \"is_specialty\": false,
    \"case_assignment\": true,
    \"bypasses_document_approval\": true,
    \"visibility_scope\": \"architecto\",
    \"notes\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "version": 16,
    "name": "n",
    "description": "Eius et animi quos velit et.",
    "user_type": "architecto",
    "permissions": [
        16
    ],
    "permission_groups": [
        16
    ],
    "api_id": "architecto",
    "persona_abbreviation": "architecto",
    "persona_type": "architecto",
    "is_capability": true,
    "is_specialty": false,
    "case_assignment": true,
    "bypasses_document_approval": true,
    "visibility_scope": "architecto",
    "notes": "architecto"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/roles/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the role. Example: 16

Body Parameters

version   integer   

Must be at least 1. Example: 16

name   string  optional  

Must not be greater than 255 characters. Example: n

description   string  optional  

Example: Eius et animi quos velit et.

user_type   string  optional  

Example: architecto

Must be one of:
  • Clinical
  • Client Services
  • Finance
  • Human Resources
  • Engineering
  • Executive Suite
  • Client
  • Compliance
permissions   integer[]  optional  
permission_groups   integer[]  optional  
api_id   string  optional  

Example: architecto

persona_abbreviation   string  optional  

Example: architecto

persona_type   string  optional  

Example: architecto

is_capability   boolean  optional  

Example: true

is_specialty   boolean  optional  

Example: false

case_assignment   boolean  optional  

Example: true

bypasses_document_approval   boolean  optional  

Example: true

visibility_scope   string  optional  

Example: architecto

notes   string  optional  

Example: architecto

DELETE api/roles/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/roles/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/roles/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the role. Example: 16

GET api/roles/{role_id}/expense-types

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/roles/{role_id}/expense-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   integer   

The ID of the role. Example: 16

POST api/roles/{role_id}/expense-types

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expense_type_codes\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expense_type_codes": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/roles/{role_id}/expense-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   integer   

The ID of the role. Example: 16

Body Parameters

expense_type_codes   string[]   

The code of an existing record in the expense_types table.

PATCH api/roles/{role_id}/expense-types

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expense_type_codes\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expense_type_codes": [
        "architecto"
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/roles/{role_id}/expense-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   integer   

The ID of the role. Example: 16

Body Parameters

expense_type_codes   string[]   

The code of an existing record in the expense_types table.

DELETE api/roles/{role_id}/expense-types

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expense_type_codes\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/roles/16/expense-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expense_type_codes": [
        "architecto"
    ]
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

DELETE api/roles/{role_id}/expense-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

role_id   integer   

The ID of the role. Example: 16

Body Parameters

expense_type_codes   string[]   

The code of an existing record in the expense_types table.

GET api/permissions

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/permissions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get permissions grouped by module and subgroup.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/permissions/grouped-by-group" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/permissions/grouped-by-group"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/permissions/grouped-by-group

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/permissions/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/permissions/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/permissions/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/permissions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the permission. Example: 1

GET api/permission-groups

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/permission-groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/permission-groups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/permission-groups

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/permission-groups/{permissionGroup_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/permission-groups/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/permission-groups/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/permission-groups/{permissionGroup_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

permissionGroup_id   integer   

The ID of the permissionGroup. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/lines-of-business" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/lines-of-business"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/lines-of-business

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show the form for creating a new resource.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/lines-of-business" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"slug\": \"architecto\",
    \"is_active\": false,
    \"lob_category_id\": 16,
    \"due_date_requirement\": \"optional\",
    \"client_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/lines-of-business"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "architecto",
    "description": "Eius et animi quos velit et.",
    "slug": "architecto",
    "is_active": false,
    "lob_category_id": 16,
    "due_date_requirement": "optional",
    "client_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/lines-of-business

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Example: architecto

description   string   

Example: Eius et animi quos velit et.

slug   string  optional  

Example: architecto

is_active   boolean  optional  

Example: false

lob_category_id   integer  optional  

The id of an existing record in the lob_categories table. Example: 16

due_date_requirement   string  optional  

Example: optional

Must be one of:
  • none
  • optional
  • required
client_id   integer   

The id of an existing record in the clients table. Example: 16

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/lines-of-business/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/lines-of-business/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/lines-of-business/{linesOfBusiness_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

linesOfBusiness_id   integer   

The ID of the linesOfBusiness. Example: 16

Show the form for editing the specified resource.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/lines-of-business/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"slug\": \"architecto\",
    \"is_active\": false,
    \"lob_category_id\": 16,
    \"due_date_requirement\": \"optional\",
    \"client_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/lines-of-business/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "architecto",
    "description": "Eius et animi quos velit et.",
    "slug": "architecto",
    "is_active": false,
    "lob_category_id": 16,
    "due_date_requirement": "optional",
    "client_id": 16
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/lines-of-business/{linesOfBusiness_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

linesOfBusiness_id   integer   

The ID of the linesOfBusiness. Example: 16

Body Parameters

name   string  optional  

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

slug   string  optional  

Example: architecto

is_active   boolean  optional  

Example: false

lob_category_id   integer  optional  

The id of an existing record in the lob_categories table. Example: 16

due_date_requirement   string  optional  

Example: optional

Must be one of:
  • none
  • optional
  • required
client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/lines-of-business/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/lines-of-business/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/lines-of-business/{linesOfBusiness_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

linesOfBusiness_id   integer   

The ID of the linesOfBusiness. Example: 16

GET api/lines-of-business/by-client/{client_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/lines-of-business/by-client/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/lines-of-business/by-client/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/lines-of-business/by-client/{client_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

client_id   integer   

The ID of the client. Example: 16

GET api/banners

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/banners" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"audience\": \"client\",
    \"search\": \"architecto\",
    \"page\": 22,
    \"perPage\": 7,
    \"sortBy\": \"type\",
    \"sortOrder\": \"desc\",
    \"per_page\": 16,
    \"sort_by\": \"architecto\",
    \"sort_order\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/banners"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "audience": "client",
    "search": "architecto",
    "page": 22,
    "perPage": 7,
    "sortBy": "type",
    "sortOrder": "desc",
    "per_page": 16,
    "sort_by": "architecto",
    "sort_order": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/banners

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

audience   string   

Must not be one of site. Example: client

Must be one of:
  • client
  • clinician
  • site
search   string  optional  

Example: architecto

page   integer  optional  

Must be at least 1. Example: 22

perPage   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

sortBy   string  optional  

Example: type

Must be one of:
  • createdAt
  • title
  • type
  • updatedAt
sortOrder   string  optional  

Example: desc

Must be one of:
  • asc
  • desc
per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

sort_by   string  optional  

Example: architecto

sort_order   string  optional  

Example: architecto

POST api/banners

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/banners" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"messageBody\": \"architecto\",
    \"type\": \"info\",
    \"audience\": \"client\",
    \"isActive\": false,
    \"isDismissable\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/banners"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "messageBody": "architecto",
    "type": "info",
    "audience": "client",
    "isActive": false,
    "isDismissable": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/banners

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

title   string   

Must not be greater than 255 characters. Example: b

messageBody   string   

Example: architecto

type   string   

Example: info

Must be one of:
  • warning
  • info
  • urgent
audience   string   

Must not be one of site. Example: client

Must be one of:
  • client
  • clinician
  • site
isActive   boolean   

Example: false

isDismissable   boolean   

Example: false

GET api/banners/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/banners/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/banners/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/banners/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the banner. Example: 16

PATCH api/banners/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/banners/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"messageBody\": \"architecto\",
    \"type\": \"urgent\",
    \"audience\": \"clinician\",
    \"isActive\": true,
    \"isDismissable\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/banners/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "messageBody": "architecto",
    "type": "urgent",
    "audience": "clinician",
    "isActive": true,
    "isDismissable": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/banners/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the banner. Example: 16

Body Parameters

title   string  optional  

Must not be greater than 255 characters. Example: b

messageBody   string  optional  

Example: architecto

type   string  optional  

Example: urgent

Must be one of:
  • warning
  • info
  • urgent
audience   string  optional  

Must not be one of site. Example: clinician

Must be one of:
  • client
  • clinician
  • site
isActive   boolean  optional  

Example: true

isDismissable   boolean  optional  

Example: false

DELETE api/banners/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/banners/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/banners/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/banners/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the banner. Example: 16

GET api/admin/banners/site

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/admin/banners/site" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/admin/banners/site"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/admin/banners/site

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

PUT api/admin/banners/site/{siteBanner_id}

requires authentication

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/admin/banners/site/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"body\": \"architecto\",
    \"type\": \"info\",
    \"active\": false,
    \"dismissable\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/admin/banners/site/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "body": "architecto",
    "type": "info",
    "active": false,
    "dismissable": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/admin/banners/site/{siteBanner_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

siteBanner_id   integer   

The ID of the siteBanner. Example: 16

Body Parameters

body   string   

Example: architecto

type   string   

Example: info

Must be one of:
  • warning
  • info
  • urgent
active   boolean  optional  

Example: false

dismissable   boolean  optional  

Example: false

GET api/global-settings

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/global-settings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/global-settings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/global-settings

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

PATCH api/global-settings

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/global-settings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"system_settings\": {
        \"timeout_period\": {
            \"value\": 16,
            \"type\": \"minutes\"
        },
        \"disable_credentials_after_inactive_days\": {
            \"value\": 22,
            \"type\": \"minutes\"
        },
        \"invitation_email_expiry_hours\": {
            \"value\": 67,
            \"type\": \"days\"
        }
    },
    \"clinician_settings\": {
        \"deactivate_clinician_no_assessment_days\": {
            \"value\": 66,
            \"type\": \"days\",
            \"help_text\": \"architecto\"
        }
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/global-settings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "system_settings": {
        "timeout_period": {
            "value": 16,
            "type": "minutes"
        },
        "disable_credentials_after_inactive_days": {
            "value": 22,
            "type": "minutes"
        },
        "invitation_email_expiry_hours": {
            "value": 67,
            "type": "days"
        }
    },
    "clinician_settings": {
        "deactivate_clinician_no_assessment_days": {
            "value": 66,
            "type": "days",
            "help_text": "architecto"
        }
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/global-settings

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

system_settings   object  optional  
timeout_period   object  optional  
value   integer  optional  

Must be at least 1. Example: 16

type   string  optional  

Example: minutes

Must be one of:
  • minutes
  • hours
  • days
disable_credentials_after_inactive_days   object  optional  
value   integer  optional  

Must be at least 1. Example: 22

type   string  optional  

Example: minutes

Must be one of:
  • minutes
  • hours
  • days
invitation_email_expiry_hours   object  optional  
value   integer  optional  

Must be at least 1. Example: 67

type   string  optional  

Example: days

Must be one of:
  • hours
  • days
clinician_settings   object  optional  
deactivate_clinician_no_assessment_days   object  optional  
value   integer  optional  

Must be at least 1. Example: 66

type   string  optional  

Example: days

Must be one of:
  • days
  • weeks
  • months
help_text   string  optional  

Example: architecto

GET api/clinical-criteria

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinical-criteria" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "b"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinical-criteria

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

search   string  optional  

Must not be greater than 255 characters. Example: b

POST api/clinical-criteria

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "description": "Eius et animi quos velit et."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clinical-criteria

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

title   string   

Must not be greater than 255 characters. Example: b

description   string   

Example: Eius et animi quos velit et.

GET api/clinical-criteria/{clinicalCriteria_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinical-criteria/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinical-criteria/{clinicalCriteria_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicalCriteria_id   integer   

The ID of the clinicalCriteria. Example: 16

PATCH api/clinical-criteria/{clinicalCriteria_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"description\": \"Eius et animi quos velit et.\",
    \"is_active\": true
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "description": "Eius et animi quos velit et.",
    "is_active": true
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clinical-criteria/{clinicalCriteria_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicalCriteria_id   integer   

The ID of the clinicalCriteria. Example: 16

Body Parameters

title   string   

Must not be greater than 255 characters. Example: b

description   string   

Example: Eius et animi quos velit et.

is_active   boolean  optional  

Example: true

DELETE api/clinical-criteria/{clinicalCriteria_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinical-criteria/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clinical-criteria/{clinicalCriteria_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicalCriteria_id   integer   

The ID of the clinicalCriteria. Example: 16

GET api/default-email-templates

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/default-email-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/default-email-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/default-email-templates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Authoring-time PHI gate reflection (GRY-3826 item 4): report each recipient's TLS-secure status plus whether PHI content is permitted for the whole set (all recipients secure).

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/recipient-tls-status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_id\": 16,
    \"recipients\": [
        {
            \"type\": \"user\",
            \"user_id\": 16,
            \"tag\": \"architecto\",
            \"email\": \"zbailey@example.net\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/recipient-tls-status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_id": 16,
    "recipients": [
        {
            "type": "user",
            "user_id": 16,
            "tag": "architecto",
            "email": "zbailey@example.net"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/default-email-templates/recipient-tls-status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

client_id   integer   

The id of an existing record in the clients table. Example: 16

recipients   object[]   

Must have at least 1 items.

type   string   

Example: user

Must be one of:
  • user
  • tag
  • email
user_id   integer  optional  

This field is required when recipients.*.type is user. Example: 16

tag   string  optional  

This field is required when recipients.*.type is tag. Example: architecto

email   string  optional  

This field is required when recipients.*.type is email. Must be a valid email address. Example: zbailey@example.net

GET api/default-email-templates/{defaultEmailTemplate_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/default-email-templates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/default-email-templates/{defaultEmailTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

defaultEmailTemplate_id   integer   

The ID of the defaultEmailTemplate. Example: 16

PATCH api/default-email-templates/{defaultEmailTemplate_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"subject\": \"b\",
    \"body\": \"architecto\",
    \"phi_body\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "subject": "b",
    "body": "architecto",
    "phi_body": "architecto"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/default-email-templates/{defaultEmailTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

defaultEmailTemplate_id   integer   

The ID of the defaultEmailTemplate. Example: 16

Body Parameters

subject   string   

Must not be greater than 255 characters. Example: b

body   string   

Example: architecto

phi_body   string  optional  

Example: architecto

DELETE api/default-email-templates/{defaultEmailTemplate_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/default-email-templates/{defaultEmailTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

defaultEmailTemplate_id   integer   

The ID of the defaultEmailTemplate. Example: 16

POST api/default-email-templates/{defaultEmailTemplate_id}/reset

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/16/reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/default-email-templates/16/reset"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/default-email-templates/{defaultEmailTemplate_id}/reset

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

defaultEmailTemplate_id   integer   

The ID of the defaultEmailTemplate. Example: 16

GET api/system-rules

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/system-rules" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"architecto\",
    \"rule_family\": \"pricing\",
    \"status\": \"active\",
    \"variation\": \"assessor\",
    \"page\": 22,
    \"per_page\": \"20\",
    \"sort_by\": \"status\",
    \"sort_order\": \"asc\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/system-rules"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "architecto",
    "rule_family": "pricing",
    "status": "active",
    "variation": "assessor",
    "page": 22,
    "per_page": "20",
    "sort_by": "status",
    "sort_order": "asc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/system-rules

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

query   string  optional  

Example: architecto

rule_family   string  optional  

Example: pricing

Must be one of:
  • global_system_alerts
  • automatic_activities
  • pricing
  • assessment_form
  • assessment_sections
  • auto_assign
  • pay_rate
  • clinical_criteria
  • narrative_report_submission
status   string  optional  

Example: active

Must be one of:
  • active
  • inactive
variation   string  optional  

Example: assessor

Must be one of:
  • assessor
  • reviewer
  • consultant
  • case_manager
  • assessment_rate
  • no_show_rate
page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Example: 20

Must be one of:
  • 5
  • 10
  • 15
  • 20
sort_by   string  optional  

Example: status

Must be one of:
  • priority
  • rule_family
  • status
  • title
  • updated_at
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
filters   object  optional  

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/system-rules/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"architecto\",
    \"rule_family\": \"global_system_alerts\",
    \"status\": \"inactive\",
    \"variation\": \"consultant\",
    \"page\": 22,
    \"per_page\": \"10\",
    \"sort_by\": \"priority\",
    \"sort_order\": \"asc\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/system-rules/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "architecto",
    "rule_family": "global_system_alerts",
    "status": "inactive",
    "variation": "consultant",
    "page": 22,
    "per_page": "10",
    "sort_by": "priority",
    "sort_order": "asc"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

POST api/system-rules

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/system-rules" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rule_family\": \"clinical_criteria\",
    \"variation\": \"bngzmiyvdljnikhw\",
    \"title\": \"a\",
    \"status\": \"active\",
    \"priority\": 50,
    \"active_from\": \"2026-09-25T08:45:11\",
    \"active_to\": \"2052-10-18\",
    \"trigger_type\": \"n\",
    \"conditions\": [
        {
            \"field\": \"b\",
            \"operator\": \"architecto\",
            \"boolean\": \"and\",
            \"source\": \"n\",
            \"path\": \"g\",
            \"unit\": \"days\",
            \"direction\": \"future\"
        }
    ],
    \"actions\": [
        {
            \"type\": \"z\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/system-rules"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rule_family": "clinical_criteria",
    "variation": "bngzmiyvdljnikhw",
    "title": "a",
    "status": "active",
    "priority": 50,
    "active_from": "2026-09-25T08:45:11",
    "active_to": "2052-10-18",
    "trigger_type": "n",
    "conditions": [
        {
            "field": "b",
            "operator": "architecto",
            "boolean": "and",
            "source": "n",
            "path": "g",
            "unit": "days",
            "direction": "future"
        }
    ],
    "actions": [
        {
            "type": "z"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/system-rules

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

rule_family   string   

Example: clinical_criteria

Must be one of:
  • global_system_alerts
  • automatic_activities
  • pricing
  • assessment_form
  • assessment_sections
  • auto_assign
  • pay_rate
  • clinical_criteria
  • narrative_report_submission
variation   string  optional  

Must be at least 1 character. Example: bngzmiyvdljnikhw

title   string   

Must not be greater than 255 characters. Example: a

status   string  optional  

Example: active

Must be one of:
  • active
  • inactive
priority   integer  optional  

Must be at least 0. Example: 50

active_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

active_to   string  optional  

Must be a valid date. Must be a date after or equal to active_from. Example: 2052-10-18

trigger_type   string  optional  

Must not be greater than 100 characters. Example: n

trigger_config   object  optional  
conditions   object[]   

Must have at least 1 items.

field   string   

Must not be greater than 100 characters. Example: b

operator   string   

Example: architecto

Must be one of:
  • equals
  • not_equals
  • greater_than
  • greater_than_or_equal
  • less_than
  • less_than_or_equal
  • in
  • not_in
  • contains
  • not_contains
  • starts_with
  • ends_with
  • is_empty
  • is_not_empty
  • between
  • is_null
  • is_not_null
  • =
value   string  optional  
boolean   string  optional  

Example: and

Must be one of:
  • and
source   string  optional  

Must not be greater than 100 characters. Example: n

path   string  optional  

Must not be greater than 255 characters. Example: g

unit   string  optional  

This field is required when conditions.*.direction is present. Example: days

Must be one of:
  • minutes
  • hours
  • days
  • weeks
direction   string  optional  

This field is required when conditions.*.unit is present. Example: future

Must be one of:
  • past
  • future
actions   object[]   

Must have at least 1 items.

type   string   

Must not be greater than 100 characters. Example: z

params   object  optional  

POST api/system-rules/{systemRule_id}/duplicate

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/system-rules/16/duplicate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/system-rules/16/duplicate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/system-rules/{systemRule_id}/duplicate

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

systemRule_id   integer   

The ID of the systemRule. Example: 16

GET api/system-rules/{systemRule_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/system-rules/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/system-rules/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/system-rules/{systemRule_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

systemRule_id   integer   

The ID of the systemRule. Example: 16

PATCH api/system-rules/{systemRule_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/system-rules/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rule_family\": \"pay_rate\",
    \"variation\": \"bngzmiyvdljnikhw\",
    \"title\": \"a\",
    \"status\": \"inactive\",
    \"priority\": 50,
    \"active_from\": \"2026-09-25T08:45:11\",
    \"active_to\": \"2026-09-25T08:45:11\",
    \"trigger_type\": \"k\",
    \"version\": 13,
    \"conditions\": [
        {
            \"field\": \"m\",
            \"operator\": \"architecto\",
            \"boolean\": \"and\",
            \"source\": \"n\",
            \"path\": \"g\",
            \"unit\": \"minutes\",
            \"direction\": \"past\"
        }
    ],
    \"actions\": [
        {
            \"type\": \"z\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/system-rules/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rule_family": "pay_rate",
    "variation": "bngzmiyvdljnikhw",
    "title": "a",
    "status": "inactive",
    "priority": 50,
    "active_from": "2026-09-25T08:45:11",
    "active_to": "2026-09-25T08:45:11",
    "trigger_type": "k",
    "version": 13,
    "conditions": [
        {
            "field": "m",
            "operator": "architecto",
            "boolean": "and",
            "source": "n",
            "path": "g",
            "unit": "minutes",
            "direction": "past"
        }
    ],
    "actions": [
        {
            "type": "z"
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/system-rules/{systemRule_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

systemRule_id   integer   

The ID of the systemRule. Example: 16

Body Parameters

rule_family   string  optional  

Example: pay_rate

Must be one of:
  • global_system_alerts
  • automatic_activities
  • pricing
  • assessment_form
  • assessment_sections
  • auto_assign
  • pay_rate
  • clinical_criteria
  • narrative_report_submission
variation   string  optional  

Must be at least 1 character. Example: bngzmiyvdljnikhw

title   string  optional  

Must not be greater than 255 characters. Example: a

status   string  optional  

Example: inactive

Must be one of:
  • active
  • inactive
priority   integer  optional  

Must be at least 0. Example: 50

active_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

active_to   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

trigger_type   string  optional  

Must not be greater than 100 characters. Example: k

trigger_config   object  optional  
conditions   object[]  optional  

Must have at least 1 items.

field   string  optional  

This field is required when conditions is present. Must not be greater than 100 characters. Example: m

operator   string  optional  

This field is required when conditions is present. Example: architecto

Must be one of:
  • equals
  • not_equals
  • greater_than
  • greater_than_or_equal
  • less_than
  • less_than_or_equal
  • in
  • not_in
  • contains
  • not_contains
  • starts_with
  • ends_with
  • is_empty
  • is_not_empty
  • between
  • is_null
  • is_not_null
  • =
value   string  optional  
boolean   string  optional  

Example: and

Must be one of:
  • and
source   string  optional  

Must not be greater than 100 characters. Example: n

path   string  optional  

Must not be greater than 255 characters. Example: g

unit   string  optional  

This field is required when conditions.*.direction is present. Example: minutes

Must be one of:
  • minutes
  • hours
  • days
  • weeks
direction   string  optional  

This field is required when conditions.*.unit is present. Example: past

Must be one of:
  • past
  • future
actions   object[]  optional  

Must have at least 1 items.

type   string  optional  

This field is required when actions is present. Must not be greater than 100 characters. Example: z

params   object  optional  
version   integer   

Must be at least 1. Example: 13

DELETE api/system-rules/{systemRule_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/system-rules/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/system-rules/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/system-rules/{systemRule_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

systemRule_id   integer   

The ID of the systemRule. Example: 16

GET api/rule-catalog/fields

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rule-catalog/fields" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"context\": \"cases\",
    \"rule_family\": \"automatic_activities\",
    \"variation\": \"assessment_rate\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rule-catalog/fields"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "context": "cases",
    "rule_family": "automatic_activities",
    "variation": "assessment_rate"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rule-catalog/fields

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

context   string  optional  

Example: cases

Must be one of:
  • cases
  • users
rule_family   string  optional  

Example: automatic_activities

Must be one of:
  • global_system_alerts
  • automatic_activities
  • pricing
  • assessment_form
  • assessment_sections
  • auto_assign
  • pay_rate
  • clinical_criteria
  • narrative_report_submission
variation   string  optional  

Example: assessment_rate

Must be one of:
  • assessor
  • reviewer
  • consultant
  • case_manager
  • assessment_rate
  • no_show_rate

GET api/rule-catalog/operators

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rule-catalog/operators" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rule-catalog/operators"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rule-catalog/operators

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Value list for the `users.trainings` criteria field — per-install data, so it is served here rather than seeded into filter_fields.options (GRY-4331).

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rule-catalog/trainings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rule-catalog/trainings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rule-catalog/trainings

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Value list for the `cases.request_type_tag` criteria field — the tags an admin has attached to at least one case type. Per-install data, so it is served here rather than seeded into filter_fields.options (GRY-4448).

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rule-catalog/request-type-tags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rule-catalog/request-type-tags"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rule-catalog/request-type-tags

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Value list for the Global System Alerts action panel's Case Role select. An action parameter rather than a criteria field, so it has no filter_fields row to carry options and the endpoint is its only mechanism (GRY-4331).

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/rule-catalog/case-roles" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/rule-catalog/case-roles"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/rule-catalog/case-roles

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/activity-templates

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/activity-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"architecto\",
    \"active\": false,
    \"page\": 22,
    \"per_page\": 7,
    \"sort_by\": \"active\",
    \"sort_order\": \"asc\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/activity-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "architecto",
    "active": false,
    "page": 22,
    "per_page": 7,
    "sort_by": "active",
    "sort_order": "asc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/activity-templates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

query   string  optional  

Example: architecto

active   boolean  optional  

Example: false

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

sort_by   string  optional  

Example: active

Must be one of:
  • slug
  • title
  • active
  • updated_at
  • created_at
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc

POST api/activity-templates

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/activity-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"slug\": \"b\",
    \"entity_type\": \"n\",
    \"trigger_key\": \"g\",
    \"title\": \"z\",
    \"content_template\": \"architecto\",
    \"default_priority\": \"medium\",
    \"default_visibility\": \"financial\",
    \"notes\": \"architecto\",
    \"active\": true
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/activity-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "slug": "b",
    "entity_type": "n",
    "trigger_key": "g",
    "title": "z",
    "content_template": "architecto",
    "default_priority": "medium",
    "default_visibility": "financial",
    "notes": "architecto",
    "active": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/activity-templates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

slug   string   

Must not be greater than 255 characters. Example: b

entity_type   string  optional  

Must not be greater than 100 characters. Example: n

trigger_key   string  optional  

Must not be greater than 100 characters. Example: g

title   string   

Must not be greater than 255 characters. Example: z

content_template   string  optional  

Example: architecto

default_priority   string  optional  

Example: medium

Must be one of:
  • low
  • medium
  • high
  • urgent
default_visibility   string  optional  

Example: financial

Must be one of:
  • public
  • internal
  • private
  • financial
criteria   object  optional  
notes   string  optional  

Example: architecto

active   boolean  optional  

Example: true

GET api/activity-templates/{activityTemplate_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/activity-templates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/activity-templates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/activity-templates/{activityTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

activityTemplate_id   integer   

The ID of the activityTemplate. Example: 16

PATCH api/activity-templates/{activityTemplate_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/activity-templates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"entity_type\": \"b\",
    \"trigger_key\": \"n\",
    \"title\": \"g\",
    \"content_template\": \"architecto\",
    \"default_priority\": \"medium\",
    \"default_visibility\": \"financial\",
    \"notes\": \"architecto\",
    \"active\": true,
    \"version\": 22
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/activity-templates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "entity_type": "b",
    "trigger_key": "n",
    "title": "g",
    "content_template": "architecto",
    "default_priority": "medium",
    "default_visibility": "financial",
    "notes": "architecto",
    "active": true,
    "version": 22
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/activity-templates/{activityTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

activityTemplate_id   integer   

The ID of the activityTemplate. Example: 16

Body Parameters

entity_type   string  optional  

Must not be greater than 100 characters. Example: b

trigger_key   string  optional  

Must not be greater than 100 characters. Example: n

title   string  optional  

Must not be greater than 255 characters. Example: g

content_template   string  optional  

Example: architecto

default_priority   string  optional  

Example: medium

Must be one of:
  • low
  • medium
  • high
  • urgent
default_visibility   string  optional  

Example: financial

Must be one of:
  • public
  • internal
  • private
  • financial
criteria   object  optional  
notes   string  optional  

Example: architecto

active   boolean  optional  

Example: true

version   integer   

Must be at least 1. Example: 22

DELETE api/activity-templates/{activityTemplate_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/activity-templates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/activity-templates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/activity-templates/{activityTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

activityTemplate_id   integer   

The ID of the activityTemplate. Example: 16

GET api/alert-templates/available-tags

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/alert-templates/available-tags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"message_type\": \"default\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alert-templates/available-tags"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "message_type": "default"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/alert-templates/available-tags

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

message_type   string   

Example: default

Must be one of:
  • default
  • tls_secure

GET api/alert-templates

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/alert-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"page\": 22,
    \"per_page\": 7
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alert-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "page": 22,
    "per_page": 7
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/alert-templates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

filters   object  optional  
search   string  optional  

Example: architecto

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/alert-templates/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"page\": 22,
    \"per_page\": 7
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alert-templates/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "page": 22,
    "per_page": 7
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

POST api/alert-templates

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/alert-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"default_message\": {
        \"type\": \"doc\"
    },
    \"tls_secure_message\": {
        \"type\": \"doc\"
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alert-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "default_message": {
        "type": "doc"
    },
    "tls_secure_message": {
        "type": "doc"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/alert-templates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

title   string   

Must match the regex /\S/. Must not be greater than 255 characters. Example: b

default_message   object  optional  
type   string  optional  

This field is required when default_message is present. Example: doc

Must be one of:
  • doc
content   object  optional  

This field is required when default_message is present.

tls_secure_message   object  optional  
type   string  optional  

This field is required when tls_secure_message is present. Example: doc

Must be one of:
  • doc
content   object  optional  

This field is required when tls_secure_message is present.

POST api/alert-templates/{alertTemplate_id}/render

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/alert-templates/1/render" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"message_type\": \"default\",
    \"output_format\": \"html\",
    \"reference_id\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alert-templates/1/render"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "message_type": "default",
    "output_format": "html",
    "reference_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/alert-templates/{alertTemplate_id}/render

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

alertTemplate_id   integer   

The ID of the alertTemplate. Example: 1

Body Parameters

message_type   string   

Example: default

Must be one of:
  • default
  • tls_secure
output_format   string   

Example: html

Must be one of:
  • html
  • pdf
reference_id   string   

Example: architecto

GET api/alert-templates/{alertTemplate_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/alert-templates/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alert-templates/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/alert-templates/{alertTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

alertTemplate_id   integer   

The ID of the alertTemplate. Example: 1

PATCH api/alert-templates/{alertTemplate_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/alert-templates/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"default_message\": {
        \"type\": \"doc\"
    },
    \"tls_secure_message\": {
        \"type\": \"doc\"
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alert-templates/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "default_message": {
        "type": "doc"
    },
    "tls_secure_message": {
        "type": "doc"
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/alert-templates/{alertTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

alertTemplate_id   integer   

The ID of the alertTemplate. Example: 1

Body Parameters

title   string  optional  

Must match the regex /\S/. Must not be greater than 255 characters. Example: b

default_message   object  optional  
type   string  optional  

This field is required when default_message is present. Example: doc

Must be one of:
  • doc
content   object  optional  

This field is required when default_message is present.

tls_secure_message   object  optional  
type   string  optional  

This field is required when tls_secure_message is present. Example: doc

Must be one of:
  • doc
content   object  optional  

This field is required when tls_secure_message is present.

GET api/admin/alert-templates

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/admin/alert-templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"page\": 22,
    \"per_page\": 7
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/admin/alert-templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "page": 22,
    "per_page": 7
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/admin/alert-templates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

filters   object  optional  
search   string  optional  

Example: architecto

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/admin/alert-templates/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"page\": 22,
    \"per_page\": 7
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/admin/alert-templates/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "page": 22,
    "per_page": 7
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

POST api/admin/alert-templates/{alertTemplate_id}/render

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/admin/alert-templates/1/render" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"message_type\": \"default\",
    \"output_format\": \"html\",
    \"reference_id\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/admin/alert-templates/1/render"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "message_type": "default",
    "output_format": "html",
    "reference_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/admin/alert-templates/{alertTemplate_id}/render

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

alertTemplate_id   integer   

The ID of the alertTemplate. Example: 1

Body Parameters

message_type   string   

Example: default

Must be one of:
  • default
  • tls_secure
output_format   string   

Example: html

Must be one of:
  • html
  • pdf
reference_id   string   

Example: architecto

GET api/admin/alert-templates/{alertTemplate_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/admin/alert-templates/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/admin/alert-templates/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/admin/alert-templates/{alertTemplate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

alertTemplate_id   integer   

The ID of the alertTemplate. Example: 1

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/member-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"b\",
    \"client_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "b",
    "client_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/member-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

type   string  optional  

Must not be greater than 255 characters. Example: b

client_id   integer  optional  

Example: 16

Show the form for creating a new resource.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/member-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"architecto\",
    \"format\": \"n\",
    \"client_id\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "architecto",
    "format": "n",
    "client_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/member-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

type   string   

Example: architecto

format   string  optional  

Must not be greater than 255 characters. Example: n

client_id   string   

The id of an existing record in the clients table. Example: architecto

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/member-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/member-types/{memberType_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

memberType_id   integer   

The ID of the memberType. Example: 16

Show the form for editing the specified resource.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/member-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"architecto\",
    \"format\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "architecto",
    "format": "n"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/member-types/{memberType_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

memberType_id   integer   

The ID of the memberType. Example: 16

Body Parameters

type   string  optional  

Example: architecto

format   string  optional  

Must not be greater than 255 characters. Example: n

client_id   string  optional  

The id of an existing record in the clients table.

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/member-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/member-types/{memberType_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

memberType_id   integer   

The ID of the memberType. Example: 16

GET api/member-duplicates

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/member-duplicates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"per_page\": 1,
    \"page\": 22
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-duplicates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "per_page": 1,
    "page": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/member-duplicates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 1

page   integer  optional  

Must be at least 1. Example: 22

GET api/activities

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/activities" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"start_date\": \"2026-09-25T08:45:11\",
    \"end_date\": \"2026-09-25T08:45:11\",
    \"entity\": [
        \"architecto\"
    ],
    \"entity_id\": 16,
    \"user_id\": 16,
    \"causer_type_name\": \"architecto\",
    \"user_ids\": [
        16
    ],
    \"page\": 22,
    \"per_page\": 7,
    \"sort_by\": \"new\",
    \"sort_order\": \"desc\",
    \"subject_type_name\": \"architecto\",
    \"subject_id\": 16,
    \"causer_id\": 16,
    \"causer_ids\": \"architecto\",
    \"limit\": 22,
    \"offset\": 84
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/activities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "start_date": "2026-09-25T08:45:11",
    "end_date": "2026-09-25T08:45:11",
    "entity": [
        "architecto"
    ],
    "entity_id": 16,
    "user_id": 16,
    "causer_type_name": "architecto",
    "user_ids": [
        16
    ],
    "page": 22,
    "per_page": 7,
    "sort_by": "new",
    "sort_order": "desc",
    "subject_type_name": "architecto",
    "subject_id": 16,
    "causer_id": 16,
    "causer_ids": "architecto",
    "limit": 22,
    "offset": 84
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/activities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

search   string  optional  

Example: architecto

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

end_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

entity   string[]  optional  
entity_id   integer  optional  

Example: 16

user_id   integer  optional  

Example: 16

causer_type_name   string  optional  

Example: architecto

user_ids   integer[]  optional  
page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

sort_by   string  optional  

Example: new

Must be one of:
  • change_date
  • entity
  • entity_id
  • field
  • user
  • previous
  • new
sort_order   string  optional  

Example: desc

Must be one of:
  • asc
  • desc
subject_type_name   string  optional  

Example: architecto

subject_id   integer  optional  

Example: 16

causer_id   integer  optional  

Example: 16

causer_ids   string  optional  

Example: architecto

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 22

offset   integer  optional  

Must be at least 0. Example: 84

GET api/activities/entity-options

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/activities/entity-options" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/activities/entity-options"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/activities/entity-options

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/members/gryphon-activities/{member_id}

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibility\": \"financial\",
    \"priority\": \"low\",
    \"message\": \"architecto\",
    \"user\": {
        \"id\": 16
    },
    \"parent\": {
        \"id\": 16
    },
    \"watcher_ids\": [
        16
    ],
    \"watchers\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibility": "financial",
    "priority": "low",
    "message": "architecto",
    "user": {
        "id": 16
    },
    "parent": {
        "id": 16
    },
    "watcher_ids": [
        16
    ],
    "watchers": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/gryphon-activities/{member_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

Body Parameters

visibility   string   

Example: financial

Must be one of:
  • public
  • internal
  • private
  • financial
priority   string   

Example: low

Must be one of:
  • low
  • medium
  • high
  • urgent
message   string   

Example: architecto

user   object  optional  
id   integer  optional  

The id of an existing record in the users table. Example: 16

parent   object  optional  
id   integer  optional  

The id of an existing record in the gryphon_activities table. Example: 16

watchers   object[]  optional  
id   integer   

The id of an existing record in the users table. Example: 16

watcher_ids   integer[]   

The id of an existing record in the users table.

GET api/members/gryphon-activities/{member_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/members/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"start_date\": \"2026-09-25T08:45:11\",
    \"end_date\": \"2026-09-25T08:45:11\",
    \"created_at\": \"2026-09-25T08:45:11\",
    \"activity_type\": \"architecto\",
    \"priority\": \"architecto\",
    \"visibility\": \"architecto\",
    \"user_id\": 16,
    \"parent_id\": 16,
    \"updated_at\": \"2026-09-25T08:45:11\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort\": \"architecto\",
    \"order\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "start_date": "2026-09-25T08:45:11",
    "end_date": "2026-09-25T08:45:11",
    "created_at": "2026-09-25T08:45:11",
    "activity_type": "architecto",
    "priority": "architecto",
    "visibility": "architecto",
    "user_id": 16,
    "parent_id": 16,
    "updated_at": "2026-09-25T08:45:11",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort": "architecto",
    "order": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/members/gryphon-activities/{member_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

Body Parameters

search   string  optional  

Example: architecto

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

end_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

created_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

activity_type   string  optional  

Example: architecto

priority   string  optional  

Example: architecto

visibility   string  optional  

Example: architecto

user_id   integer  optional  

Example: 16

parent_id   integer  optional  

Example: 16

updated_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

sort   string  optional  

Example: architecto

order   string  optional  

Example: architecto

people   string  optional  

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"client_id\": 16,
    \"client_member_id\": \"architecto\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort\": \"member_id\",
    \"order\": \"asc\",
    \"filters\": {
        \"logic\": \"AND\"
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "client_id": 16,
    "client_member_id": "architecto",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort": "member_id",
    "order": "asc",
    "filters": {
        "logic": "AND"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

POST api/members/export

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filters\": {
        \"logic\": \"OR\"
    },
    \"sort\": \"name\",
    \"order\": \"asc\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "filters": {
        "logic": "OR"
    },
    "sort": "name",
    "order": "asc"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/export

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

filters   object  optional  
logic   string  optional  

Example: OR

Must be one of:
  • AND
  • OR
conditions   object  optional  
sort   string  optional  

Example: name

Must be one of:
  • name
  • client
  • id_type
  • member_id
  • city
  • state
  • zip
order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc

POST api/members/bulk/view-urls

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/bulk/view-urls" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_ids\": [
        16
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/bulk/view-urls"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_ids": [
        16
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/bulk/view-urls

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

member_ids   integer[]   

POST api/members

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"first_name\": \"n\",
    \"middle_name\": \"g\",
    \"last_name\": \"z\",
    \"ssn\": \"-33\",
    \"gender\": \"male\",
    \"language\": \"Spanish\",
    \"date_of_birth\": \"2026-09-25T08:45:11\",
    \"addresses\": [
        {
            \"line_1\": \"g\",
            \"line_2\": \"z\",
            \"city\": \"m\",
            \"state\": \"i\",
            \"zip_code\": \"y\",
            \"is_homeless\": false,
            \"is_primary\": false,
            \"type\": \"billing\"
        }
    ],
    \"phones\": [
        {
            \"number\": \"v\",
            \"type\": \"work\",
            \"is_primary\": false
        }
    ],
    \"client\": {
        \"client\": {
            \"id\": \"architecto\"
        },
        \"member_type\": {
            \"id\": \"architecto\"
        },
        \"lines_of_business\": {
            \"id\": \"architecto\"
        },
        \"client_member_id\": \"n\"
    },
    \"safety_flag\": \"aggressive_dog\",
    \"notes\": \"architecto\",
    \"emails\": [
        {
            \"address\": \"n\",
            \"type\": \"secondary\",
            \"is_primary\": true
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "first_name": "n",
    "middle_name": "g",
    "last_name": "z",
    "ssn": "-33",
    "gender": "male",
    "language": "Spanish",
    "date_of_birth": "2026-09-25T08:45:11",
    "addresses": [
        {
            "line_1": "g",
            "line_2": "z",
            "city": "m",
            "state": "i",
            "zip_code": "y",
            "is_homeless": false,
            "is_primary": false,
            "type": "billing"
        }
    ],
    "phones": [
        {
            "number": "v",
            "type": "work",
            "is_primary": false
        }
    ],
    "client": {
        "client": {
            "id": "architecto"
        },
        "member_type": {
            "id": "architecto"
        },
        "lines_of_business": {
            "id": "architecto"
        },
        "client_member_id": "n"
    },
    "safety_flag": "aggressive_dog",
    "notes": "architecto",
    "emails": [
        {
            "address": "n",
            "type": "secondary",
            "is_primary": true
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

title   string  optional  

Must not be greater than 255 characters. Example: b

first_name   string   

Must not be greater than 255 characters. Example: n

middle_name   string  optional  

Must not be greater than 255 characters. Example: g

last_name   string   

Must not be greater than 255 characters. Example: z

ssn   string  optional  

Must match the regex /^[0-9-]+$/. Example: -33

gender   string   

Example: male

Must be one of:
  • male
  • female
  • other
language   string   

Example: Spanish

Must be one of:
  • English
  • Spanish
  • French
  • German
  • Italian
  • Portuguese
  • Dutch
  • Russian
  • Japanese
  • Chinese
  • Mandarin
  • Korean
  • Arabic
  • Hindi
  • Bengali
  • Punjabi
  • Urdu
  • Turkish
  • Vietnamese
  • Thai
  • Indonesian
  • Filipino
  • Malay
  • Swahili
  • Amharic
  • Somali
  • Yoruba
  • Igbo
  • Hausa
  • Zulu
  • Xhosa
  • Afrikaans
  • American Sign Language
  • Other
date_of_birth   string   

Must be a valid date. Example: 2026-09-25T08:45:11

emails   object[]  optional  
address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string   

Example: secondary

Must be one of:
  • main
  • personal
  • work
  • secondary
is_primary   boolean  optional  

Example: true

addresses   object[]   

Must have at least 1 items.

line_1   string  optional  

This field is required unless addresses.*.is_homeless is in true. Must not be greater than 255 characters. Example: g

line_2   string  optional  

Must not be greater than 255 characters. Example: z

city   string   

Must not be greater than 255 characters. Example: m

state   string   

Must not be greater than 255 characters. Example: i

zip_code   string  optional  

This field is required unless addresses.*.is_homeless is in true. Must not be greater than 255 characters. Example: y

is_homeless   boolean  optional  

Example: false

is_primary   boolean   

Example: false

type   string   

Example: billing

Must be one of:
  • home
  • work
  • billing
  • shipping
  • temporary
  • assessment
phones   object[]   

Must have at least 1 items.

number   string   

Must not be greater than 255 characters. Example: v

type   string   

Example: work

Must be one of:
  • main
  • home
  • work
  • mobile
is_primary   boolean  optional  

Example: false

client   object  optional  
client   object  optional  
id   string   

The id of an existing record in the clients table. Example: architecto

member_type   object  optional  
id   string   

The id of an existing record in the member_types table. Example: architecto

lines_of_business   object  optional  
id   string   

The id of an existing record in the lines_of_businesses table. Example: architecto

client_member_id   string   

Must not be greater than 255 characters. Example: n

safety_flag   string  optional  

Example: aggressive_dog

Must be one of:
  • aggressive_behavior
  • aggressive_dog
  • mental_health_issues
  • other
notes   string  optional  

Example: architecto

GET api/members

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/members" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"client_id\": 16,
    \"client_member_id\": \"architecto\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort\": \"client\",
    \"order\": \"desc\",
    \"filters\": {
        \"logic\": \"AND\"
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "client_id": 16,
    "client_member_id": "architecto",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort": "client",
    "order": "desc",
    "filters": {
        "logic": "AND"
    }
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/members

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

search   string  optional  

Example: architecto

client_id   integer  optional  

Example: 16

client_member_id   string  optional  

Example: architecto

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

sort   string  optional  

Example: client

Must be one of:
  • name
  • client
  • id_type
  • member_id
  • city
  • state
  • zip
order   string  optional  

Example: desc

Must be one of:
  • asc
  • desc
filters   object  optional  
logic   string  optional  

Example: AND

Must be one of:
  • AND
  • OR
conditions   object  optional  

GET api/members/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/members/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/members/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the member. Example: 16

PATCH api/members/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/members/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"first_name\": \"n\",
    \"middle_name\": \"g\",
    \"last_name\": \"z\",
    \"gender\": \"male\",
    \"ssn\": \"-33\",
    \"language\": \"Malay\",
    \"date_of_birth\": \"2026-09-25T08:45:11\",
    \"client\": {
        \"client\": {
            \"id\": \"architecto\"
        },
        \"member_type\": {
            \"id\": \"architecto\"
        },
        \"lines_of_business\": {
            \"id\": \"architecto\"
        },
        \"client_member_id\": \"n\"
    },
    \"safety_flag\": \"aggressive_behavior\",
    \"notes\": \"architecto\",
    \"emails\": [
        {
            \"address\": \"n\",
            \"type\": \"personal\",
            \"is_primary\": false
        }
    ],
    \"addresses\": [
        {
            \"line_1\": \"g\",
            \"line_2\": \"z\",
            \"city\": \"m\",
            \"state\": \"i\",
            \"zip_code\": \"y\",
            \"is_homeless\": false,
            \"is_primary\": false,
            \"type\": \"shipping\"
        }
    ],
    \"phones\": [
        {
            \"number\": \"v\",
            \"type\": \"home\",
            \"is_primary\": true
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "first_name": "n",
    "middle_name": "g",
    "last_name": "z",
    "gender": "male",
    "ssn": "-33",
    "language": "Malay",
    "date_of_birth": "2026-09-25T08:45:11",
    "client": {
        "client": {
            "id": "architecto"
        },
        "member_type": {
            "id": "architecto"
        },
        "lines_of_business": {
            "id": "architecto"
        },
        "client_member_id": "n"
    },
    "safety_flag": "aggressive_behavior",
    "notes": "architecto",
    "emails": [
        {
            "address": "n",
            "type": "personal",
            "is_primary": false
        }
    ],
    "addresses": [
        {
            "line_1": "g",
            "line_2": "z",
            "city": "m",
            "state": "i",
            "zip_code": "y",
            "is_homeless": false,
            "is_primary": false,
            "type": "shipping"
        }
    ],
    "phones": [
        {
            "number": "v",
            "type": "home",
            "is_primary": true
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/members/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the member. Example: 16

Body Parameters

title   string  optional  

Must not be greater than 255 characters. Example: b

first_name   string   

Must not be greater than 255 characters. Example: n

middle_name   string  optional  

Must not be greater than 255 characters. Example: g

last_name   string   

Must not be greater than 255 characters. Example: z

gender   string   

Example: male

Must be one of:
  • male
  • female
  • other
ssn   string  optional  

Must match the regex /^[0-9-]+$/. Example: -33

language   string   

Example: Malay

Must be one of:
  • English
  • Spanish
  • French
  • German
  • Italian
  • Portuguese
  • Dutch
  • Russian
  • Japanese
  • Chinese
  • Mandarin
  • Korean
  • Arabic
  • Hindi
  • Bengali
  • Punjabi
  • Urdu
  • Turkish
  • Vietnamese
  • Thai
  • Indonesian
  • Filipino
  • Malay
  • Swahili
  • Amharic
  • Somali
  • Yoruba
  • Igbo
  • Hausa
  • Zulu
  • Xhosa
  • Afrikaans
  • American Sign Language
  • Other
date_of_birth   string   

Must be a valid date. Example: 2026-09-25T08:45:11

emails   object[]  optional  
address   string  optional  

Must be a valid email address. Must not be greater than 255 characters. Example: n

type   string  optional  

Example: personal

Must be one of:
  • main
  • personal
  • work
  • secondary
is_primary   boolean  optional  

Example: false

addresses   object[]  optional  

Must have at least 1 items.

line_1   string  optional  

This field is required unless addresses.*.is_homeless is in true. Must not be greater than 255 characters. Example: g

line_2   string  optional  

Must not be greater than 255 characters. Example: z

city   string   

Must not be greater than 255 characters. Example: m

state   string   

Must not be greater than 255 characters. Example: i

zip_code   string  optional  

This field is required unless addresses.*.is_homeless is in true. Must not be greater than 255 characters. Example: y

is_homeless   boolean  optional  

Example: false

is_primary   boolean   

Example: false

type   string   

Example: shipping

Must be one of:
  • home
  • work
  • billing
  • shipping
  • temporary
  • assessment
phones   object[]  optional  

Must have at least 1 items.

number   string  optional  

Must not be greater than 255 characters. Example: v

type   string  optional  

Example: home

Must be one of:
  • main
  • home
  • work
  • mobile
is_primary   boolean  optional  

Example: true

client   object  optional  
client   object  optional  
id   string   

The id of an existing record in the clients table. Example: architecto

member_type   object  optional  
id   string   

The id of an existing record in the member_types table. Example: architecto

lines_of_business   object  optional  
id   string   

The id of an existing record in the lines_of_businesses table. Example: architecto

client_member_id   string   

Must not be greater than 255 characters. Example: n

safety_flag   string  optional  

Example: aggressive_behavior

Must be one of:
  • aggressive_behavior
  • aggressive_dog
  • mental_health_issues
  • other
notes   string  optional  

Example: architecto

DELETE api/members/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/members/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/members/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the member. Example: 16

Check for duplicates against a member, based on received parameters

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/check-duplicates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"ssn\": \"ngzmiy\",
    \"date_of_birth\": \"2026-09-25T08:45:11\",
    \"first_name\": \"v\",
    \"last_name\": \"d\",
    \"client_member_id\": \"l\",
    \"phones\": [
        \"j\"
    ],
    \"emails\": [
        \"n\"
    ],
    \"addresses\": [
        {
            \"line_1\": \"i\",
            \"city\": \"k\",
            \"state\": \"h\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/check-duplicates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "ssn": "ngzmiy",
    "date_of_birth": "2026-09-25T08:45:11",
    "first_name": "v",
    "last_name": "d",
    "client_member_id": "l",
    "phones": [
        "j"
    ],
    "emails": [
        "n"
    ],
    "addresses": [
        {
            "line_1": "i",
            "city": "k",
            "state": "h"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/check-duplicates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

member_id   integer  optional  

The id of an existing record in the members table. Example: 16

ssn   string  optional  

Must not be greater than 11 characters. Example: ngzmiy

date_of_birth   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

first_name   string  optional  

Must not be greater than 255 characters. Example: v

last_name   string  optional  

Must not be greater than 255 characters. Example: d

client_member_id   string  optional  

Must not be greater than 255 characters. Example: l

phones   string[]  optional  

Must not be greater than 255 characters.

emails   string[]  optional  

Must not be greater than 255 characters.

addresses   object[]  optional  
line_1   string  optional  

Must not be greater than 255 characters. Example: i

city   string  optional  

Must not be greater than 255 characters. Example: k

state   string  optional  

Must not be greater than 255 characters. Example: h

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/link-duplicate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id_1\": 16,
    \"member_id_2\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/link-duplicate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id_1": 16,
    "member_id_2": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

POST api/members/dismiss-duplicate

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/dismiss-duplicate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id_1\": 16,
    \"member_id_2\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/dismiss-duplicate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id_1": 16,
    "member_id_2": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/dismiss-duplicate

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

member_id_1   integer   

The id of an existing record in the members table. Example: 16

member_id_2   integer   

The value and member_id_1 must be different. The id of an existing record in the members table. Example: 16

POST api/members/{member_id}/phones

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/16/phones" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"number\": \"b\",
    \"type\": \"mobile\",
    \"is_primary\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/phones"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "number": "b",
    "type": "mobile",
    "is_primary": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/{member_id}/phones

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

Body Parameters

number   string   

Must not be greater than 255 characters. Example: b

type   string   

Example: mobile

Must be one of:
  • main
  • home
  • work
  • mobile
is_primary   boolean  optional  

Example: false

PATCH api/members/{member_id}/phones/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/members/16/phones/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"number\": \"b\",
    \"type\": \"work\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/phones/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "number": "b",
    "type": "work"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/members/{member_id}/phones/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

id   integer   

The ID of the phone. Example: 16

Body Parameters

number   string  optional  

Must not be greater than 255 characters. Example: b

type   string  optional  

Example: work

Must be one of:
  • main
  • home
  • work
  • mobile

DELETE api/members/{member_id}/phones/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/members/16/phones/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/phones/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/members/{member_id}/phones/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

id   integer   

The ID of the phone. Example: 16

POST api/members/{member_id}/emails

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/16/emails" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"address\": \"b\",
    \"type\": \"secondary\",
    \"is_primary\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/emails"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "address": "b",
    "type": "secondary",
    "is_primary": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/{member_id}/emails

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

Body Parameters

address   string   

Must be a valid email address. Must not be greater than 255 characters. Example: b

type   string   

Example: secondary

Must be one of:
  • main
  • personal
  • work
  • secondary
is_primary   boolean  optional  

Example: false

PATCH api/members/{member_id}/emails/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/members/16/emails/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"address\": \"b\",
    \"type\": \"secondary\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/emails/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "address": "b",
    "type": "secondary"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/members/{member_id}/emails/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

id   integer   

The ID of the email. Example: 16

Body Parameters

address   string  optional  

Must be a valid email address. Must not be greater than 255 characters. Example: b

type   string  optional  

Example: secondary

Must be one of:
  • main
  • personal
  • work
  • secondary

DELETE api/members/{member_id}/emails/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/members/16/emails/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/emails/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/members/{member_id}/emails/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

id   integer   

The ID of the email. Example: 16

POST api/members/{member_id}/addresses

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/16/addresses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"line_1\": \"b\",
    \"line_2\": \"n\",
    \"city\": \"g\",
    \"state\": \"z\",
    \"zip_code\": \"m\",
    \"is_homeless\": false,
    \"is_primary\": true,
    \"type\": \"assessment\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/addresses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "line_1": "b",
    "line_2": "n",
    "city": "g",
    "state": "z",
    "zip_code": "m",
    "is_homeless": false,
    "is_primary": true,
    "type": "assessment"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/{member_id}/addresses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

Body Parameters

line_1   string  optional  

This field is required unless is_homeless is in true. Must not be greater than 255 characters. Example: b

line_2   string  optional  

Must not be greater than 255 characters. Example: n

city   string   

Must not be greater than 255 characters. Example: g

state   string   

Must not be greater than 255 characters. Example: z

zip_code   string  optional  

This field is required unless is_homeless is in true. Must not be greater than 255 characters. Example: m

is_homeless   boolean  optional  

Example: false

is_primary   boolean   

Example: true

type   string   

Example: assessment

Must be one of:
  • home
  • work
  • billing
  • shipping
  • temporary
  • assessment

GRY-3868 — POST /api/members/{member}/collected-addresses

requires authentication

The collection half of the temporary-address workflow: CS Basic collects a temporary address when confirming member info, the Assessor defines an assessment address when scheduling. Separate from storeAddress because the guarantees are structural, not payload-shaped — MemberService::collectAddress can only ever ATTACH a new, non-primary, collected-type address, so no payload can make it touch an existing pivot or a primary.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/16/collected-addresses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"line_1\": \"b\",
    \"line_2\": \"n\",
    \"city\": \"g\",
    \"state\": \"z\",
    \"zip_code\": \"m\",
    \"is_homeless\": false,
    \"type\": \"assessment\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/collected-addresses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "line_1": "b",
    "line_2": "n",
    "city": "g",
    "state": "z",
    "zip_code": "m",
    "is_homeless": false,
    "type": "assessment"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/{member_id}/collected-addresses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

Body Parameters

line_1   string  optional  

This field is required unless is_homeless is in true. Must not be greater than 255 characters. Example: b

line_2   string  optional  

Must not be greater than 255 characters. Example: n

city   string   

Must not be greater than 255 characters. Example: g

state   string   

Must not be greater than 255 characters. Example: z

zip_code   string  optional  

This field is required unless is_homeless is in true. Must not be greater than 255 characters. Example: m

is_homeless   boolean  optional  

Example: false

type   string   

Example: assessment

Must be one of:
  • temporary
  • assessment

DELETE api/members/{member_id}/addresses/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/members/16/addresses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/addresses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/members/{member_id}/addresses/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

id   integer   

The ID of the address. Example: 16

POST /api/members/{member}/addresses/{address}/primary-request

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/members/16/addresses/16/primary-request" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"requester_notes\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/addresses/16/primary-request"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "requester_notes": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/members/{member_id}/addresses/{address_id}/primary-request

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

address_id   integer   

The ID of the address. Example: 16

Body Parameters

requester_notes   string  optional  

Must not be greater than 1000 characters. Example: b

GET /api/members/{member}/primary-address-requests

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/members/16/primary-address-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"cancelled\",
    \"per_page\": 1,
    \"page\": 22
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/members/16/primary-address-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "cancelled",
    "per_page": 1,
    "page": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/members/{member_id}/primary-address-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

member_id   integer   

The ID of the member. Example: 16

Body Parameters

status   string  optional  

Example: cancelled

Must be one of:
  • pending
  • approved
  • denied
  • cancelled
per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 1

page   integer  optional  

Must be at least 1. Example: 22

GET /api/member-primary-address-requests — the Client Services queue.

requires authentication

The AC has the field roles ask Client Services to promote the address, so CS needs a list of what is waiting; without it approve/deny are unreachable in practice.

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"denied\",
    \"per_page\": 1,
    \"page\": 22
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "denied",
    "per_page": 1,
    "page": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/member-primary-address-requests

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

status   string  optional  

Example: denied

Must be one of:
  • pending
  • approved
  • denied
  • cancelled
per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 1

page   integer  optional  

Must be at least 1. Example: 22

GET /api/member-primary-address-requests/{memberPrimaryAddressRequest}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/member-primary-address-requests/{memberPrimaryAddressRequest_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

memberPrimaryAddressRequest_id   integer   

The ID of the memberPrimaryAddressRequest. Example: 16

PATCH /api/member-primary-address-requests/{memberPrimaryAddressRequest}/approve

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reviewer_notes\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16/approve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reviewer_notes": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/member-primary-address-requests/{memberPrimaryAddressRequest_id}/approve

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

memberPrimaryAddressRequest_id   integer   

The ID of the memberPrimaryAddressRequest. Example: 16

Body Parameters

reviewer_notes   string  optional  

Must not be greater than 1000 characters. Example: b

PATCH /api/member-primary-address-requests/{memberPrimaryAddressRequest}/deny

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16/deny" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reviewer_notes\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16/deny"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reviewer_notes": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/member-primary-address-requests/{memberPrimaryAddressRequest_id}/deny

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

memberPrimaryAddressRequest_id   integer   

The ID of the memberPrimaryAddressRequest. Example: 16

Body Parameters

reviewer_notes   string  optional  

Must not be greater than 1000 characters. Example: b

PATCH /api/member-primary-address-requests/{memberPrimaryAddressRequest}/cancel

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/member-primary-address-requests/16/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Request   

PATCH api/member-primary-address-requests/{memberPrimaryAddressRequest_id}/cancel

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

memberPrimaryAddressRequest_id   integer   

The ID of the memberPrimaryAddressRequest. Example: 16

GET api/gryphon-activities

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/gryphon-activities" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"start_date\": \"2026-09-25T08:45:11\",
    \"end_date\": \"2026-09-25T08:45:11\",
    \"created_at\": \"2026-09-25T08:45:11\",
    \"activity_type\": \"architecto\",
    \"priority\": \"architecto\",
    \"visibility\": \"architecto\",
    \"user_id\": 16,
    \"parent_id\": 16,
    \"updated_at\": \"2026-09-25T08:45:11\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort\": \"architecto\",
    \"order\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "start_date": "2026-09-25T08:45:11",
    "end_date": "2026-09-25T08:45:11",
    "created_at": "2026-09-25T08:45:11",
    "activity_type": "architecto",
    "priority": "architecto",
    "visibility": "architecto",
    "user_id": 16,
    "parent_id": 16,
    "updated_at": "2026-09-25T08:45:11",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort": "architecto",
    "order": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/gryphon-activities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

search   string  optional  

Example: architecto

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

end_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

created_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

activity_type   string  optional  

Example: architecto

priority   string  optional  

Example: architecto

visibility   string  optional  

Example: architecto

user_id   integer  optional  

Example: 16

parent_id   integer  optional  

Example: 16

updated_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

sort   string  optional  

Example: architecto

order   string  optional  

Example: architecto

people   string  optional  

POST api/gryphon-activities

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibility\": \"private\",
    \"priority\": \"low\",
    \"message\": \"architecto\",
    \"user\": {
        \"id\": 16
    },
    \"parent\": {
        \"id\": 16
    },
    \"watcher_ids\": [
        16
    ],
    \"watchers\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibility": "private",
    "priority": "low",
    "message": "architecto",
    "user": {
        "id": 16
    },
    "parent": {
        "id": 16
    },
    "watcher_ids": [
        16
    ],
    "watchers": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/gryphon-activities

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

visibility   string   

Example: private

Must be one of:
  • public
  • internal
  • private
  • financial
priority   string   

Example: low

Must be one of:
  • low
  • medium
  • high
  • urgent
message   string   

Example: architecto

user   object  optional  
id   integer  optional  

The id of an existing record in the users table. Example: 16

parent   object  optional  
id   integer  optional  

The id of an existing record in the gryphon_activities table. Example: 16

watchers   object[]  optional  
id   integer   

The id of an existing record in the users table. Example: 16

watcher_ids   integer[]   

The id of an existing record in the users table.

POST api/gryphon-activities/watchers/{gryphonActivity_id}

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/watchers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 16,
    \"notified_at\": \"2026-09-25T08:45:11\",
    \"type\": \"architecto\",
    \"viewed_at\": \"2026-09-25T08:45:11\",
    \"dismissed_at\": \"2026-09-25T08:45:11\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/watchers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 16,
    "notified_at": "2026-09-25T08:45:11",
    "type": "architecto",
    "viewed_at": "2026-09-25T08:45:11",
    "dismissed_at": "2026-09-25T08:45:11"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/gryphon-activities/watchers/{gryphonActivity_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

gryphonActivity_id   integer   

The ID of the gryphonActivity. Example: 16

Body Parameters

user_id   integer   

The id of an existing record in the users table. Example: 16

notified_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

type   string   

Example: architecto

viewed_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

dismissed_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

GET api/gryphon-activities/watchers/{gryphonActivity_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/gryphon-activities/watchers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/watchers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/gryphon-activities/watchers/{gryphonActivity_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

gryphonActivity_id   integer   

The ID of the gryphonActivity. Example: 16

GET api/gryphon-activities/{gryphonActivity_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/gryphon-activities/{gryphonActivity_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

gryphonActivity_id   integer   

The ID of the gryphonActivity. Example: 16

PATCH api/gryphon-activities/{gryphonActivity_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibility\": \"public\",
    \"priority\": \"urgent\",
    \"message\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibility": "public",
    "priority": "urgent",
    "message": "architecto"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/gryphon-activities/{gryphonActivity_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

gryphonActivity_id   integer   

The ID of the gryphonActivity. Example: 16

Body Parameters

visibility   string   

Example: public

Must be one of:
  • public
  • internal
  • private
  • financial
priority   string   

Example: urgent

Must be one of:
  • low
  • medium
  • high
  • urgent
message   string   

Example: architecto

DELETE api/gryphon-activities/{gryphonActivity_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/gryphon-activities/{gryphonActivity_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

gryphonActivity_id   integer   

The ID of the gryphonActivity. Example: 16

GET api/watchers

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/watchers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/watchers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/watchers

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

PATCH api/watchers/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/watchers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"notified_at\": \"2026-09-25T08:45:11\",
    \"type\": \"architecto\",
    \"viewed_at\": \"2026-09-25T08:45:11\",
    \"dismissed_at\": \"2026-09-25T08:45:11\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/watchers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "notified_at": "2026-09-25T08:45:11",
    "type": "architecto",
    "viewed_at": "2026-09-25T08:45:11",
    "dismissed_at": "2026-09-25T08:45:11"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/watchers/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the watcher. Example: 16

Body Parameters

notified_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

type   string  optional  

Example: architecto

viewed_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

dismissed_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

DELETE api/watchers/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/watchers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/watchers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/watchers/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the watcher. Example: 16

GET api/alerts

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/alerts" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alerts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/alerts

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/alerts/count

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/alerts/count" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alerts/count"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/alerts/count

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

PATCH api/alerts/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/alerts/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"dismissed_at\": \"2026-09-25T08:45:11\",
    \"viewed_at\": \"2026-09-25T08:45:11\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/alerts/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "dismissed_at": "2026-09-25T08:45:11",
    "viewed_at": "2026-09-25T08:45:11"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/alerts/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the alert. Example: 16

Body Parameters

dismissed_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

viewed_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

GET api/request-types

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/request-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"is_group\": false,
    \"group\": [],
    \"page\": 26,
    \"per_page\": 5,
    \"limit\": 19,
    \"offset\": 52
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "is_group": false,
    "group": [],
    "page": 26,
    "per_page": 5,
    "limit": 19,
    "offset": 52
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/request-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string  optional  

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

is_group   boolean  optional  

Example: false

group   object  optional  
id   string  optional  

The id of an existing record in the request_types table.

page   integer  optional  

Must be at least 1. Example: 26

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 5

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 19

offset   integer  optional  

Must be at least 0. Example: 52

POST api/request-types

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/request-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"is_group\": true,
    \"group\": [],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "is_group": true,
    "group": [],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/request-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

is_group   boolean   

Example: true

group   object  optional  
id   string  optional  

The id of an existing record in the request_types table.

hcpcs   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

cpt   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

tags   object[]  optional  
id   integer   

The id of an existing record in the tags table. Example: 16

GET api/request-types/{requestType_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/request-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/request-types/{requestType_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestType_id   integer   

The ID of the requestType. Example: 16

PATCH api/request-types/{requestType_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/request-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"is_group\": false,
    \"group\": [],
    \"hcpcs\": [
        []
    ],
    \"cpt\": [
        []
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "is_group": false,
    "group": [],
    "hcpcs": [
        []
    ],
    "cpt": [
        []
    ],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/request-types/{requestType_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestType_id   integer   

The ID of the requestType. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

is_group   boolean  optional  

Example: false

group   object  optional  
id   string  optional  

The id of an existing record in the request_types table.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

tags   object[]  optional  
id   integer   

The id of an existing record in the tags table. Example: 16

hcpcs   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

cpt   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

DELETE api/request-types/{requestType}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/request-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/request-types/{requestType}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestType   integer   

Example: 16

GET api/case-types

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"is_group\": false,
    \"group\": [],
    \"page\": 26,
    \"per_page\": 5,
    \"limit\": 19,
    \"offset\": 52
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "is_group": false,
    "group": [],
    "page": 26,
    "per_page": 5,
    "limit": 19,
    "offset": 52
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string  optional  

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

is_group   boolean  optional  

Example: false

group   object  optional  
id   string  optional  

The id of an existing record in the request_types table.

page   integer  optional  

Must be at least 1. Example: 26

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 5

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 19

offset   integer  optional  

Must be at least 0. Example: 52

POST api/case-types

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"is_group\": false,
    \"group\": [],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "is_group": false,
    "group": [],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

is_group   boolean   

Example: false

group   object  optional  
id   string  optional  

The id of an existing record in the request_types table.

hcpcs   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

cpt   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

tags   object[]  optional  
id   integer   

The id of an existing record in the tags table. Example: 16

GET api/case-types/{requestType_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-types/{requestType_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestType_id   integer   

The ID of the requestType. Example: 16

PATCH api/case-types/{requestType_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-types/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"is_group\": false,
    \"group\": [],
    \"hcpcs\": [
        []
    ],
    \"cpt\": [
        []
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-types/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "is_group": false,
    "group": [],
    "hcpcs": [
        []
    ],
    "cpt": [
        []
    ],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-types/{requestType_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestType_id   integer   

The ID of the requestType. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

is_group   boolean  optional  

Example: false

group   object  optional  
id   string  optional  

The id of an existing record in the request_types table.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

tags   object[]  optional  
id   integer   

The id of an existing record in the tags table. Example: 16

hcpcs   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

cpt   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

DELETE api/case-types/{requestType}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-types/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-types/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-types/{requestType}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestType   string   

Example: architecto

GET api/modifiers

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/modifiers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/modifiers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/modifiers

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/modifiers

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/modifiers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/modifiers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/modifiers

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

GET api/modifiers/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/modifiers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/modifiers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/modifiers/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the modifier. Example: 16

PATCH api/modifiers/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/modifiers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/modifiers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/modifiers/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the modifier. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

DELETE api/modifiers/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/modifiers/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/modifiers/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/modifiers/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the modifier. Example: 16

GET api/request-type-options

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/request-type-options" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-options"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/request-type-options

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/request-type-options

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/request-type-options" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-options"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/request-type-options

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

GET api/request-type-options/{requestTypeOption_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/request-type-options/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-options/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/request-type-options/{requestTypeOption_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeOption_id   integer   

The ID of the requestTypeOption. Example: 16

PATCH api/request-type-options/{requestTypeOption_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/request-type-options/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-options/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/request-type-options/{requestTypeOption_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeOption_id   integer   

The ID of the requestTypeOption. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

DELETE api/request-type-options/{requestTypeOption_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/request-type-options/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-options/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/request-type-options/{requestTypeOption_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeOption_id   integer   

The ID of the requestTypeOption. Example: 16

GET api/case-type-options

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-type-options" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-options"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-type-options

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/case-type-options

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-type-options" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-options"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-type-options

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

GET api/case-type-options/{requestTypeOption_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-type-options/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-options/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-type-options/{requestTypeOption_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeOption_id   integer   

The ID of the requestTypeOption. Example: 16

PATCH api/case-type-options/{requestTypeOption_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-type-options/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-options/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-type-options/{requestTypeOption_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeOption_id   integer   

The ID of the requestTypeOption. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

DELETE api/case-type-options/{requestTypeOption_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-type-options/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-options/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-type-options/{requestTypeOption_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeOption_id   integer   

The ID of the requestTypeOption. Example: 16

GET api/procedure-codes

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/procedure-codes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/procedure-codes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/procedure-codes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/procedure-codes/hcpcs

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/procedure-codes/hcpcs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/procedure-codes/hcpcs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/procedure-codes/hcpcs

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/procedure-codes/cpt

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/procedure-codes/cpt" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/procedure-codes/cpt"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/procedure-codes/cpt

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/procedure-codes/{procedureCode}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/procedure-codes/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/procedure-codes/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/procedure-codes/{procedureCode}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

procedureCode   string   

Example: architecto

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/request-type-sets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-sets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/request-type-sets

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show the form for creating a new resource.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/request-type-sets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-sets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/request-type-sets

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

modifiers   object[]  optional  
id   string  optional  

The id of an existing record in the modifiers table.

hcpcs   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

cpt   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/request-type-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/request-type-sets/{requestTypeSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeSet_id   integer   

The ID of the requestTypeSet. Example: 16

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/request-type-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/request-type-sets/{requestTypeSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeSet_id   integer   

The ID of the requestTypeSet. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

modifiers   object[]  optional  
id   string  optional  

The id of an existing record in the modifiers table.

hcpcs   object[]  optional  
id   string  optional  
cpt   object[]  optional  
id   string  optional  

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/request-type-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/request-type-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/request-type-sets/{requestTypeSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeSet_id   integer   

The ID of the requestTypeSet. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-type-sets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-sets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-type-sets

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show the form for creating a new resource.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-type-sets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-sets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-type-sets

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

modifiers   object[]  optional  
id   string  optional  

The id of an existing record in the modifiers table.

hcpcs   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

cpt   object[]  optional  
id   string  optional  

The id of an existing record in the procedure_codes table.

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-type-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-type-sets/{requestTypeSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeSet_id   integer   

The ID of the requestTypeSet. Example: 16

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-type-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-type-sets/{requestTypeSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeSet_id   integer   

The ID of the requestTypeSet. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

request_type_options   object[]  optional  
id   string  optional  

The id of an existing record in the request_type_options table.

modifiers   object[]  optional  
id   string  optional  

The id of an existing record in the modifiers table.

hcpcs   object[]  optional  
id   string  optional  
cpt   object[]  optional  
id   string  optional  

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-type-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-type-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-type-sets/{requestTypeSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestTypeSet_id   integer   

The ID of the requestTypeSet. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-classifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-classifications

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show the form for creating a new resource.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-classifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-classifications

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-classifications/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classifications/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-classifications/{caseClassification_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassification_id   integer   

The ID of the caseClassification. Example: 16

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-classifications/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classifications/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-classifications/{caseClassification_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassification_id   integer   

The ID of the caseClassification. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-classifications/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classifications/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-classifications/{caseClassification_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassification_id   integer   

The ID of the caseClassification. Example: 16

Display a listing of all assessment responses.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/assessment-responses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-responses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/assessment-responses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store a newly created assessment response in storage.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/assessment-responses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_id\": 16,
    \"member_id\": 16,
    \"assessment\": 16,
    \"case_id\": 16,
    \"response\": []
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-responses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_id": 16,
    "member_id": 16,
    "assessment": 16,
    "case_id": 16,
    "response": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/assessment-responses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

client_id   integer  optional  

This field is required when none of client are present. The id of an existing record in the clients table. Example: 16

client   object  optional  
member_id   integer  optional  

This field is required when none of member are present. The id of an existing record in the members table. Example: 16

member   object  optional  
assessment   integer  optional  

This field is required when none of assessment_model are present. The id of an existing record in the assessments table. Example: 16

assessment_model   object  optional  
case_id   integer  optional  

This field is required when none of case are present. The id of an existing record in the cases table. Example: 16

case   object  optional  
response   object   

Display the specified assessment response.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/assessment-responses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-responses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/assessment-responses/{assessmentResponse_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

assessmentResponse_id   integer   

The ID of the assessmentResponse. Example: 16

Update the specified assessment response in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/assessment-responses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-responses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

Request   

PATCH api/assessment-responses/{assessmentResponse_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

assessmentResponse_id   integer   

The ID of the assessmentResponse. Example: 16

Remove the specified assessment response from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/assessment-responses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-responses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/assessment-responses/{assessmentResponse_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

assessmentResponse_id   integer   

The ID of the assessmentResponse. Example: 16

GET api/case-classification-sets

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-classification-sets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"query\": \"architecto\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort_by\": \"architecto\",
    \"sort_direction\": \"asc\",
    \"with\": \"architecto\",
    \"with_count\": \"architecto\",
    \"with_trashed\": false,
    \"only_trashed\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "query": "architecto",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort_by": "architecto",
    "sort_direction": "asc",
    "with": "architecto",
    "with_count": "architecto",
    "with_trashed": false,
    "only_trashed": false
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-classification-sets

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string  optional  

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

query   string  optional  

Example: architecto

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

sort_by   string  optional  

Example: architecto

sort_direction   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
with   string  optional  

Example: architecto

with_count   string  optional  

Example: architecto

with_trashed   boolean  optional  

Example: false

only_trashed   boolean  optional  

Example: false

case_classifications   object[]  optional  
id   string  optional  

The id of an existing record in the case_classifications table.

POST api/case-classification-sets

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-classification-sets

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

case_classifications   object[]  optional  
id   string  optional  

The id of an existing record in the case_classifications table.

GET api/case-classification-sets/{caseClassificationSet_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-classification-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-classification-sets/{caseClassificationSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassificationSet_id   integer   

The ID of the caseClassificationSet. Example: 16

PATCH api/case-classification-sets/{caseClassificationSet_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-classification-sets/{caseClassificationSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassificationSet_id   integer   

The ID of the caseClassificationSet. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

case_classifications   object[]  optional  
id   string  optional  

The id of an existing record in the case_classifications table.

DELETE api/case-classification-sets/{caseClassificationSet_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-classification-sets/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-classification-sets/{caseClassificationSet_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassificationSet_id   integer   

The ID of the caseClassificationSet. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-class-relationship" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-class-relationship

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/case-class-relationship

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"request_type\": {
        \"id\": 16
    },
    \"request_type_set\": {
        \"id\": 16
    },
    \"case_classification_set\": {
        \"id\": 16
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "request_type": {
        "id": 16
    },
    "request_type_set": {
        "id": 16
    },
    "case_classification_set": {
        "id": 16
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-class-relationship

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

request_type   object  optional  
id   integer   

The id of an existing record in the request_types table. Example: 16

request_type_set   object  optional  
id   integer   

The id of an existing record in the request_type_sets table. Example: 16

case_classification_set   object  optional  
id   integer   

The id of an existing record in the case_class_sets table. Example: 16

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-class-relationship/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-class-relationship/{caseClassRelationship_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassRelationship_id   integer   

The ID of the caseClassRelationship. Example: 16

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"request_type\": {
        \"id\": 16
    },
    \"request_type_set\": {
        \"id\": 16
    },
    \"case_classification_set\": {
        \"id\": 16
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "request_type": {
        "id": 16
    },
    "request_type_set": {
        "id": 16
    },
    "case_classification_set": {
        "id": 16
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-class-relationship/{caseClassRelationship_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassRelationship_id   integer   

The ID of the caseClassRelationship. Example: 16

Body Parameters

request_type   object  optional  
id   integer   

The id of an existing record in the request_types table. Example: 16

request_type_set   object  optional  
id   integer   

The id of an existing record in the request_type_sets table. Example: 16

case_classification_set   object  optional  
id   integer   

The id of an existing record in the case_class_sets table. Example: 16

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-class-relationship/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-class-relationship/{caseClassRelationship_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseClassRelationship_id   integer   

The ID of the caseClassRelationship. Example: 16

GET api/documents

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/documents

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "user_id=16"\
    --form "document_label=architecto"\
    --form "title=architecto"\
    --form "description=Eius et animi quos velit et."\
    --form "document_type=architecto"\
    --form "state=ng"\
    --form "expiration_date=2026-09-25T08:45:11"\
    --form "completion_date=2022-10-19"\
    --form "signature_files=architecto"\
    --form "certification_type=architecto"\
    --form "documentable_type=User"\
    --form "documentable_id=16"\
    --form "file=@/tmp/php961ppdmqrt032J8YnKp" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('user_id', '16');
body.append('document_label', 'architecto');
body.append('title', 'architecto');
body.append('description', 'Eius et animi quos velit et.');
body.append('document_type', 'architecto');
body.append('state', 'ng');
body.append('expiration_date', '2026-09-25T08:45:11');
body.append('completion_date', '2022-10-19');
body.append('signature_files', 'architecto');
body.append('certification_type', 'architecto');
body.append('documentable_type', 'User');
body.append('documentable_id', '16');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request   

POST api/documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

file   file   

Must be a file. Must not be greater than 8192 kilobytes. Example: /tmp/php961ppdmqrt032J8YnKp

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

document_label   string  optional  

Example: architecto

title   string  optional  

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

document_type   string  optional  

Example: architecto

state   string  optional  

Must be 2 characters. Example: ng

expiration_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

completion_date   string  optional  

Must be a valid date. Must be a date before or equal to today. Example: 2022-10-19

signature_files   string  optional  

Example: architecto

certification_type   string  optional  

Example: architecto

documentable_type   string  optional  

Example: User

Must be one of:
  • CaseMdl
  • Client
  • License
  • Malpractice
  • User
documentable_id   integer  optional  

Example: 16

GET api/documents/download/{document_id}/{filename}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/documents/download/16/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/documents/download/16/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/documents/download/{document_id}/{filename}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

document_id   integer   

The ID of the document. Example: 16

filename   string   

Example: architecto

GET api/documents/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/documents/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/documents/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/documents/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the document. Example: 16

Get change request history for a specific document.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/documents/16/change-history" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/documents/16/change-history"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/documents/{document_id}/change-history

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

document_id   integer   

The ID of the document. Example: 16

PATCH api/documents/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/documents/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "document_label=architecto"\
    --form "document_type=architecto"\
    --form "state=ngzmiy"\
    --form "expiration_date=2026-09-25T08:45:11"\
    --form "completion_date=2022-10-19"\
    --form "signature_files=architecto"\
    --form "certification_type=architecto"\
    --form "title=architecto"\
    --form "description=Eius et animi quos velit et."\
    --form "documentable_type=Client"\
    --form "documentable_id=16"\
    --form "file=@/tmp/php5r3r1oq1jd0lbWJeCV0" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/documents/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('document_label', 'architecto');
body.append('document_type', 'architecto');
body.append('state', 'ngzmiy');
body.append('expiration_date', '2026-09-25T08:45:11');
body.append('completion_date', '2022-10-19');
body.append('signature_files', 'architecto');
body.append('certification_type', 'architecto');
body.append('title', 'architecto');
body.append('description', 'Eius et animi quos velit et.');
body.append('documentable_type', 'Client');
body.append('documentable_id', '16');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "PATCH",
    headers,
    body,
}).then(response => response.json());

Request   

PATCH api/documents/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the document. Example: 16

Body Parameters

document_label   string  optional  

Example: architecto

document_type   string  optional  

Example: architecto

state   string  optional  

Must not be greater than 10 characters. Example: ngzmiy

expiration_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

completion_date   string  optional  

Must be a valid date. Must be a date before or equal to today. Example: 2022-10-19

signature_files   string  optional  

Example: architecto

certification_type   string  optional  

Example: architecto

file   file  optional  

Must be a file. Must not be greater than 8192 kilobytes. Example: /tmp/php5r3r1oq1jd0lbWJeCV0

title   string  optional  

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

documentable_type   string  optional  

Example: Client

Must be one of:
  • CaseMdl
  • Client
  • License
  • Malpractice
  • User
documentable_id   integer  optional  

Example: 16

DELETE api/documents/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/documents/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/documents/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/documents/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the document. Example: 16

Get map data for a specific address.

requires authentication

GET /api/google-maps/map-data?address=...

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/google-maps/map-data" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"address\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/google-maps/map-data"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "address": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/google-maps/map-data

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

address   string   

Example: architecto

Get locations info based on addresses.

requires authentication

POST /api/google-maps/locations/addresses

Expected JSON: { "origin": "123 Main St, Anytown, USA", "locations": [ "456 Oak St, Othertown, USA", "789 Pine St, Thistown, USA" ], "sort_by": "distance" // optional, or "drive_time" }

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/google-maps/locations/addresses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"origin\": \"architecto\",
    \"locations\": [
        \"architecto\"
    ],
    \"sort_by\": \"distance\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/google-maps/locations/addresses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "origin": "architecto",
    "locations": [
        "architecto"
    ],
    "sort_by": "distance"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/google-maps/locations/addresses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

origin   string   

Example: architecto

locations   string[]   
sort_by   string  optional  

Example: distance

Must be one of:
  • distance
  • drive_time

Get locations info based on coordinates.

requires authentication

POST /api/google-maps/locations/coordinates

Expected JSON: { "origin": {"lat": 37.421, "lng": -122.083}, "locations": [ {"lat": 37.422, "lng": -122.084}, {"lat": 37.423, "lng": -122.085} ], "sort_by": "drive_time" // optional, or "distance" }

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/google-maps/locations/coordinates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"origin\": {
        \"lat\": 4326.41688,
        \"lng\": 4326.41688
    },
    \"locations\": [
        {
            \"lat\": 4326.41688,
            \"lng\": 4326.41688
        }
    ],
    \"sort_by\": \"distance\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/google-maps/locations/coordinates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "origin": {
        "lat": 4326.41688,
        "lng": 4326.41688
    },
    "locations": [
        {
            "lat": 4326.41688,
            "lng": 4326.41688
        }
    ],
    "sort_by": "distance"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/google-maps/locations/coordinates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

origin   object   
lat   number   

Example: 4326.41688

lng   number   

Example: 4326.41688

locations   object[]   

Must have at least 1 items.

lat   number   

Example: 4326.41688

lng   number   

Example: 4326.41688

sort_by   string  optional  

Example: distance

Must be one of:
  • distance
  • drive_time

Validate and "correct" an address.

requires authentication

This endpoint accepts a user‑provided address and returns:

Endpoint: GET /api/google-maps/correct-address?address=...

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/google-maps/correct-address" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"address\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/google-maps/correct-address"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "address": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/google-maps/correct-address

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

address   string   

Example: architecto

POST api/cases/gryphon-activities/{caseModel_id}

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"visibility\": \"private\",
    \"priority\": \"urgent\",
    \"message\": \"architecto\",
    \"user\": {
        \"id\": 16
    },
    \"parent\": {
        \"id\": 16
    },
    \"watcher_ids\": [
        16
    ],
    \"watchers\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "visibility": "private",
    "priority": "urgent",
    "message": "architecto",
    "user": {
        "id": 16
    },
    "parent": {
        "id": 16
    },
    "watcher_ids": [
        16
    ],
    "watchers": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/cases/gryphon-activities/{caseModel_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

Body Parameters

visibility   string   

Example: private

Must be one of:
  • public
  • internal
  • private
  • financial
priority   string   

Example: urgent

Must be one of:
  • low
  • medium
  • high
  • urgent
message   string   

Example: architecto

user   object  optional  
id   integer  optional  

The id of an existing record in the users table. Example: 16

parent   object  optional  
id   integer  optional  

The id of an existing record in the gryphon_activities table. Example: 16

watchers   object[]  optional  
id   integer   

The id of an existing record in the users table. Example: 16

watcher_ids   integer[]   

The id of an existing record in the users table.

GET api/cases/gryphon-activities/{caseModel_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/cases/gryphon-activities/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"architecto\",
    \"start_date\": \"2026-09-25T08:45:11\",
    \"end_date\": \"2026-09-25T08:45:11\",
    \"created_at\": \"2026-09-25T08:45:11\",
    \"activity_type\": \"architecto\",
    \"priority\": \"architecto\",
    \"visibility\": \"architecto\",
    \"user_id\": 16,
    \"parent_id\": 16,
    \"updated_at\": \"2026-09-25T08:45:11\",
    \"page\": 22,
    \"per_page\": 7,
    \"limit\": 16,
    \"offset\": 77,
    \"sort\": \"architecto\",
    \"order\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/gryphon-activities/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "architecto",
    "start_date": "2026-09-25T08:45:11",
    "end_date": "2026-09-25T08:45:11",
    "created_at": "2026-09-25T08:45:11",
    "activity_type": "architecto",
    "priority": "architecto",
    "visibility": "architecto",
    "user_id": 16,
    "parent_id": 16,
    "updated_at": "2026-09-25T08:45:11",
    "page": 22,
    "per_page": 7,
    "limit": 16,
    "offset": 77,
    "sort": "architecto",
    "order": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/cases/gryphon-activities/{caseModel_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

Body Parameters

search   string  optional  

Example: architecto

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

end_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

created_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

activity_type   string  optional  

Example: architecto

priority   string  optional  

Example: architecto

visibility   string  optional  

Example: architecto

user_id   integer  optional  

Example: 16

parent_id   integer  optional  

Example: 16

updated_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

page   integer  optional  

Must be at least 1. Example: 22

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 16

offset   integer  optional  

Must be at least 0. Example: 77

sort   string  optional  

Example: architecto

order   string  optional  

Example: architecto

people   string  optional  

GET api/cases

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/cases" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filters\": {
        \"logic\": \"OR\"
    },
    \"query\": \"b\",
    \"client_id\": 16,
    \"member_id\": 16,
    \"member\": {
        \"name\": \"n\"
    },
    \"tag\": [],
    \"due_date\": \"2026-09-25T08:45:11\",
    \"received_date_start\": \"2026-09-25T08:45:11\",
    \"received_date_end\": \"2026-09-25T08:45:11\",
    \"due_date_start\": \"2026-09-25T08:45:11\",
    \"due_date_end\": \"2026-09-25T08:45:11\",
    \"appointment_scheduled_start\": \"2026-09-25T08:45:11\",
    \"appointment_scheduled_end\": \"2052-10-18\",
    \"safety_flag\": \"n\",
    \"member_address\": \"g\",
    \"date_range\": [
        \"2026-09-25T08:45:11\"
    ],
    \"page\": 66,
    \"per_page\": 17,
    \"limit\": 15,
    \"offset\": 76,
    \"sort\": \"architecto\",
    \"order\": \"architecto\",
    \"status\": \"on_hold\",
    \"search_by_tag\": \"n\",
    \"request_types\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "filters": {
        "logic": "OR"
    },
    "query": "b",
    "client_id": 16,
    "member_id": 16,
    "member": {
        "name": "n"
    },
    "tag": [],
    "due_date": "2026-09-25T08:45:11",
    "received_date_start": "2026-09-25T08:45:11",
    "received_date_end": "2026-09-25T08:45:11",
    "due_date_start": "2026-09-25T08:45:11",
    "due_date_end": "2026-09-25T08:45:11",
    "appointment_scheduled_start": "2026-09-25T08:45:11",
    "appointment_scheduled_end": "2052-10-18",
    "safety_flag": "n",
    "member_address": "g",
    "date_range": [
        "2026-09-25T08:45:11"
    ],
    "page": 66,
    "per_page": 17,
    "limit": 15,
    "offset": 76,
    "sort": "architecto",
    "order": "architecto",
    "status": "on_hold",
    "search_by_tag": "n",
    "request_types": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/cases

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

filters   object  optional  
logic   string  optional  

This field is required when filters is present. Example: OR

Must be one of:
  • AND
  • OR
conditions   object  optional  

This field is required when filters is present. Must have at least 1 items.

query   string  optional  

Must not be greater than 255 characters. Example: b

request_types   object[]  optional  
id   integer  optional  

The id of an existing record in the request_types table. Example: 16

client_id   integer  optional  

Example: 16

member_id   integer  optional  

Example: 16

member   object  optional  
name   string  optional  

Must not be greater than 255 characters. Example: n

assigned_to   string  optional  

The id of an existing record in the users table.

created_by   string  optional  

The id of an existing record in the users table.

updated_by   string  optional  

The id of an existing record in the users table.

tag_string   string  optional  

The name of an existing record in the tags table.

tag   object  optional  
id   string  optional  

The id of an existing record in the tags table.

due_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

received_date_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

received_date_end   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

due_date_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

due_date_end   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

appointment_scheduled_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

appointment_scheduled_end   string  optional  

Must be a valid date. Must be a date after or equal to appointment_scheduled_start. Example: 2052-10-18

safety_flag   string  optional  

Must not be greater than 255 characters. Example: n

reviewer   string  optional  

The id of an existing record in the users table.

assessor   string  optional  

The id of an existing record in the users table.

member_address   string  optional  

Must not be greater than 255 characters. Example: g

date_range   string[]  optional  

Must be a valid date.

page   integer  optional  

Must be at least 1. Example: 66

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 17

limit   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 15

offset   integer  optional  

Must be at least 0. Example: 76

sort   string  optional  

Example: architecto

order   string  optional  

Example: architecto

status   string  optional  

Example: on_hold

Must be one of:
  • open
  • closed
  • pending
  • in_progress
  • draft
  • submitted
  • received
  • assigned
  • scheduled
  • assessing
  • reviewing
  • completed
  • on_hold
  • cancelled
  • paused
search_by_tag   string  optional  

Must not be greater than 255 characters. Example: n

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filters\": {
        \"logic\": \"AND\"
    },
    \"query\": \"b\",
    \"client_id\": 16,
    \"member_id\": 16,
    \"member\": {
        \"name\": \"n\"
    },
    \"tag\": [],
    \"due_date\": \"2026-09-25T08:45:11\",
    \"received_date_start\": \"2026-09-25T08:45:11\",
    \"received_date_end\": \"2026-09-25T08:45:11\",
    \"due_date_start\": \"2026-09-25T08:45:11\",
    \"due_date_end\": \"2026-09-25T08:45:11\",
    \"appointment_scheduled_start\": \"2026-09-25T08:45:11\",
    \"appointment_scheduled_end\": \"2052-10-18\",
    \"safety_flag\": \"n\",
    \"member_address\": \"g\",
    \"date_range\": [
        \"2026-09-25T08:45:11\"
    ],
    \"page\": 66,
    \"per_page\": 17,
    \"limit\": 15,
    \"offset\": 76,
    \"sort\": \"architecto\",
    \"order\": \"architecto\",
    \"status\": \"assigned\",
    \"search_by_tag\": \"n\",
    \"request_types\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "filters": {
        "logic": "AND"
    },
    "query": "b",
    "client_id": 16,
    "member_id": 16,
    "member": {
        "name": "n"
    },
    "tag": [],
    "due_date": "2026-09-25T08:45:11",
    "received_date_start": "2026-09-25T08:45:11",
    "received_date_end": "2026-09-25T08:45:11",
    "due_date_start": "2026-09-25T08:45:11",
    "due_date_end": "2026-09-25T08:45:11",
    "appointment_scheduled_start": "2026-09-25T08:45:11",
    "appointment_scheduled_end": "2052-10-18",
    "safety_flag": "n",
    "member_address": "g",
    "date_range": [
        "2026-09-25T08:45:11"
    ],
    "page": 66,
    "per_page": 17,
    "limit": 15,
    "offset": 76,
    "sort": "architecto",
    "order": "architecto",
    "status": "assigned",
    "search_by_tag": "n",
    "request_types": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Export cases to CSV.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filters\": {
        \"logic\": \"OR\"
    },
    \"query\": \"b\",
    \"client_id\": 16,
    \"member_id\": 16,
    \"member\": {
        \"name\": \"n\"
    },
    \"tag\": [],
    \"due_date\": \"2026-09-25T08:45:11\",
    \"received_date_start\": \"2026-09-25T08:45:11\",
    \"received_date_end\": \"2026-09-25T08:45:11\",
    \"due_date_start\": \"2026-09-25T08:45:11\",
    \"due_date_end\": \"2026-09-25T08:45:11\",
    \"safety_flag\": \"g\",
    \"member_address\": \"z\",
    \"status\": \"draft\",
    \"sort_by\": \"m\",
    \"sort_order\": \"asc\",
    \"fields\": [
        \"i\"
    ],
    \"field_order\": [
        \"y\"
    ],
    \"request_types\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "filters": {
        "logic": "OR"
    },
    "query": "b",
    "client_id": 16,
    "member_id": 16,
    "member": {
        "name": "n"
    },
    "tag": [],
    "due_date": "2026-09-25T08:45:11",
    "received_date_start": "2026-09-25T08:45:11",
    "received_date_end": "2026-09-25T08:45:11",
    "due_date_start": "2026-09-25T08:45:11",
    "due_date_end": "2026-09-25T08:45:11",
    "safety_flag": "g",
    "member_address": "z",
    "status": "draft",
    "sort_by": "m",
    "sort_order": "asc",
    "fields": [
        "i"
    ],
    "field_order": [
        "y"
    ],
    "request_types": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/cases/export

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

filters   object  optional  
logic   string  optional  

This field is required when filters is present. Example: OR

Must be one of:
  • AND
  • OR
conditions   object  optional  

This field is required when filters is present. Must have at least 1 items.

query   string  optional  

Must not be greater than 255 characters. Example: b

request_types   object[]  optional  
id   integer  optional  

The id of an existing record in the request_types table. Example: 16

client_id   integer  optional  

Example: 16

member_id   integer  optional  

Example: 16

member   object  optional  
name   string  optional  

Must not be greater than 255 characters. Example: n

assigned_to   string  optional  

The id of an existing record in the users table.

created_by   string  optional  

The id of an existing record in the users table.

updated_by   string  optional  

The id of an existing record in the users table.

tag_string   string  optional  

The name of an existing record in the tags table.

tag   object  optional  
id   string  optional  

The id of an existing record in the tags table.

due_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

received_date_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

received_date_end   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

due_date_start   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

due_date_end   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

safety_flag   string  optional  

Must not be greater than 255 characters. Example: g

reviewer   string  optional  

The id of an existing record in the users table.

assessor   string  optional  

The id of an existing record in the users table.

member_address   string  optional  

Must not be greater than 255 characters. Example: z

status   string  optional  

Example: draft

Must be one of:
  • draft
  • submitted
  • received
  • assigned
  • scheduled
  • assessing
  • reviewing
  • completed
  • on_hold
  • cancelled
  • paused
sort_by   string  optional  

Must not be greater than 255 characters. Example: m

sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
fields   string[]  optional  

Must not be greater than 255 characters.

field_order   string[]  optional  

Must not be greater than 255 characters.

POST api/cases

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"unique_id\": \"b\",
    \"client_id\": 16,
    \"member_id\": 16,
    \"line_of_business_id\": 16,
    \"case_class_id\": 16,
    \"due_date\": \"2026-09-25T08:45:11\",
    \"status\": \"paused\",
    \"is_appeal\": true,
    \"request_types\": [
        {
            \"id\": 16,
            \"outcome\": \"modified_down\",
            \"outcome_modifier\": \"modified_down\"
        }
    ],
    \"diagnostic_codes\": [
        {
            \"id\": 16
        }
    ],
    \"documents\": [
        {
            \"id\": 16,
            \"description\": \"Et animi quos velit et fugiat.\",
            \"title\": \"d\"
        }
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "unique_id": "b",
    "client_id": 16,
    "member_id": 16,
    "line_of_business_id": 16,
    "case_class_id": 16,
    "due_date": "2026-09-25T08:45:11",
    "status": "paused",
    "is_appeal": true,
    "request_types": [
        {
            "id": 16,
            "outcome": "modified_down",
            "outcome_modifier": "modified_down"
        }
    ],
    "diagnostic_codes": [
        {
            "id": 16
        }
    ],
    "documents": [
        {
            "id": 16,
            "description": "Et animi quos velit et fugiat.",
            "title": "d"
        }
    ],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/cases

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

unique_id   string   

Must match the regex /^[a-zA-Z0-9-_.]+$/. Must not be greater than 255 characters. Example: b

request_types   object[]  optional  
id   integer   

The id of an existing record in the request_types table. Example: 16

outcome   string  optional  

Example: modified_down

Must be one of:
  • recommended
  • not_recommended
  • modified_up
  • modified_down
outcome_modifier   string  optional  

Example: modified_down

Must be one of:
  • modified_up
  • modified_down
client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

member_id   integer  optional  

The id of an existing record in the members table. Example: 16

line_of_business_id   integer  optional  

The id of an existing record in the lines_of_businesses table. Example: 16

case_class_id   integer  optional  

The id of an existing record in the case_classifications table. Example: 16

diagnostic_codes   object[]  optional  
id   integer  optional  

The id of an existing record in the diagnostic_codes table. Example: 16

due_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

status   string  optional  

Example: paused

Must be one of:
  • draft
  • submitted
  • received
  • assigned
  • scheduled
  • assessing
  • reviewing
  • completed
  • on_hold
  • cancelled
  • paused
tags   object[]  optional  
id   integer  optional  

The id of an existing record in the tags table. Example: 16

is_appeal   boolean  optional  

Example: true

documents   object[]  optional  
id   integer  optional  

The id of an existing record in the documents table. Example: 16

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

title   string  optional  

Must not be greater than 255 characters. Example: d

GET api/cases/{caseModel_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/cases/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/cases/{caseModel_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

PATCH api/cases/{caseModel_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/cases/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"unique_id\": \"b\",
    \"client_id\": 16,
    \"member_id\": 16,
    \"line_of_business_id\": 16,
    \"case_class_id\": 16,
    \"due_date\": \"2026-09-25T08:45:11\",
    \"status\": \"completed\",
    \"is_appeal\": false,
    \"request_types\": [
        {
            \"id\": 16,
            \"outcome\": \"not_recommended\",
            \"outcome_modifier\": \"modified_up\"
        }
    ],
    \"diagnostic_codes\": [
        {
            \"id\": 16
        }
    ],
    \"documents\": [
        {
            \"id\": 16,
            \"description\": \"Et animi quos velit et fugiat.\",
            \"title\": \"d\"
        }
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "unique_id": "b",
    "client_id": 16,
    "member_id": 16,
    "line_of_business_id": 16,
    "case_class_id": 16,
    "due_date": "2026-09-25T08:45:11",
    "status": "completed",
    "is_appeal": false,
    "request_types": [
        {
            "id": 16,
            "outcome": "not_recommended",
            "outcome_modifier": "modified_up"
        }
    ],
    "diagnostic_codes": [
        {
            "id": 16
        }
    ],
    "documents": [
        {
            "id": 16,
            "description": "Et animi quos velit et fugiat.",
            "title": "d"
        }
    ],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/cases/{caseModel_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

Body Parameters

unique_id   string  optional  

Must match the regex /^[a-zA-Z0-9-_.]+$/. Must not be greater than 255 characters. Example: b

request_types   object[]  optional  
id   integer   

The id of an existing record in the request_types table. Example: 16

outcome   string  optional  

Example: not_recommended

Must be one of:
  • recommended
  • not_recommended
  • modified_up
  • modified_down
outcome_modifier   string  optional  

Example: modified_up

Must be one of:
  • modified_up
  • modified_down
client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

member_id   integer  optional  

The id of an existing record in the members table. Example: 16

line_of_business_id   integer  optional  

The id of an existing record in the lines_of_businesses table. Example: 16

case_class_id   integer  optional  

The id of an existing record in the case_classifications table. Example: 16

diagnostic_codes   object[]  optional  
id   integer  optional  

The id of an existing record in the diagnostic_codes table. Example: 16

due_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

status   string  optional  

Example: completed

Must be one of:
  • draft
  • submitted
  • received
  • assigned
  • scheduled
  • assessing
  • reviewing
  • completed
  • on_hold
  • cancelled
  • paused
tags   object[]  optional  
id   integer  optional  

The id of an existing record in the tags table. Example: 16

is_appeal   boolean  optional  

Example: false

documents   object[]  optional  
id   integer  optional  

The id of an existing record in the documents table. Example: 16

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

title   string  optional  

Must not be greater than 255 characters. Example: d

GRY-3867 — POST /api/cases/{caseModel}/reopen

requires authentication

A dedicated action rather than a status field on PATCH: the caller does not supply the target status (it is restored from the case) and must supply the sync-or-direct choice, so the generic update contract cannot express it.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases/16/reopen" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data_entry_mode\": \"direct\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16/reopen"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "data_entry_mode": "direct"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/cases/{caseModel_id}/reopen

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

Body Parameters

data_entry_mode   string   

Example: direct

Must be one of:
  • sync
  • direct

POST /api/cases/{caseModel}/member-data-override

requires authentication

The one-time high-access correction of a closed case's frozen member data (Members decision doc "Member Data Updates & Case Records").

Its own action rather than a branch of PATCH /cases/{id}, for two reasons that both matter: the generic update is authorized by update:cases plus assignment, which is a far wider audience than the decision doc grants this; and it is spendable — a correction that can only happen once should not share a route with edits that happen freely.

member_update_suggested / member_update_diff ride alongside the case rather than inside it: they describe THIS correction, not the case's state, and re-reading the case would not reproduce them.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases/16/member-data-override" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_member_id\": \"b\",
    \"language\": \"Chinese\",
    \"assessment_address\": {
        \"address_id\": 16
    },
    \"phones\": [
        {
            \"number\": \"n\",
            \"type\": \"g\",
            \"is_primary\": false
        }
    ],
    \"addresses\": [
        {
            \"address_id\": 16,
            \"type\": \"n\",
            \"is_primary\": true
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16/member-data-override"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_member_id": "b",
    "language": "Chinese",
    "assessment_address": {
        "address_id": 16
    },
    "phones": [
        {
            "number": "n",
            "type": "g",
            "is_primary": false
        }
    ],
    "addresses": [
        {
            "address_id": 16,
            "type": "n",
            "is_primary": true
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/cases/{caseModel_id}/member-data-override

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

Body Parameters

client_member_id   string   

Must not be greater than 255 characters. Example: b

language   string   

Example: Chinese

Must be one of:
  • English
  • Spanish
  • French
  • German
  • Italian
  • Portuguese
  • Dutch
  • Russian
  • Japanese
  • Chinese
  • Mandarin
  • Korean
  • Arabic
  • Hindi
  • Bengali
  • Punjabi
  • Urdu
  • Turkish
  • Vietnamese
  • Thai
  • Indonesian
  • Filipino
  • Malay
  • Swahili
  • Amharic
  • Somali
  • Yoruba
  • Igbo
  • Hausa
  • Zulu
  • Xhosa
  • Afrikaans
  • American Sign Language
  • Other
phones   object[]  optional  

Must have at least 1 items.

number   string   

Must not be greater than 255 characters. Example: n

type   string  optional  

Must not be greater than 255 characters. Example: g

is_primary   boolean  optional  

Example: false

addresses   object[]  optional  

Must have at least 1 items.

address_id   integer  optional  

The address_id of an existing record in the address_member table. The id of an existing record in the addresses table. Example: 16

address   object  optional  
type   string  optional  

Must not be greater than 255 characters. Example: n

is_primary   boolean  optional  

Example: true

assessment_address   object  optional  
address_id   integer  optional  

The address_id of an existing record in the address_member table. The id of an existing record in the addresses table. Example: 16

address   object  optional  

DELETE api/cases/{caseModel_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/cases/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/cases/{caseModel_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

POST api/cases/{caseModel_id}/documents

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases/16/documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"unique_id\": \"b\",
    \"client_id\": 16,
    \"member_id\": 16,
    \"line_of_business_id\": 16,
    \"case_class_id\": 16,
    \"due_date\": \"2026-09-25T08:45:11\",
    \"status\": \"completed\",
    \"is_appeal\": false,
    \"request_types\": [
        {
            \"id\": 16,
            \"outcome\": \"not_recommended\",
            \"outcome_modifier\": \"modified_down\"
        }
    ],
    \"diagnostic_codes\": [
        {
            \"id\": 16
        }
    ],
    \"documents\": [
        {
            \"id\": 16,
            \"description\": \"Et animi quos velit et fugiat.\",
            \"title\": \"d\"
        }
    ],
    \"tags\": [
        {
            \"id\": 16
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16/documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "unique_id": "b",
    "client_id": 16,
    "member_id": 16,
    "line_of_business_id": 16,
    "case_class_id": 16,
    "due_date": "2026-09-25T08:45:11",
    "status": "completed",
    "is_appeal": false,
    "request_types": [
        {
            "id": 16,
            "outcome": "not_recommended",
            "outcome_modifier": "modified_down"
        }
    ],
    "diagnostic_codes": [
        {
            "id": 16
        }
    ],
    "documents": [
        {
            "id": 16,
            "description": "Et animi quos velit et fugiat.",
            "title": "d"
        }
    ],
    "tags": [
        {
            "id": 16
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/cases/{caseModel_id}/documents

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

Body Parameters

unique_id   string  optional  

Must match the regex /^[a-zA-Z0-9-_.]+$/. Must not be greater than 255 characters. Example: b

request_types   object[]  optional  
id   integer   

The id of an existing record in the request_types table. Example: 16

outcome   string  optional  

Example: not_recommended

Must be one of:
  • recommended
  • not_recommended
  • modified_up
  • modified_down
outcome_modifier   string  optional  

Example: modified_down

Must be one of:
  • modified_up
  • modified_down
client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

member_id   integer  optional  

The id of an existing record in the members table. Example: 16

line_of_business_id   integer  optional  

The id of an existing record in the lines_of_businesses table. Example: 16

case_class_id   integer  optional  

The id of an existing record in the case_classifications table. Example: 16

diagnostic_codes   object[]  optional  
id   integer  optional  

The id of an existing record in the diagnostic_codes table. Example: 16

due_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

status   string  optional  

Example: completed

Must be one of:
  • draft
  • submitted
  • received
  • assigned
  • scheduled
  • assessing
  • reviewing
  • completed
  • on_hold
  • cancelled
  • paused
tags   object[]  optional  
id   integer  optional  

The id of an existing record in the tags table. Example: 16

is_appeal   boolean  optional  

Example: false

documents   object[]  optional  
id   integer  optional  

The id of an existing record in the documents table. Example: 16

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

title   string  optional  

Must not be greater than 255 characters. Example: d

DELETE api/cases/{caseModel_id}/documents/{document_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/cases/16/documents/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16/documents/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/cases/{caseModel_id}/documents/{document_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseModel_id   integer   

The ID of the caseModel. Example: 16

document_id   integer   

The ID of the document. Example: 16

GET api/requests/{requestMdl_id}/considerations

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/requests/16/considerations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/requests/{requestMdl_id}/considerations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestMdl_id   integer   

The ID of the requestMdl. Example: 16

POST api/requests/{requestMdl_id}/considerations

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"b\",
    \"category\": \"n\",
    \"note\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "b",
    "category": "n",
    "note": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/requests/{requestMdl_id}/considerations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestMdl_id   integer   

The ID of the requestMdl. Example: 16

Body Parameters

type   string  optional  

Must not be greater than 64 characters. Example: b

category   string  optional  

Must not be greater than 64 characters. Example: n

note   string  optional  

Example: architecto

GET api/requests/{requestMdl_id}/considerations/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/requests/16/considerations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/requests/{requestMdl_id}/considerations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestMdl_id   integer   

The ID of the requestMdl. Example: 16

id   integer   

The ID of the consideration. Example: 16

PUT api/requests/{requestMdl_id}/considerations/{id}

requires authentication

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"b\",
    \"category\": \"n\",
    \"note\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "b",
    "category": "n",
    "note": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/requests/{requestMdl_id}/considerations/{id}

PATCH api/requests/{requestMdl_id}/considerations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestMdl_id   integer   

The ID of the requestMdl. Example: 16

id   integer   

The ID of the consideration. Example: 16

Body Parameters

type   string  optional  

Must not be greater than 64 characters. Example: b

category   string  optional  

Must not be greater than 64 characters. Example: n

note   string  optional  

Example: architecto

DELETE api/requests/{requestMdl_id}/considerations/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/requests/16/considerations/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/requests/{requestMdl_id}/considerations/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

requestMdl_id   integer   

The ID of the requestMdl. Example: 16

id   integer   

The ID of the consideration. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinician-blackouts" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinician-blackouts

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinician-blackouts/{clinicianBlackout_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicianBlackout_id   integer   

The ID of the clinicianBlackout. Example: 16

Return all blackout dates for a specific clinician (including computed occurrences).

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/clinician/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/clinician/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinician-blackouts/clinician/{clinicianId}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicianId   string   

Example: architecto

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"clinician_id\": \"architecto\",
    \"start_date\": \"2026-09-25T08:45:11\",
    \"start_time\": \"08:45\",
    \"end_date\": \"2052-10-18\",
    \"end_time\": \"08:45\",
    \"is_recurring\": \"0\",
    \"recurrence_details\": {
        \"pattern\": \"custom\",
        \"custom\": {
            \"repeat_interval_type\": \"day\",
            \"repeat_interval_difference\": 22,
            \"repeat_days\": [
                \"Thu\"
            ],
            \"repeat_dates\": [
                2
            ]
        },
        \"ending_date\": \"2026-09-25T08:45:11\",
        \"ending_ocurrences_count\": 16
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "clinician_id": "architecto",
    "start_date": "2026-09-25T08:45:11",
    "start_time": "08:45",
    "end_date": "2052-10-18",
    "end_time": "08:45",
    "is_recurring": "0",
    "recurrence_details": {
        "pattern": "custom",
        "custom": {
            "repeat_interval_type": "day",
            "repeat_interval_difference": 22,
            "repeat_days": [
                "Thu"
            ],
            "repeat_dates": [
                2
            ]
        },
        "ending_date": "2026-09-25T08:45:11",
        "ending_ocurrences_count": 16
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clinician-blackouts

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

clinician_id   string   

The id of an existing record in the users table. Example: architecto

start_date   string   

Must be a valid date. Example: 2026-09-25T08:45:11

start_time   string  optional  

Must be a valid date in the format H:i. Example: 08:45

end_date   string   

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-10-18

end_time   string  optional  

Must be a valid date in the format H:i. Example: 08:45

is_recurring   string   

Example: 0

Must be one of:
  • 0
  • 1
recurrence_details   object  optional  
pattern   string  optional  

This field is required when is_recurring is 1. Example: custom

Must be one of:
  • daily
  • weekly_friday
  • monthly_first_friday
  • monthly_last_friday
  • custom
custom   object  optional  
repeat_interval_type   string  optional  

This field is required when recurrence_details.pattern is custom. Example: day

Must be one of:
  • day
  • week
  • month
repeat_interval_difference   integer  optional  

This field is required when recurrence_details.pattern is custom. Must be at least 1. Example: 22

repeat_days   string[]  optional  

This field is required when recurrence_details.custom.repeat_interval_type is week.

Must be one of:
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • Sun
repeat_dates   integer[]  optional  

This field is required when recurrence_details.custom.repeat_interval_type is month. Must be between 1 and 31.

ending_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

ending_ocurrences_count   integer  optional  

Example: 16

recurrence   string[]  optional  

This field is required when recurrence is custom.

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2026-09-25T08:45:11\",
    \"start_time\": \"08:45\",
    \"end_date\": \"2052-10-18\",
    \"end_time\": \"08:45\",
    \"is_recurring\": \"0\",
    \"recurrence_details\": {
        \"pattern\": \"monthly_first_friday\",
        \"custom\": {
            \"repeat_interval_type\": \"day\",
            \"repeat_interval_difference\": 16,
            \"repeat_days\": [
                \"Wed\"
            ],
            \"repeat_dates\": [
                22
            ]
        },
        \"ending_date\": \"2026-09-25T08:45:11\",
        \"ending_ocurrences_count\": 16
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "start_date": "2026-09-25T08:45:11",
    "start_time": "08:45",
    "end_date": "2052-10-18",
    "end_time": "08:45",
    "is_recurring": "0",
    "recurrence_details": {
        "pattern": "monthly_first_friday",
        "custom": {
            "repeat_interval_type": "day",
            "repeat_interval_difference": 16,
            "repeat_days": [
                "Wed"
            ],
            "repeat_dates": [
                22
            ]
        },
        "ending_date": "2026-09-25T08:45:11",
        "ending_ocurrences_count": 16
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clinician-blackouts/{clinicianBlackout_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicianBlackout_id   integer   

The ID of the clinicianBlackout. Example: 16

Body Parameters

clinician_id   string  optional  

The id of an existing record in the users table.

start_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

start_time   string  optional  

Must be a valid date in the format H:i. Example: 08:45

end_date   string  optional  

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-10-18

end_time   string  optional  

Must be a valid date in the format H:i. Example: 08:45

is_recurring   string  optional  

Example: 0

Must be one of:
  • 0
  • 1
recurrence_details   object  optional  
pattern   string  optional  

This field is required when is_recurring is 1. Example: monthly_first_friday

Must be one of:
  • daily
  • weekly_friday
  • monthly_first_friday
  • monthly_last_friday
  • custom
custom   object  optional  
repeat_interval_type   string  optional  

This field is required when recurrence_details.pattern is custom. Example: day

Must be one of:
  • day
  • week
  • month
repeat_interval_difference   integer  optional  

This field is required when recurrence_details.pattern is custom. Example: 16

repeat_days   string[]  optional  

This field is required when recurrence_details.custom.repeat_interval_type is week.

Must be one of:
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • Sun
repeat_dates   integer[]  optional  

This field is required when recurrence_details.custom.repeat_interval_type is month. Must be at least 1. Must not be greater than 31.

ending_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

ending_ocurrences_count   integer  optional  

Example: 16

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinician-blackouts/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/clinician-blackouts/{clinicianBlackout_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinicianBlackout_id   integer   

The ID of the clinicianBlackout. Example: 16

GET api/invoices

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/invoices" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoices"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/invoices

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/invoices

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/invoices" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"invoice_number\": \"architecto\",
    \"member_id\": \"architecto\",
    \"client_id\": \"architecto\",
    \"invoice_date\": \"2026-09-25T08:45:11\",
    \"due_date\": \"2052-10-18\",
    \"status\": \"sent\",
    \"created_by\": \"architecto\",
    \"sent_on\": \"2026-09-25T08:45:11\",
    \"notes\": \"architecto\",
    \"quickbooks_ref\": \"architecto\",
    \"addresses\": [
        {
            \"type\": \"billing\",
            \"line_1\": \"architecto\",
            \"line_2\": \"architecto\",
            \"city\": \"architecto\",
            \"state\": \"architecto\",
            \"zip_code\": \"architecto\",
            \"country\": \"architecto\",
            \"contact_name\": \"architecto\",
            \"contact_phone\": \"architecto\",
            \"contact_email\": \"zbailey@example.net\"
        }
    ],
    \"line_items\": [
        {
            \"case_id\": \"architecto\",
            \"line_amount\": 39,
            \"line_tax\": 84,
            \"status\": \"paid\",
            \"description\": \"Eius et animi quos velit et.\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoices"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "invoice_number": "architecto",
    "member_id": "architecto",
    "client_id": "architecto",
    "invoice_date": "2026-09-25T08:45:11",
    "due_date": "2052-10-18",
    "status": "sent",
    "created_by": "architecto",
    "sent_on": "2026-09-25T08:45:11",
    "notes": "architecto",
    "quickbooks_ref": "architecto",
    "addresses": [
        {
            "type": "billing",
            "line_1": "architecto",
            "line_2": "architecto",
            "city": "architecto",
            "state": "architecto",
            "zip_code": "architecto",
            "country": "architecto",
            "contact_name": "architecto",
            "contact_phone": "architecto",
            "contact_email": "zbailey@example.net"
        }
    ],
    "line_items": [
        {
            "case_id": "architecto",
            "line_amount": 39,
            "line_tax": 84,
            "status": "paid",
            "description": "Eius et animi quos velit et."
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/invoices

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

invoice_number   string   

Example: architecto

member_id   string   

The id of an existing record in the members table. Example: architecto

client_id   string   

The id of an existing record in the clients table. Example: architecto

invoice_date   string   

Must be a valid date. Example: 2026-09-25T08:45:11

due_date   string  optional  

Must be a valid date. Must be a date after or equal to invoice_date. Example: 2052-10-18

status   string   

Example: sent

Must be one of:
  • draft
  • sent
  • paid
  • overdue
created_by   string   

The id of an existing record in the users table. Example: architecto

sent_on   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

notes   string  optional  

Example: architecto

quickbooks_ref   string  optional  

Example: architecto

addresses   object[]   

Must have at least 1 items.

type   string   

Example: billing

Must be one of:
  • billing
  • shipping
address_id   string  optional  

The address_id of an existing record in the address_client table.

line_1   string  optional  

This field is required when addresses.*.address_id is not present. Example: architecto

line_2   string  optional  

Example: architecto

city   string  optional  

This field is required when addresses.*.address_id is not present. Example: architecto

state   string  optional  

Example: architecto

zip_code   string  optional  

Example: architecto

country   string  optional  

Example: architecto

contact_name   string  optional  

Example: architecto

contact_phone   string  optional  

Example: architecto

contact_email   string  optional  

Must be a valid email address. Example: zbailey@example.net

line_items   object[]   

Must have at least 1 items.

case_id   string   

Example: architecto

line_amount   number   

Must be at least 0. Example: 39

line_tax   number  optional  

Must be at least 0. Example: 84

status   string  optional  

Example: paid

Must be one of:
  • pending
  • billable
  • paid
  • closed
description   string  optional  

Example: Eius et animi quos velit et.

GET api/invoices/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/invoices/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoices/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/invoices/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the invoice. Example: 16

PATCH api/invoices/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/invoices/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"invoice_number\": \"architecto\",
    \"invoice_date\": \"2026-09-25T08:45:11\",
    \"due_date\": \"2052-10-18\",
    \"status\": \"overdue\",
    \"sent_on\": \"2026-09-25T08:45:11\",
    \"notes\": \"architecto\",
    \"quickbooks_ref\": \"architecto\",
    \"addresses\": [
        {
            \"type\": \"billing\",
            \"line_1\": \"architecto\",
            \"line_2\": \"architecto\",
            \"city\": \"architecto\",
            \"state\": \"architecto\",
            \"zip_code\": \"architecto\",
            \"country\": \"architecto\",
            \"contact_name\": \"architecto\",
            \"contact_phone\": \"architecto\",
            \"contact_email\": \"zbailey@example.net\"
        }
    ],
    \"line_items\": [
        {
            \"line_amount\": 8,
            \"line_tax\": 76,
            \"status\": \"billable\",
            \"description\": \"Eius et animi quos velit et.\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoices/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "invoice_number": "architecto",
    "invoice_date": "2026-09-25T08:45:11",
    "due_date": "2052-10-18",
    "status": "overdue",
    "sent_on": "2026-09-25T08:45:11",
    "notes": "architecto",
    "quickbooks_ref": "architecto",
    "addresses": [
        {
            "type": "billing",
            "line_1": "architecto",
            "line_2": "architecto",
            "city": "architecto",
            "state": "architecto",
            "zip_code": "architecto",
            "country": "architecto",
            "contact_name": "architecto",
            "contact_phone": "architecto",
            "contact_email": "zbailey@example.net"
        }
    ],
    "line_items": [
        {
            "line_amount": 8,
            "line_tax": 76,
            "status": "billable",
            "description": "Eius et animi quos velit et."
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/invoices/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the invoice. Example: 16

Body Parameters

invoice_number   string  optional  

Example: architecto

member_id   string  optional  

The id of an existing record in the members table.

client_id   string  optional  

The id of an existing record in the clients table.

invoice_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

due_date   string  optional  

Must be a valid date. Must be a date after or equal to invoice_date. Example: 2052-10-18

status   string  optional  

Example: overdue

Must be one of:
  • draft
  • sent
  • paid
  • overdue
created_by   string  optional  

The id of an existing record in the users table.

sent_on   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

notes   string  optional  

Example: architecto

quickbooks_ref   string  optional  

Example: architecto

addresses   object[]  optional  

Must have at least 1 items.

type   string  optional  

This field is required when addresses is present. Example: billing

Must be one of:
  • billing
  • shipping
address_id   string  optional  

The address_id of an existing record in the address_client table.

line_1   string  optional  

This field is required when addresses.*.address_id is not present. Example: architecto

line_2   string  optional  

Example: architecto

city   string  optional  

This field is required when addresses.*.address_id is not present. Example: architecto

state   string  optional  

Example: architecto

zip_code   string  optional  

Example: architecto

country   string  optional  

Example: architecto

contact_name   string  optional  

Example: architecto

contact_phone   string  optional  

Example: architecto

contact_email   string  optional  

Must be a valid email address. Example: zbailey@example.net

line_items   object[]  optional  

Must have at least 1 items.

case_id   string  optional  

This field is required when line_items is present.

line_amount   number  optional  

This field is required when line_items is present. Must be at least 0. Example: 8

line_tax   number  optional  

This field is required when line_items is present. Must be at least 0. Example: 76

status   string  optional  

Example: billable

Must be one of:
  • pending
  • billable
  • paid
  • closed
description   string  optional  

Example: Eius et animi quos velit et.

DELETE api/invoices/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/invoices/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoices/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/invoices/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the invoice. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-assignments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assignments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-assignments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-assignments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"case_id\": 16,
    \"case\": {
        \"id\": 16
    },
    \"assignee_type\": \"observer\",
    \"status\": \"architecto\",
    \"assignee_id\": 16,
    \"assignee\": {
        \"id\": 16
    },
    \"completed_at\": \"2026-09-25\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assignments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "case_id": 16,
    "case": {
        "id": 16
    },
    "assignee_type": "observer",
    "status": "architecto",
    "assignee_id": 16,
    "assignee": {
        "id": 16
    },
    "completed_at": "2026-09-25"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-assignments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

case_id   integer  optional  

This field is required when case.id is not present. The id of an existing record in the cases table. Example: 16

case   object  optional  
id   integer  optional  

This field is required when case_id is not present. The id of an existing record in the cases table. Example: 16

assignee_type   string   

Example: observer

Must be one of:
  • reviewer
  • approver
  • observer
  • clinician
  • assessor
  • consultant
  • case_manager
status   string  optional  

Example: architecto

assignee_id   integer  optional  

This field is required when assignee.id is not present. The id of an existing record in the users table. Example: 16

assignee   object  optional  
id   integer  optional  

This field is required when assignee_id is not present. The id of an existing record in the users table. Example: 16

completed_at   string  optional  

Must be a valid date in the format Y-m-d. Example: 2026-09-25

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-assignments/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assignments/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Display the count of case assignments.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-assignments/mine" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assignments/mine"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-assignments/mine

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-assignments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assignments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-assignments/{caseAssignment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssignment_id   integer   

The ID of the caseAssignment. Example: 16

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-assignments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assignee_type\": \"observer\",
    \"status\": \"architecto\",
    \"assignee_id\": 16,
    \"assignee\": {
        \"id\": 16
    },
    \"completed_at\": \"2026-09-25\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assignments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assignee_type": "observer",
    "status": "architecto",
    "assignee_id": 16,
    "assignee": {
        "id": 16
    },
    "completed_at": "2026-09-25"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-assignments/{caseAssignment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssignment_id   integer   

The ID of the caseAssignment. Example: 16

Body Parameters

assignee_type   string   

Example: observer

Must be one of:
  • reviewer
  • approver
  • observer
  • clinician
  • assessor
  • consultant
  • case_manager
status   string  optional  

Example: architecto

assignee_id   integer  optional  

The id of an existing record in the users table. Example: 16

assignee   object  optional  
id   integer  optional  

The id of an existing record in the users table. Example: 16

completed_at   string  optional  

Must be a valid date in the format Y-m-d. Example: 2026-09-25

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-assignments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assignments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-assignments/{caseAssignment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssignment_id   integer   

The ID of the caseAssignment. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-appointments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-appointments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-appointments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show by case ID.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-appointments/case/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-appointments/case/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-appointments/case/{case_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

case_id   integer   

The ID of the case. Example: 16

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-appointments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"case_id\": 16,
    \"case\": {
        \"id\": 16
    },
    \"appointment_date\": \"2026-09-25T08:45:11\",
    \"appointment_time_start\": \"08:45\",
    \"appointment_time_end\": \"08:45\",
    \"status\": \"rescheduled\",
    \"comment\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-appointments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "case_id": 16,
    "case": {
        "id": 16
    },
    "appointment_date": "2026-09-25T08:45:11",
    "appointment_time_start": "08:45",
    "appointment_time_end": "08:45",
    "status": "rescheduled",
    "comment": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-appointments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

case_id   integer  optional  

This field is required when case.id is not present. The id of an existing record in the cases table. Example: 16

case   object  optional  
id   integer  optional  

This field is required when case_id is not present. The id of an existing record in the cases table. Example: 16

appointment_date   string   

Must be a valid date. Example: 2026-09-25T08:45:11

appointment_time_start   string  optional  

Must be a valid date in the format H:i. Example: 08:45

appointment_time_end   string  optional  

Must be a valid date in the format H:i. Example: 08:45

status   string  optional  

Example: rescheduled

Must be one of:
  • scheduled
  • rescheduled
  • completed
  • cancelled
  • no_show
comment   string  optional  

Must not be greater than 255 characters. Example: n

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-appointments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-appointments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-appointments/{caseAppointment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAppointment_id   integer   

The ID of the caseAppointment. Example: 16

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-appointments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"appointment_date\": \"2026-09-25T08:45:11\",
    \"appointment_time_start\": \"08:45\",
    \"appointment_time_end\": \"08:45\",
    \"comment\": \"b\",
    \"status\": \"completed\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-appointments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "appointment_date": "2026-09-25T08:45:11",
    "appointment_time_start": "08:45",
    "appointment_time_end": "08:45",
    "comment": "b",
    "status": "completed"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-appointments/{caseAppointment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAppointment_id   integer   

The ID of the caseAppointment. Example: 16

Body Parameters

appointment_date   string   

Must be a valid date. Example: 2026-09-25T08:45:11

appointment_time_start   string  optional  

Must be a valid date in the format H:i. Example: 08:45

appointment_time_end   string  optional  

Must be a valid date in the format H:i. Example: 08:45

comment   string  optional  

Must not be greater than 255 characters. Example: b

status   string  optional  

Example: completed

Must be one of:
  • scheduled
  • rescheduled
  • completed
  • cancelled
  • no_show

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-appointments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-appointments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-appointments/{caseAppointment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAppointment_id   integer   

The ID of the caseAppointment. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/contact-logs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/contact-logs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/contact-logs

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Show by case ID.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/contact-logs/case/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/contact-logs/case/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/contact-logs/case/{case_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

case_id   integer   

The ID of the case. Example: 16

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/contact-logs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"case_id\": \"architecto\",
    \"appointment_scheduled\": true,
    \"not_scheduled_reason\": \"architecto\",
    \"member_phone\": {
        \"type\": \"architecto\"
    },
    \"change_initiated_by\": \"architecto\",
    \"called_at\": \"2026-09-25T08:45:11\",
    \"contacted_by\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/contact-logs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "case_id": "architecto",
    "appointment_scheduled": true,
    "not_scheduled_reason": "architecto",
    "member_phone": {
        "type": "architecto"
    },
    "change_initiated_by": "architecto",
    "called_at": "2026-09-25T08:45:11",
    "contacted_by": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/contact-logs

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

case_id   string   

The id of an existing record in the cases table. Example: architecto

appointment_scheduled   boolean  optional  

Example: true

not_scheduled_reason   string  optional  

Example: architecto

member_phone   object  optional  
number   string  optional  

The number of an existing record in the phones table.

id   string  optional  

The id of an existing record in the member_phone table.

type   string  optional  

Example: architecto

member_id   string  optional  

The id of an existing record in the members table.

change_initiated_by   string  optional  

Example: architecto

called_at   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

contacted_by   string   

Example: architecto

case_appointment   string  optional  
id   string  optional  

The id of an existing record in the case_appointments table.

appointment_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

appointment_time_start   string  optional  

Must be a valid date in the format H:i. Example: 08:45

appointment_time_end   string  optional  

Must be a valid date in the format H:i. Example: 08:45

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/contact-logs/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/contact-logs/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/contact-logs/{contactLog_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

contactLog_id   integer   

The ID of the contactLog. Example: 16

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/contact-logs/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/contact-logs/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/contact-logs/{contactLog_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

contactLog_id   integer   

The ID of the contactLog. Example: 16

GET api/invoice-expenses

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/invoice-expenses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/invoice-expenses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/invoice-expenses

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": \"architecto\",
    \"case_id\": \"architecto\",
    \"amount\": 39,
    \"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": "architecto",
    "case_id": "architecto",
    "amount": 39,
    "description": "Eius et animi quos velit et."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/invoice-expenses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   string   

The id of an existing record in the users table. Example: architecto

case_id   string   

The id of an existing record in the cases table. Example: architecto

invoice_id   string  optional  

The id of an existing record in the invoices table.

amount   number   

Must be at least 0. Example: 39

description   string   

Example: Eius et animi quos velit et.

GET api/invoice-expenses/{expense_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/invoice-expenses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/invoice-expenses/{expense_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

PATCH api/invoice-expenses/{expense_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": \"architecto\",
    \"case_id\": \"architecto\",
    \"amount\": 39,
    \"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": "architecto",
    "case_id": "architecto",
    "amount": 39,
    "description": "Eius et animi quos velit et."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/invoice-expenses/{expense_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

Body Parameters

user_id   string   

The id of an existing record in the users table. Example: architecto

case_id   string   

The id of an existing record in the cases table. Example: architecto

invoice_id   string  optional  

The id of an existing record in the invoices table.

amount   number   

Must be at least 0. Example: 39

description   string   

Example: Eius et animi quos velit et.

DELETE api/invoice-expenses/{expense_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/invoice-expenses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/invoice-expenses/{expense_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

GET api/expenses/types

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expenses/types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expenses/types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/expenses/searchable-fields

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expenses/searchable-fields" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/searchable-fields"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expenses/searchable-fields

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/expenses/sortable-fields

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expenses/sortable-fields" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/sortable-fields"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expenses/sortable-fields

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get available status filters for current user.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expenses/available-statuses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/available-statuses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expenses/available-statuses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/expenses

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expenses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"keyword\": \"b\",
    \"search\": \"n\",
    \"query\": \"g\",
    \"status\": \"sent\",
    \"case_ids\": [
        16
    ],
    \"expense_type\": \"architecto\",
    \"user_id\": 16,
    \"incurred_at_from\": \"2026-09-25T08:45:11\",
    \"incurred_at_to\": \"2052-10-18\",
    \"paid_at_from\": \"2026-09-25T08:45:11\",
    \"paid_at_to\": \"2052-10-18\",
    \"created_at_from\": \"2026-09-25T08:45:11\",
    \"created_at_to\": \"2052-10-18\",
    \"amount_min\": 39,
    \"amount_max\": 84,
    \"sort_by\": \"expense_type\",
    \"sort_order\": \"asc\",
    \"per_page\": 16,
    \"page\": 27
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "keyword": "b",
    "search": "n",
    "query": "g",
    "status": "sent",
    "case_ids": [
        16
    ],
    "expense_type": "architecto",
    "user_id": 16,
    "incurred_at_from": "2026-09-25T08:45:11",
    "incurred_at_to": "2052-10-18",
    "paid_at_from": "2026-09-25T08:45:11",
    "paid_at_to": "2052-10-18",
    "created_at_from": "2026-09-25T08:45:11",
    "created_at_to": "2052-10-18",
    "amount_min": 39,
    "amount_max": 84,
    "sort_by": "expense_type",
    "sort_order": "asc",
    "per_page": 16,
    "page": 27
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expenses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

keyword   string  optional  

Must not be greater than 255 characters. Example: b

search   string  optional  

Must not be greater than 255 characters. Example: n

query   string  optional  

Must not be greater than 255 characters. Example: g

status   string  optional  

Example: sent

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
case_ids   integer[]  optional  

The id of an existing record in the cases table.

expense_type   string  optional  

The code of an existing record in the expense_types table. Example: architecto

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

incurred_at_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

incurred_at_to   string  optional  

Must be a valid date. Must be a date after or equal to incurred_at_from. Example: 2052-10-18

paid_at_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

paid_at_to   string  optional  

Must be a valid date. Must be a date after or equal to paid_at_from. Example: 2052-10-18

created_at_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

created_at_to   string  optional  

Must be a valid date. Must be a date after or equal to created_at_from. Example: 2052-10-18

amount_min   number  optional  

Must be at least 0. Example: 39

amount_max   number  optional  

Must be at least 0. Example: 84

sort_by   string  optional  

Example: expense_type

Must be one of:
  • created_at
  • updated_at
  • status
  • amount
  • incurred_at
  • paid_at
  • description
  • expense_type
sort_order   string  optional  

Example: asc

Must be one of:
  • asc
  • desc
per_page   integer  optional  

Must be at least -1. Must not be greater than 1000. Example: 16

page   integer  optional  

Must be at least 1. Example: 27

POST api/expenses

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expenses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"case_ids\": [
        16
    ],
    \"amount\": 4326.41688,
    \"category\": \"architecto\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"expense_type\": null,
    \"total_time\": 8,
    \"document_id\": 16,
    \"user_id\": 16,
    \"unit_rate\": 39,
    \"incurred_at\": \"2022-10-19\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "case_ids": [
        16
    ],
    "amount": 4326.41688,
    "category": "architecto",
    "description": "Et animi quos velit et fugiat.",
    "expense_type": null,
    "total_time": 8,
    "document_id": 16,
    "user_id": 16,
    "unit_rate": 39,
    "incurred_at": "2022-10-19"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/expenses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

case_id   string  optional  
case_ids   integer[]  optional  

The id of an existing record in the cases table.

amount   number  optional  

Example: 4326.41688

category   string   

Example: architecto

description   string  optional  

Must not be greater than 255 characters. Example: Et animi quos velit et fugiat.

expense_type   string   
Must be one of:
total_time   number  optional  

Must be at least 0.1. Must not be greater than 24. Example: 8

document_id   integer   

The id of an existing record in the documents table. Example: 16

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

unit_rate   number  optional  

Must be at least 0.01. Example: 39

incurred_at   string   

Must be a valid date in the format Y-m-d H:i:s. Must be a date before or equal to now. Example: 2022-10-19

Export expenses to CSV.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expenses/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"keyword\": \"b\",
    \"search\": \"n\",
    \"query\": \"g\",
    \"status\": \"completed\",
    \"case_ids\": [
        16
    ],
    \"expense_type\": \"architecto\",
    \"user_id\": 16,
    \"incurred_at_from\": \"2026-09-25T08:45:11\",
    \"incurred_at_to\": \"2052-10-18\",
    \"paid_at_from\": \"2026-09-25T08:45:11\",
    \"paid_at_to\": \"2052-10-18\",
    \"created_at_from\": \"2026-09-25T08:45:11\",
    \"created_at_to\": \"2052-10-18\",
    \"amount_min\": 39,
    \"amount_max\": 84,
    \"sort_by\": \"description\",
    \"sort_order\": \"desc\",
    \"per_page\": 16,
    \"page\": 27,
    \"fields\": [
        \"i\"
    ],
    \"field_order\": [
        \"y\"
    ],
    \"format\": \"csv\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "keyword": "b",
    "search": "n",
    "query": "g",
    "status": "completed",
    "case_ids": [
        16
    ],
    "expense_type": "architecto",
    "user_id": 16,
    "incurred_at_from": "2026-09-25T08:45:11",
    "incurred_at_to": "2052-10-18",
    "paid_at_from": "2026-09-25T08:45:11",
    "paid_at_to": "2052-10-18",
    "created_at_from": "2026-09-25T08:45:11",
    "created_at_to": "2052-10-18",
    "amount_min": 39,
    "amount_max": 84,
    "sort_by": "description",
    "sort_order": "desc",
    "per_page": 16,
    "page": 27,
    "fields": [
        "i"
    ],
    "field_order": [
        "y"
    ],
    "format": "csv"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/expenses/export

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

keyword   string  optional  

Must not be greater than 255 characters. Example: b

search   string  optional  

Must not be greater than 255 characters. Example: n

query   string  optional  

Must not be greater than 255 characters. Example: g

status   string  optional  

Example: completed

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
case_ids   integer[]  optional  

The id of an existing record in the cases table.

expense_type   string  optional  

The code of an existing record in the expense_types table. Example: architecto

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

incurred_at_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

incurred_at_to   string  optional  

Must be a valid date. Must be a date after or equal to incurred_at_from. Example: 2052-10-18

paid_at_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

paid_at_to   string  optional  

Must be a valid date. Must be a date after or equal to paid_at_from. Example: 2052-10-18

created_at_from   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

created_at_to   string  optional  

Must be a valid date. Must be a date after or equal to created_at_from. Example: 2052-10-18

amount_min   number  optional  

Must be at least 0. Example: 39

amount_max   number  optional  

Must be at least 0. Example: 84

sort_by   string  optional  

Example: description

Must be one of:
  • created_at
  • updated_at
  • status
  • amount
  • incurred_at
  • paid_at
  • description
  • expense_type
sort_order   string  optional  

Example: desc

Must be one of:
  • asc
  • desc
per_page   integer  optional  

Must be at least -1. Must not be greater than 1000. Example: 16

page   integer  optional  

Must be at least 1. Example: 27

fields   string[]  optional  

Must not be greater than 255 characters.

field_order   string[]  optional  

Must not be greater than 255 characters.

format   string  optional  

Example: csv

Must be one of:
  • csv

POST api/expenses/bulk/approve

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expenses/bulk/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expense_ids\": [
        4326.41688
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/bulk/approve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expense_ids": [
        4326.41688
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/expenses/bulk/approve

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

expense_ids   number[]   

The id of an existing record in the expenses table.

POST api/expenses/bulk/deny

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expenses/bulk/deny" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expense_ids\": [
        4326.41688
    ],
    \"reason\": \"m\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/bulk/deny"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expense_ids": [
        4326.41688
    ],
    "reason": "m"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/expenses/bulk/deny

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

expense_ids   number[]   

The id of an existing record in the expenses table.

reason   string  optional  

Must not be greater than 500 characters. Example: m

POST api/expenses/{expense_id}/mark-as-paid

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expenses/16/mark-as-paid" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/16/mark-as-paid"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/expenses/{expense_id}/mark-as-paid

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

GET api/expenses/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expenses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expenses/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the expense. Example: 16

Get valid status transitions for an expense.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expenses/16/valid-transitions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/16/valid-transitions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expenses/{expense_id}/valid-transitions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

PATCH api/expenses/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/expenses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"case_ids\": [
        16
    ],
    \"amount\": 4326.41688,
    \"status\": \"investigating\",
    \"description\": \"Velit et fugiat sunt nihil accusantium.\",
    \"category\": \"architecto\",
    \"expense_type\": null,
    \"total_time\": 4,
    \"document_id\": 16,
    \"unit_rate\": 39,
    \"incurred_at\": \"2022-10-19\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "case_ids": [
        16
    ],
    "amount": 4326.41688,
    "status": "investigating",
    "description": "Velit et fugiat sunt nihil accusantium.",
    "category": "architecto",
    "expense_type": null,
    "total_time": 4,
    "document_id": 16,
    "unit_rate": 39,
    "incurred_at": "2022-10-19"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/expenses/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the expense. Example: 16

Body Parameters

case_id   string  optional  
case_ids   integer[]  optional  

The id of an existing record in the cases table.

amount   number  optional  

Example: 4326.41688

status   string   

Example: investigating

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
description   string  optional  

Must not be greater than 255 characters. Example: Velit et fugiat sunt nihil accusantium.

category   string   

Example: architecto

expense_type   string   
Must be one of:
total_time   number  optional  

Must be at least 0.1. Must not be greater than 24. Example: 4

document_id   integer  optional  

The id of an existing record in the documents table. Example: 16

unit_rate   number  optional  

Must be at least 0.01. Example: 39

incurred_at   string   

Must be a valid date in the format Y-m-d H:i:s. Must be a date before or equal to now. Example: 2022-10-19

Change expense status using state machine.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/expenses/16/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"submitted\",
    \"note\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/16/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "submitted",
    "note": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/expenses/{expense_id}/status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

Body Parameters

status   string   

Example: submitted

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
note   string  optional  

Must not be greater than 1000 characters. Example: b

Cancel an expense.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/expenses/16/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reason\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/16/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reason": "b"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/expenses/{expense_id}/cancel

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

Body Parameters

reason   string   

Must be at least 10 characters. Must not be greater than 1000 characters. Example: b

DELETE api/expenses/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/expenses/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expenses/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/expenses/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the expense. Example: 16

GET api/expense-config/transitions

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expense-config/transitions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expense-config/transitions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/expense-config/transitions/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expense-config/transitions/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expense-config/transitions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the transition. Example: 16

POST api/expense-config/transitions

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"from_status\": \"completed\",
    \"to_status\": \"sent\",
    \"is_terminal\": true,
    \"requires_note\": true,
    \"description\": \"Eius et animi quos velit et.\",
    \"is_active\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "from_status": "completed",
    "to_status": "sent",
    "is_terminal": true,
    "requires_note": true,
    "description": "Eius et animi quos velit et.",
    "is_active": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/expense-config/transitions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

from_status   string  optional  

Example: completed

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
to_status   string   

Example: sent

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
is_terminal   boolean   

Example: true

requires_note   boolean   

Example: true

description   string  optional  

Must not be greater than 500 characters. Example: Eius et animi quos velit et.

is_active   boolean   

Example: false

PATCH api/expense-config/transitions/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"from_status\": \"denied\",
    \"to_status\": \"completed\",
    \"is_terminal\": false,
    \"requires_note\": true,
    \"description\": \"Eius et animi quos velit et.\",
    \"is_active\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "from_status": "denied",
    "to_status": "completed",
    "is_terminal": false,
    "requires_note": true,
    "description": "Eius et animi quos velit et.",
    "is_active": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/expense-config/transitions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the transition. Example: 16

Body Parameters

from_status   string  optional  

Example: denied

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
to_status   string   

Example: completed

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
is_terminal   boolean   

Example: false

requires_note   boolean   

Example: true

description   string  optional  

Must not be greater than 500 characters. Example: Eius et animi quos velit et.

is_active   boolean   

Example: false

DELETE api/expense-config/transitions/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/transitions/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/expense-config/transitions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the transition. Example: 16

GET api/expense-config/visibility

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expense-config/visibility" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expense-config/visibility

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/expense-config/visibility/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expense-config/visibility/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expense-config/visibility/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the visibility. Example: 16

POST api/expense-config/visibility

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"actual_status\": \"canceled\",
    \"displayed_status\": \"submitted\",
    \"is_active\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "actual_status": "canceled",
    "displayed_status": "submitted",
    "is_active": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/expense-config/visibility

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

actual_status   string   

Example: canceled

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
displayed_status   string   

Example: submitted

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
is_active   boolean   

Example: false

PATCH api/expense-config/visibility/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"actual_status\": \"denied\",
    \"displayed_status\": \"submitted\",
    \"is_active\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "actual_status": "denied",
    "displayed_status": "submitted",
    "is_active": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/expense-config/visibility/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the visibility. Example: 16

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

actual_status   string   

Example: denied

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
displayed_status   string   

Example: submitted

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
is_active   boolean   

Example: false

DELETE api/expense-config/visibility/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/visibility/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/expense-config/visibility/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the visibility. Example: 16

GET api/expense-config/permissions

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expense-config/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expense-config/permissions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/expense-config/permissions/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/expense-config/permissions/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/expense-config/permissions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the permission. Example: 1

POST api/expense-config/permissions

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"from_status\": \"investigating\",
    \"to_status\": \"submitted\",
    \"can_transition\": true,
    \"is_active\": true
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "from_status": "investigating",
    "to_status": "submitted",
    "can_transition": true,
    "is_active": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/expense-config/permissions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

from_status   string  optional  

Example: investigating

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
to_status   string   

Example: submitted

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
can_transition   boolean   

Example: true

is_active   boolean   

Example: true

PATCH api/expense-config/permissions/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"from_status\": \"sent\",
    \"to_status\": \"approved\",
    \"can_transition\": true,
    \"is_active\": true
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "from_status": "sent",
    "to_status": "approved",
    "can_transition": true,
    "is_active": true
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/expense-config/permissions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the permission. Example: 1

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

from_status   string  optional  

Example: sent

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
to_status   string   

Example: approved

Must be one of:
  • submitted
  • investigating
  • approved
  • denied
  • sent
  • completed
  • canceled
can_transition   boolean   

Example: true

is_active   boolean   

Example: true

DELETE api/expense-config/permissions/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/expense-config/permissions/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/expense-config/permissions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the permission. Example: 1

POST api/client-rates

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/client-rates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_id\": \"architecto\",
    \"rate_type\": \"standard_rate\",
    \"rate\": 4326.41688
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-rates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_id": "architecto",
    "rate_type": "standard_rate",
    "rate": 4326.41688
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/client-rates

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

client_id   string   

The id of an existing record in the clients table. Example: architecto

rate_type   string   

Example: standard_rate

Must be one of:
  • standard_rate
  • no_show
rate   number   

Example: 4326.41688

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/client-rates/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"client_id\": 16,
    \"rate_type\": \"standard_rate\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-rates/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "client_id": 16,
    "rate_type": "standard_rate"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

GET api/client-rates/{clientRate_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/client-rates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-rates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/client-rates/{clientRate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clientRate_id   integer   

The ID of the clientRate. Example: 16

PATCH api/client-rates/{clientRate_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/client-rates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rate_type\": \"no_show\",
    \"rate\": 4326.41688
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-rates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rate_type": "no_show",
    "rate": 4326.41688
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/client-rates/{clientRate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clientRate_id   integer   

The ID of the clientRate. Example: 16

Body Parameters

rate_type   string   

Example: no_show

Must be one of:
  • standard_rate
  • no_show
rate   number   

Example: 4326.41688

DELETE api/client-rates/{clientRate_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/client-rates/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-rates/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/client-rates/{clientRate_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clientRate_id   integer   

The ID of the clientRate. Example: 16

Display a listing of conclusions.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/conclusions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/conclusions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/conclusions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store a newly created conclusion in storage.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/conclusions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": \"architecto\",
    \"request_id\": \"architecto\",
    \"summary_type\": \"final\",
    \"conclusion_text\": \"architecto\",
    \"user\": [],
    \"request\": []
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/conclusions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": "architecto",
    "request_id": "architecto",
    "summary_type": "final",
    "conclusion_text": "architecto",
    "user": [],
    "request": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/conclusions

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   string   

The id of an existing record in the users table. Example: architecto

request_id   string   

The id of an existing record in the requests table. Example: architecto

summary_type   string   

Example: final

Must be one of:
  • assessor
  • final
conclusion_text   string  optional  

Example: architecto

user   object  optional  
id   string  optional  

This field is required when user_id is not present. The id of an existing record in the users table.

request   object  optional  
id   string  optional  

This field is required when request_id is not present. The id of an existing record in the requests table.

Display the specified conclusion.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/conclusions/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/conclusions/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/conclusions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the conclusion. Example: architecto

Update the specified conclusion in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/conclusions/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"conclusion_text\": \"architecto\",
    \"user\": [],
    \"request\": []
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/conclusions/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "conclusion_text": "architecto",
    "user": [],
    "request": []
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/conclusions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the conclusion. Example: architecto

Body Parameters

user_id   string  optional  

The id of an existing record in the users table.

request_id   string  optional  

The id of an existing record in the requests table.

conclusion_text   string  optional  

Example: architecto

user   object  optional  
id   string  optional  

The id of an existing record in the users table.

request   object  optional  
id   string  optional  

The id of an existing record in the requests table.

Remove the specified conclusion from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/conclusions/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/conclusions/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/conclusions/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the conclusion. Example: architecto

Legacy endpoint for creating payment requests

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/workmarket/pay-request" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"relay_access_token\": \"architecto\",
    \"action\": \"wm_createPaymentRequest\",
    \"payer_id\": \"architecto\",
    \"resource_id\": \"architecto\",
    \"resource_email\": \"zbailey@example.net\",
    \"resource_custom_field_id\": \"architecto\",
    \"resource_custom_field_value\": \"architecto\",
    \"create_payment_request\": {
        \"currency\": \"ngz\",
        \"memo\": \"architecto\",
        \"reference\": \"architecto\",
        \"invoice_creation_date\": \"2026-09-25T08:45:11\",
        \"order_items\": [
            {
                \"type\": \"WORK\",
                \"title\": \"architecto\",
                \"description\": \"Eius et animi quos velit et.\",
                \"quantity\": 16,
                \"amount\": 42,
                \"date\": \"2026-09-25T08:45:11\"
            }
        ],
        \"submit_payments\": true
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/pay-request"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "relay_access_token": "architecto",
    "action": "wm_createPaymentRequest",
    "payer_id": "architecto",
    "resource_id": "architecto",
    "resource_email": "zbailey@example.net",
    "resource_custom_field_id": "architecto",
    "resource_custom_field_value": "architecto",
    "create_payment_request": {
        "currency": "ngz",
        "memo": "architecto",
        "reference": "architecto",
        "invoice_creation_date": "2026-09-25T08:45:11",
        "order_items": [
            {
                "type": "WORK",
                "title": "architecto",
                "description": "Eius et animi quos velit et.",
                "quantity": 16,
                "amount": 42,
                "date": "2026-09-25T08:45:11"
            }
        ],
        "submit_payments": true
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/workmarket/pay-request

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

relay_id   string  optional  
relay_access_token   string  optional  

Example: architecto

action   string   

Example: wm_createPaymentRequest

Must be one of:
  • wm_createPaymentRequest
payer_id   string  optional  

Example: architecto

resource_id   string  optional  

This field is required when none of resourceEmail, resourceCustomFieldId, and resourceCustomFieldValue are present. Example: architecto

resource_email   string  optional  

Must be a valid email address. Example: zbailey@example.net

resource_custom_field_id   string  optional  

Example: architecto

resource_custom_field_value   string  optional  

Example: architecto

create_payment_request   object  optional  
currency   string   

Must be 3 characters. Example: ngz

memo   string   

Example: architecto

reference   string   

Example: architecto

invoice_creation_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

order_items   object[]   

Must have at least 1 items.

type   string   

Example: WORK

Must be one of:
  • WORK
  • EXPENSE
  • NON_STATUTORY_DEDUCTION
title   string   

Example: architecto

description   string  optional  

Example: Eius et animi quos velit et.

quantity   integer   

Must be at least 1. Example: 16

amount   number   

Must be at least 0. Example: 42

date   string   

Must be a valid date. Example: 2026-09-25T08:45:11

digital_asset_uuids   object  optional  
fields_and_values   object  optional  
submit_payments   boolean  optional  

Example: true

Get linked WorkMarket account status

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/workmarket/linked-account" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/linked-account"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/workmarket/linked-account

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

Link or update WorkMarket account

requires authentication

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/workmarket/linked-account" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"workmarket_id\": \"lg4\",
    \"user_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/linked-account"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "workmarket_id": "lg4",
    "user_id": 16
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/workmarket/linked-account

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

workmarket_id   string   

Must match the regex /^[a-zA-Z0-9]+$/. Example: lg4

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

Unlink WorkMarket account

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/workmarket/linked-account" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/linked-account"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 16
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

DELETE api/workmarket/linked-account

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

Submit a single expense to WorkMarket for payment

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/workmarket/expenses/16/submit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/expenses/16/submit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/workmarket/expenses/{expense_id}/submit

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

Submit multiple expenses to WorkMarket in batch

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/workmarket/expenses/batch-submit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expense_ids\": [
        16
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/expenses/batch-submit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expense_ids": [
        16
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/workmarket/expenses/batch-submit

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

expense_ids   integer[]   

The id of an existing record in the expenses table.

Check payment status for a specific expense

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/workmarket/expenses/16/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/expenses/16/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/workmarket/expenses/{expense_id}/status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

expense_id   integer   

The ID of the expense. Example: 16

Sync payment statuses for pending expenses

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/workmarket/sync-payment-statuses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 16,
    \"force\": true
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/workmarket/sync-payment-statuses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 16,
    "force": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/workmarket/sync-payment-statuses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

user_id   integer  optional  

The id of an existing record in the users table. Example: 16

force   boolean  optional  

Example: true

GET api/tags

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/tags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tags"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/tags

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/tags

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/tags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"category\": {
        \"id\": \"architecto\"
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tags"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "category": {
        "id": "architecto"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/tags

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 1000 characters. Example: Et animi quos velit et fugiat.

category   object   
id   string   

The id of an existing record in the tag_categories table. Example: architecto

GET api/tags/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/tags/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tags/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/tags/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the tag. Example: architecto

PATCH api/tags/{id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/tags/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"category\": {
        \"id\": \"architecto\"
    }
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tags/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "category": {
        "id": "architecto"
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/tags/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the tag. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Must not be greater than 1000 characters. Example: Et animi quos velit et fugiat.

category   object   
id   string   

The id of an existing record in the tag_categories table. Example: architecto

DELETE api/tags/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/tags/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tags/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/tags/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the tag. Example: 16

GET api/assessments

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/assessments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/assessments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/assessments

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/assessments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"request_type_id\": \"architecto\",
    \"assessment_sections\": [
        {
            \"id\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "request_type_id": "architecto",
    "assessment_sections": [
        {
            "id": "architecto"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/assessments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

request_type_id   string   

The id of an existing record in the request_types table. Example: architecto

assessment_sections   object[]  optional  
id   string   

The id of an existing record in the assessment_sections table. Example: architecto

GET api/assessments/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/assessments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/assessments/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the assessment. Example: 16

PUT api/assessments/{id}

requires authentication

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/assessments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"request_type_id\": \"architecto\",
    \"assessment_sections\": [
        {
            \"id\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "request_type_id": "architecto",
    "assessment_sections": [
        {
            "id": "architecto"
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/assessments/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the assessment. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

request_type_id   string   

The id of an existing record in the request_types table. Example: architecto

assessment_sections   object[]  optional  
id   string   

The id of an existing record in the assessment_sections table. Example: architecto

PATCH api/assessments/{assessment_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/assessments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"request_type_id\": \"architecto\",
    \"assessment_sections\": [
        {
            \"id\": \"architecto\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "request_type_id": "architecto",
    "assessment_sections": [
        {
            "id": "architecto"
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/assessments/{assessment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

assessment_id   integer   

The ID of the assessment. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

request_type_id   string   

The id of an existing record in the request_types table. Example: architecto

assessment_sections   object[]  optional  
id   string   

The id of an existing record in the assessment_sections table. Example: architecto

DELETE api/assessments/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/assessments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/assessments/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the assessment. Example: 16

POST api/case-assessments/{caseAssessment_id}/media

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/media" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "section_id=b"\
    --form "file_name=n"\
    --form "file=@/tmp/phpnatg456m0j8s1y11AfM" 
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/media"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('section_id', 'b');
body.append('file_name', 'n');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request   

POST api/case-assessments/{caseAssessment_id}/media

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

Body Parameters

file   file   

Must be a file. Must not be greater than 50000 kilobytes. Example: /tmp/phpnatg456m0j8s1y11AfM

section_id   string   

Must not be greater than 255 characters. Example: b

file_name   string  optional  

Must not be greater than 255 characters. Example: n

GET api/case-assessments/{caseAssessment_id}/sections/status

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-assessments/{caseAssessment_id}/sections/status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

PATCH api/case-assessments/{caseAssessment_id}/sections/{sectionId}/status

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"section_id\": \"b\",
    \"status\": \"in_progress\",
    \"override\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "section_id": "b",
    "status": "in_progress",
    "override": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/case-assessments/{caseAssessment_id}/sections/{sectionId}/status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

sectionId   string   

Example: architecto

Body Parameters

section_id   string   

Must not be greater than 255 characters. Example: b

status   string   

Example: in_progress

Must be one of:
  • pending
  • in_progress
  • completed
override   boolean  optional  

Example: false

Resolve (creating on first touch) the per-case assessment instance for a (case, template) pair. The returned case_assessment_id is what the section draft/status/media/finalize endpoints key on.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/cases/16/assessments/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/cases/16/assessments/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/cases/{case_id}/assessments/{assessment_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

case_id   integer   

The ID of the case. Example: 16

assessment_id   integer   

The ID of the assessment. Example: 16

Set the Assessment Address on the assessment form — one of the member's addresses, or a new one specific to this assessment. It is also the case's primary address; there is only one.

requires authentication

Gated on update:assessment_responses, the same ability the draft, status and media writes on this instance use: the assessment address is a field on the assessment form, so whoever may write the form writes the field. A narrower Assessor-only ability would be a new permission and a role decision, not a default.

The permission check runs after validation, as it does on every sibling endpoint here — a caller without the ability but with a malformed payload sees the 422 first. Worth knowing when reading the tests; not worth diverging from the file's shape to change.

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/address" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"address_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/address"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "address_id": 16
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/case-assessments/{caseAssessment_id}/address

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

Body Parameters

address_id   integer  optional  

The address_id of an existing record in the address_member table. The id of an existing record in the addresses table. Example: 16

address   object  optional  

Clear the Assessment Address, leaving the case with no primary address.

requires authentication

Never deletes the address row itself: an address entered for this assessment may since have been deduped onto by another record, and the ones selected here belong to the member.

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/address" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/address"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/case-assessments/{caseAssessment_id}/address

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

POST api/case-assessments/{caseAssessment_id}/sections/{sectionId}/draft

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/architecto/draft" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"data\": []
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/architecto/draft"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "data": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/case-assessments/{caseAssessment_id}/sections/{sectionId}/draft

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

sectionId   string   

Example: architecto

Body Parameters

data   object   

GET api/case-assessments/{caseAssessment_id}/sections/{sectionId}/draft

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/architecto/draft" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/sections/architecto/draft"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/case-assessments/{caseAssessment_id}/sections/{sectionId}/draft

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

sectionId   string   

Example: architecto

POST api/case-assessments/{caseAssessment_id}/finalize

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/finalize" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/case-assessments/16/finalize"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST api/case-assessments/{caseAssessment_id}/finalize

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

caseAssessment_id   integer   

The ID of the caseAssessment. Example: 16

GET api/assessment-sections/resolve

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/assessment-sections/resolve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"state\": \"bn\",
    \"request_type_id\": 16,
    \"client_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/resolve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "state": "bn",
    "request_type_id": 16,
    "client_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/assessment-sections/resolve

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

state   string  optional  

Must contain only letters. Must be 2 characters. Example: bn

request_type_id   integer  optional  

The id of an existing record in the request_types table. Example: 16

client_id   integer  optional  

Example: 16

POST api/assessment-sections/clear-cache

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/clear-cache" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"form_path\": \"b\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/clear-cache"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "form_path": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/assessment-sections/clear-cache

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

form_path   string  optional  

Must match the regex /^[a-z0-9-\/]+$/. Must not be greater than 255 characters. Example: b

GET api/assessment-sections

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/assessment-sections" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-sections"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/assessment-sections

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/assessment-sections

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/assessment-sections" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-sections"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Eius et animi quos velit et."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/assessment-sections

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

GET api/assessment-sections/{assessmentSection_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/assessment-sections/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/assessment-sections/{assessmentSection_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

assessmentSection_id   integer   

The ID of the assessmentSection. Example: 16

PATCH api/assessment-sections/{assessmentSection_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Eius et animi quos velit et."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/assessment-sections/{assessmentSection_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

assessmentSection_id   integer   

The ID of the assessmentSection. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

description   string  optional  

Example: Eius et animi quos velit et.

DELETE api/assessment-sections/{assessmentSection_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/assessment-sections/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/assessment-sections/{assessmentSection_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

assessmentSection_id   integer   

The ID of the assessmentSection. Example: 16

GET api/section-rules

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/section-rules" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assessment_section_id\": 16,
    \"per_page\": 22
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/section-rules"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assessment_section_id": 16,
    "per_page": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/section-rules

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

assessment_section_id   integer  optional  

Example: 16

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 22

POST api/section-rules

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/section-rules" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assessment_section_id\": 16,
    \"state\": \"ng\",
    \"request_type_id\": 16,
    \"client_id\": 16,
    \"sort_order\": 39,
    \"is_required\": true,
    \"is_active\": true
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/section-rules"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assessment_section_id": 16,
    "state": "ng",
    "request_type_id": 16,
    "client_id": 16,
    "sort_order": 39,
    "is_required": true,
    "is_active": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/section-rules

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

assessment_section_id   integer   

The id of an existing record in the assessment_sections table. Example: 16

state   string  optional  

Must be 2 characters. Example: ng

request_type_id   integer  optional  

The id of an existing record in the request_types table. Example: 16

client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

sort_order   integer   

Must be at least 0. Example: 39

is_required   boolean  optional  

Example: true

is_active   boolean  optional  

Example: true

GET api/section-rules/preview

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/section-rules/preview" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"state\": \"bn\",
    \"request_type_id\": 16,
    \"client_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/section-rules/preview"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "state": "bn",
    "request_type_id": 16,
    "client_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/section-rules/preview

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

state   string  optional  

Must be 2 characters. Example: bn

request_type_id   integer  optional  

The id of an existing record in the request_types table. Example: 16

client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

GET api/section-rules/{sectionRule_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/section-rules/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/section-rules/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/section-rules/{sectionRule_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

sectionRule_id   integer   

The ID of the sectionRule. Example: 16

PATCH api/section-rules/{sectionRule_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/section-rules/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"assessment_section_id\": 16,
    \"state\": \"ng\",
    \"request_type_id\": 16,
    \"client_id\": 16,
    \"sort_order\": 39,
    \"is_required\": true,
    \"is_active\": false
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/section-rules/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "assessment_section_id": 16,
    "state": "ng",
    "request_type_id": 16,
    "client_id": 16,
    "sort_order": 39,
    "is_required": true,
    "is_active": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/section-rules/{sectionRule_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

sectionRule_id   integer   

The ID of the sectionRule. Example: 16

Body Parameters

assessment_section_id   integer   

The id of an existing record in the assessment_sections table. Example: 16

state   string  optional  

Must be 2 characters. Example: ng

request_type_id   integer  optional  

The id of an existing record in the request_types table. Example: 16

client_id   integer  optional  

The id of an existing record in the clients table. Example: 16

sort_order   integer   

Must be at least 0. Example: 39

is_required   boolean  optional  

Example: true

is_active   boolean  optional  

Example: false

DELETE api/section-rules/{sectionRule_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/section-rules/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/section-rules/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/section-rules/{sectionRule_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

sectionRule_id   integer   

The ID of the sectionRule. Example: 16

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/tag-categories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tag-categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/tag-categories

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/tag-categories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category_name\": \"b\",
    \"category_tag_type\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tag-categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category_name": "b",
    "category_tag_type": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/tag-categories

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

category_name   string   

Must not be greater than 255 characters. Example: b

category_tag_type   string  optional  

Must not be greater than 255 characters. Example: n

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/tag-categories/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tag-categories/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/tag-categories/{tagCategory}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tagCategory   string   

Example: architecto

Update the specified resource in storage.

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/tag-categories/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category_name\": \"b\",
    \"category_tag_type\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tag-categories/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category_name": "b",
    "category_tag_type": "n"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/tag-categories/{tagCategory}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tagCategory   string   

Example: architecto

Body Parameters

category_name   string  optional  

Must not be greater than 255 characters. Example: b

category_tag_type   string  optional  

Must not be greater than 255 characters. Example: n

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/tag-categories/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/tag-categories/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/tag-categories/{tagCategory}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

tagCategory   string   

Example: architecto

GET api/saved-filters

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/saved-filters" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/saved-filters"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/saved-filters

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

POST api/saved-filters

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/saved-filters" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"context\": \"alert_templates\",
    \"filter_data\": []
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/saved-filters"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "context": "alert_templates",
    "filter_data": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/saved-filters

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

context   string   

Example: alert_templates

Must be one of:
  • cases
  • users
  • members
  • clients
  • expenses
  • alert_templates
  • system_rules
filter_data   object   

GET api/saved-filters/{savedFilter_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/saved-filters/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/saved-filters/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/saved-filters/{savedFilter_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

savedFilter_id   integer   

The ID of the savedFilter. Example: 16

PATCH api/saved-filters/{savedFilter_id}

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/saved-filters/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"filter_data\": []
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/saved-filters/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "filter_data": []
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/saved-filters/{savedFilter_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

savedFilter_id   integer   

The ID of the savedFilter. Example: 16

Body Parameters

name   string   

Must not be greater than 255 characters. Example: b

filter_data   object   

DELETE api/saved-filters/{savedFilter_id}

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/saved-filters/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/saved-filters/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/saved-filters/{savedFilter_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

savedFilter_id   integer   

The ID of the savedFilter. Example: 16

Fetch the authenticated user's draft. Returns { data: null } when none exists — the common case on a fresh create form (restore-on-reload).

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/client-creation-draft" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-creation-draft"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/client-creation-draft

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Create or update the authenticated user's draft (upsert).

requires authentication

Example request:
curl --request PUT \
    "https://gryphon-api.int.periscope365.com/api/client-creation-draft" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"form_data\": []
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-creation-draft"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "form_data": []
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PUT api/client-creation-draft

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

form_data   object   

Discard the authenticated user's draft. Idempotent.

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/client-creation-draft" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/client-creation-draft"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request   

DELETE api/client-creation-draft

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/filter-fields

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/filter-fields" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"context\": \"clients\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/filter-fields"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "context": "clients"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/filter-fields

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

context   string   

Example: clients

Must be one of:
  • cases
  • users
  • members
  • clients
  • expenses
  • alert_templates
  • system_rules

GET api/filter-fields/{filterField_id}

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/filter-fields/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/filter-fields/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/filter-fields/{filterField_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

filterField_id   integer   

The ID of the filterField. Example: 1

GET api/clinicians/{clinician_id}/eligible-mentors

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinicians/16/eligible-mentors" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/eligible-mentors"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinicians/{clinician_id}/eligible-mentors

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinician_id   integer   

The ID of the clinician. Example: 16

GET api/clinicians/{clinician_id}/trainings

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/clinicians/{clinician_id}/trainings

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinician_id   integer   

The ID of the clinician. Example: 16

POST api/clinicians/{clinician_id}/trainings/required

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/required" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"trainings\": [
        {
            \"training_id\": 16,
            \"due_date\": \"2026-09-25T08:45:11\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/required"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "trainings": [
        {
            "training_id": 16,
            "due_date": "2026-09-25T08:45:11"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clinicians/{clinician_id}/trainings/required

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinician_id   integer   

The ID of the clinician. Example: 16

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

trainings   object[]   

Must have at least 1 items.

training_id   integer   

The id of an existing record in the trainings table. Example: 16

due_date   string  optional  

Must be a valid date. Example: 2026-09-25T08:45:11

POST api/clinicians/{clinician_id}/trainings/certified

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/certified" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"trainings\": [
        {
            \"training_id\": 16,
            \"completion_date\": \"2026-09-25\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/certified"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "trainings": [
        {
            "training_id": 16,
            "completion_date": "2026-09-25"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/clinicians/{clinician_id}/trainings/certified

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinician_id   integer   

The ID of the clinician. Example: 16

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

trainings   object[]   

Must have at least 1 items.

training_id   integer   

The id of an existing record in the trainings table. Example: 16

completion_date   string  optional  

Must be a valid date in the format Y-m-d. Example: 2026-09-25

DELETE api/clinicians/{clinician_id}/trainings/required

requires authentication

Example request:
curl --request DELETE \
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/required" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"trainings\": [
        16
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/required"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "trainings": [
        16
    ]
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

DELETE api/clinicians/{clinician_id}/trainings/required

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinician_id   integer   

The ID of the clinician. Example: 16

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

trainings   integer[]   

The id of an existing record in the trainings table.

PATCH api/clinicians/{clinician_id}/trainings/mark-certified

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/mark-certified" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"trainings\": [
        {
            \"training_id\": 16,
            \"completion_date\": \"2026-09-25\"
        }
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/mark-certified"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "trainings": [
        {
            "training_id": 16,
            "completion_date": "2026-09-25"
        }
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clinicians/{clinician_id}/trainings/mark-certified

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinician_id   integer   

The ID of the clinician. Example: 16

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

trainings   object[]   

Must have at least 1 items.

training_id   integer   

The id of an existing record in the trainings table. Example: 16

completion_date   string  optional  

Must be a valid date in the format Y-m-d. Example: 2026-09-25

PATCH api/clinicians/{clinician_id}/trainings/remove-certified

requires authentication

Example request:
curl --request PATCH \
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/remove-certified" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"trainings\": [
        16
    ]
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/clinicians/16/trainings/remove-certified"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "trainings": [
        16
    ]
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

PATCH api/clinicians/{clinician_id}/trainings/remove-certified

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

clinician_id   integer   

The ID of the clinician. Example: 16

Body Parameters

role_id   integer   

The id of an existing record in the roles table. Example: 16

trainings   integer[]   

The id of an existing record in the trainings table.

Display a listing of active training material categories.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/training-material-categories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/training-material-categories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/training-material-categories

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Display a listing of training tag types with optional search.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/training-tag-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/training-tag-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/training-tag-types

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

GET api/trainings/catalog

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/trainings/catalog" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role_id\": 16,
    \"clinician_id\": 16
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/trainings/catalog"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role_id": 16,
    "clinician_id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/trainings/catalog

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

role_id   integer   

Example: 16

clinician_id   integer   

The id of an existing record in the users table. Example: 16

Display a paginated listing of bills for the authenticated user.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/bills" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1,
    \"search\": \"n\",
    \"sort_by\": \"total_amount\",
    \"sort_order\": \"desc\",
    \"per_page\": 7,
    \"page\": 66
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/bills"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1,
    "search": "n",
    "sort_by": "total_amount",
    "sort_order": "desc",
    "per_page": 7,
    "page": 66
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/bills

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

year   integer  optional  

Must be at least 2000. Must not be greater than 2100. Example: 1

search   string  optional  

Must not be greater than 50 characters. Example: n

sort_by   string  optional  

Example: total_amount

Must be one of:
  • pay_period
  • created_at
  • total_amount
  • bill_number
sort_order   string  optional  

Example: desc

Must be one of:
  • asc
  • desc
per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 7

page   integer  optional  

Must be at least 1. Example: 66

Display the specified bill with full breakdown details.

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/bills/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/bills/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/bills/{id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the bill. Example: 16

Generate bills from approved expenses, grouped by payee.

requires authentication

Finance Lead only endpoint.

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/api/bills/generate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expense_ids\": [
        16
    ],
    \"pay_period\": \"2026-09-25\",
    \"payment_description\": \"n\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/bills/generate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expense_ids": [
        16
    ],
    "pay_period": "2026-09-25",
    "payment_description": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST api/bills/generate

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

expense_ids   integer[]  optional  
pay_period   string   

Must be a valid date in the format Y-m-d. Example: 2026-09-25

payment_description   string  optional  

Must not be greater than 1000 characters. Example: n

Finance Lead-specific expense listing for the bill generation workflow.

requires authentication

Returns all expenses (any owner, any status, nullable client_id) with bill association.

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/api/finance-lead/expenses" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"incurred_at_from\": \"2026-09-25\",
    \"incurred_at_to\": \"2052-10-18\",
    \"is_billed\": false,
    \"per_page\": 22,
    \"sort_by\": \"incurred_at\",
    \"sort_order\": \"desc\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/api/finance-lead/expenses"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "incurred_at_from": "2026-09-25",
    "incurred_at_to": "2052-10-18",
    "is_billed": false,
    "per_page": 22,
    "sort_by": "incurred_at",
    "sort_order": "desc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-gryphon-app-version: unknown
access-control-allow-origin: *
 

{
    "message": "Unauthenticated.",
    "app_version": "unknown"
}
 

Request   

GET api/finance-lead/expenses

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

incurred_at_from   string  optional  

Must be a valid date in the format Y-m-d. Example: 2026-09-25

incurred_at_to   string  optional  

Must be a valid date in the format Y-m-d. Must be a date after or equal to incurred_at_from. Example: 2052-10-18

is_billed   boolean  optional  

Example: false

per_page   integer  optional  

Must be at least 1. Must not be greater than 100. Example: 22

sort_by   string  optional  

Example: incurred_at

Must be one of:
  • incurred_at
  • created_at
  • amount
  • status
sort_order   string  optional  

Example: desc

Must be one of:
  • asc
  • desc

GET auth/status

requires authentication

Example request:
curl --request GET \
    --get "https://gryphon-api.int.periscope365.com/auth/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/auth/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
x-gryphon-app-version: unknown
 

{
    "auth_service": "sanctum",
    "app_version": "unknown"
}
 

Request   

GET auth/status

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Attempt to authenticate a new session.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/auth/login" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"password\": \"|]|{+-\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/auth/login"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "password": "|]|{+-"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST auth/login

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

Example: gbailey@example.net

password   string   

Example: |]|{+-

Send a reset link to the given user.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/auth/forgot-password" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/auth/forgot-password"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request   

POST auth/forgot-password

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Reset the user's password.

requires authentication

Example request:
curl --request POST \
    "https://gryphon-api.int.periscope365.com/auth/reset-password" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"architecto\",
    \"password\": \"architecto\"
}"
const url = new URL(
    "https://gryphon-api.int.periscope365.com/auth/reset-password"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "architecto",
    "password": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request   

POST auth/reset-password

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

token   string   

Example: architecto

password   string   

Example: architecto