diff --git a/README.md b/README.md index 7c3a945c1..533bbb8b2 100644 --- a/README.md +++ b/README.md @@ -1,95 +1,140 @@ -# OpenAPI Typescript Codegen - -[![NPM][npm-image]][npm-url] -[![License][license-image]][license-url] -[![Coverage][coverage-image]][coverage-url] -[![Quality][quality-image]][quality-url] -[![Code Climate][climate-image]][climate-url] -[![Downloads][downloads-image]][downloads-url] -[![Build][build-image]][build-url] - -> Node.js library that generates Typescript clients based on the OpenAPI specification. - -## Why? -- Frontend ❤️ OpenAPI, but we do not want to use JAVA codegen in our builds -- Quick, lightweight, robust and framework-agnostic 🚀 -- Supports generation of TypeScript clients -- Supports generations of Fetch, [Node-Fetch](#node-fetch-support), [Axios](#axios-support), [Angular](#angular-support) and XHR http clients -- Supports OpenAPI specification v2.0 and v3.0 -- Supports JSON and YAML files for input -- Supports generation through CLI, Node.js and NPX -- Supports tsc and @babel/plugin-transform-typescript -- Supports aborting of requests (cancelable promise pattern) -- Supports external references using [json-schema-ref-parser](https://github.com/APIDevTools/json-schema-ref-parser/) +# Custom Saddleback OpenAPI Typescript Codegen + +> For original usage read - [original README](docs/original-readme.md) ## Install ``` -npm install openapi-typescript-codegen --save-dev +npm install saddleback-openapi-typescript-codegen --save-dev ``` +## Step-by-step guide based on ME app +### auto fetch +1. install the package +2. create config files for every microservice that you need (put it in the root project folder for example openapiEvents.config.json) +3. inside the config file you need to specify + 1. output folder (for Events it would be ./src/shared/api/events) + 2. microservice that you're specifying ("Events") + 3. environment that using for fetch ("feature") + 4. if you don't want to generate whole microservices, you can specify filterMethod and filterArray +4. create utility files that used in services + 1. 'baseAxios' should export axios instance that be used for fetch + 2. 'getBaseConfig' and 'serviceError' described here https://github.com/saddlebackdev/church-management/wiki/Services +5. run the command where you should pass your login and pass from saddleback identity server `saddlebackApi --config openapiEvents.config.json --login login --password password` +### local swagger +1. same as above +2. same as above +3. addition specify the input path to the swagger.json file +4. same as above +5. run the command `saddlebackApi --config openapiEvents.config.json` + ## Usage +Generated folders should be untouchable. Because every generate action will delete and put generated files into the output folder. + ``` -$ openapi --help +$ saddlebackOpenapi --help - Usage: openapi [options] + Usage: saddlebackOpenapi [options] Options: -V, --version output the version number - -i, --input OpenAPI specification, can be a path, url or string content (required) - -o, --output Output directory (required) - -c, --client HTTP client to generate [fetch, xhr, node, axios, angular] (default: "fetch") - --name Custom client class name - --useOptions Use options instead of arguments - --useUnionTypes Use union types instead of enums - --exportCore Write core files to disk (default: true) - --exportServices Write services to disk (default: true) - --exportModels Write models to disk (default: true) - --exportSchemas Write schemas to disk (default: false) - --indent Indentation options [4, 2, tab] (default: "4") - --postfix Service name postfix (default: "Service") - --request Path to custom request file + -i, --input OpenAPI specification, can be a path, url or string content + -o, --output Output directory should end with service name workflows | events | notifications | core | journey | giving | smallGroup + -c, --config Path to the config file + -l, --login Login + -p, --password Password + -e, --environment Environment dev | stage | stage2 + -s, --service Service Service Workflows | Events | Notifications | Core | Journey | Giving | SmallGroup -h, --help display help for command + -m, --filterMethod Filter method include(default) | exclude') + -f, --filterArray Filter array Examples - $ openapi --input ./spec.json --output ./generated - $ openapi --input ./spec.json --output ./generated --client xhr + $ saddlebackOpenApi --input ./spec.json --output ./generated + $ saddlebackOpenApi --config ./openapi.config.json + $ saddlebackOpenApi -o "./folderPath" -l "Login" -p "Password" -e "dev" -s "core" +``` + +## Config file +*extends original OPTIONS* +``` + input required in the config or cmd arguments + output required in the config or cmd arguments + + additionalModelFileExtension optional + additionalServiceFileExtension optional + removeLodashPrefixes optional ``` +### Settings: +### `input` +- Default: `undefined` +- Type: `string` + +OpenAPI specification, can be a path, url or string content (required in the config or cmd arguments) + +### `output` +- Default: `undefined` +- Type: `string` + +Output directory (required in the config or cmd arguments) + +### `login` (autofetch) +- Default: `undefined` +- Type: `string` + +Login to saddleback identity server + +### `password` (autofetch) +- Default: `undefined` +- Type: `string` + +Password to saddleback identity server + +### `environment` (autofetch) +- Default: `undefined` +- Type: `'dev' | 'stage' | 'stage2'` + +Which Environment should be used for swagger.json + +### `service` (autofetch) +- Default: `undefined` +- Type: `'workflows' | 'event' | 'notifications' | 'core'` + +Which service should be fetched + +### `filterMethod` (autofetch) +- Default: `include` +- Type: `'include' | 'exclude'` + +Which method of sort should be applied to the filter array + +### `filterArray` (autofetch) +- Default: `undefined` +- Type: `string[]` + +Which services should be *included* or *excluded* to/from generated list + +### `additionalModelFileExtension` +- Default: `true` +- Type: `boolean` + +Apply `*.models.*` extension to model files. + +For example (myModel.ts -> myModel.models.ts) + +### `additionalServiceFileExtension` +- Default: `true` +- Type: `boolean` + +Apply `*.service.*` extension to service files. + +For example (myService.ts -> myService.service.ts) + +### `removeLodashPrefixes` +- Default: `true` +- Type: `boolean` + +Remove special prefixes that are separated by `_` at the start of names. -Documentation -=== -- [Basic usage](docs/basic-usage.md) -- [OpenAPI object](docs/openapi-object.md) -- [Client instances](docs/client-instances.md) `--name` -- [Argument vs. Object style](docs/arguments-vs-object-style.md) `--useOptions` -- [Enums vs. Union types](docs/enum-vs-union-types.md) `--useUnionTypes` -- [Runtime schemas](docs/runtime-schemas.md) `--exportSchemas` -- [Enum with custom names and descriptions](docs/custom-enums.md) -- [Nullable props (OpenAPI v2)](docs/nullable-props.md) -- [Authorization](docs/authorization.md) -- [External references](docs/external-references.md) -- [Canceling requests](docs/canceling-requests.md) -- [Custom request file](docs/custom-request-file.md) - -Support -=== -- [Babel support](docs/babel-support.md) -- [Axios support](docs/axios-support.md) -- [Angular support](docs/angular-support.md) -- [Node-Fetch support](docs/node-fetch-support.md) - -[npm-url]: https://npmjs.org/package/openapi-typescript-codegen -[npm-image]: https://img.shields.io/npm/v/openapi-typescript-codegen.svg -[license-url]: LICENSE -[license-image]: http://img.shields.io/npm/l/openapi-typescript-codegen.svg -[coverage-url]: https://codecov.io/gh/ferdikoomen/openapi-typescript-codegen -[coverage-image]: https://img.shields.io/codecov/c/github/ferdikoomen/openapi-typescript-codegen.svg -[quality-url]: https://lgtm.com/projects/g/ferdikoomen/openapi-typescript-codegen -[quality-image]: https://img.shields.io/lgtm/grade/javascript/g/ferdikoomen/openapi-typescript-codegen.svg -[climate-url]: https://codeclimate.com/github/ferdikoomen/openapi-typescript-codegen -[climate-image]: https://img.shields.io/codeclimate/maintainability/ferdikoomen/openapi-typescript-codegen.svg -[downloads-url]: http://npm-stat.com/charts.html?package=openapi-typescript-codegen -[downloads-image]: http://img.shields.io/npm/dm/openapi-typescript-codegen.svg -[build-url]: https://circleci.com/gh/ferdikoomen/openapi-typescript-codegen/tree/master -[build-image]: https://circleci.com/gh/ferdikoomen/openapi-typescript-codegen/tree/master.svg?style=svg +For example (Custom_Prefix_Name -> Name) diff --git a/bin/saddleback.cli.js b/bin/saddleback.cli.js new file mode 100644 index 000000000..f6739f391 --- /dev/null +++ b/bin/saddleback.cli.js @@ -0,0 +1,65 @@ +#!/usr/bin/env node + +'use strict'; + +const path = require('path'); +const { program } = require('commander'); +const pkg = require('../package.json'); + +const params = program + .name('saddlebackOpenApi') + .usage('[options]') + .version(pkg.version) + .option('-i, --input ', 'OpenAPI specification, can be a path, url or string content (required)') + .option('-o, --output ', 'Output directory (required)') + .option('-c, --config ', 'Path to the config file') + .option('-l, --login ', 'Login') + .option('-p, --password ', 'Password') + .option('-e, --environment ', 'Environment dev | stage | stage2') + .option( + '-s, --service ', + 'Service Workflows | Events | Notifications | Core | Journey | Giving | SmallGroup' + ) + .option('-m, --filterMethod ', 'Filter method include(default) | exclude') + .option('-f, --filterArray ', 'Filter array') + .parse(process.argv) + .opts(); + +const OpenAPI = require(path.resolve(__dirname, '../dist/index.js')); +const config = require(path.resolve(params.config || `openapi.config.json`)); + +if (OpenAPI) { + OpenAPI.generateSaddlebackSpec({ + httpClient: 'saddleback', + clientName: '', + useOptions: true, + useUnionTypes: false, + exportCore: false, + exportServices: true, + exportModels: true, + exportSchemas: false, + indent: '4', + postfix: '', + request: '', + write: true, + additionalModelFileExtension: true, + additionalServiceFileExtension: true, + removeLodashPrefixes: true, + ...config, + input: params.input || config.input, + output: params.output || config.output, + username: params.login || config.login, + password: params.password || config.password, + useEnvironment: params.environment || config.environment, + useService: params.service || config.service, + filterMethod: params.filterMethod || config.filterMethod || 'include', + filterArray: params.filterArray || config.filterArray || [], + }) + .then(() => { + process.exit(0); + }) + .catch(error => { + console.error(error); + process.exit(1); + }); +} diff --git a/docs/basic-usage.md b/docs/basic-usage.md index 5b110f2ac..938267c05 100644 --- a/docs/basic-usage.md +++ b/docs/basic-usage.md @@ -1,4 +1,4 @@ -# Basic usage + # Basic usage ``` $ openapi --help diff --git a/docs/original-readme.md b/docs/original-readme.md new file mode 100644 index 000000000..536ecc452 --- /dev/null +++ b/docs/original-readme.md @@ -0,0 +1,95 @@ +# OpenAPI Typescript Codegen + +[![NPM][npm-image]][npm-url] +[![License][license-image]][license-url] +[![Coverage][coverage-image]][coverage-url] +[![Quality][quality-image]][quality-url] +[![Code Climate][climate-image]][climate-url] +[![Downloads][downloads-image]][downloads-url] +[![Build][build-image]][build-url] + +> Node.js library that generates Typescript clients based on the OpenAPI specification. + +## Why? +- Frontend ❤️ OpenAPI, but we do not want to use JAVA codegen in our builds +- Quick, lightweight, robust and framework-agnostic 🚀 +- Supports generation of TypeScript clients +- Supports generations of Fetch, [Node-Fetch](#node-fetch-support), [Axios](#axios-support), [Angular](#angular-support) and XHR http clients +- Supports OpenAPI specification v2.0 and v3.0 +- Supports JSON and YAML files for input +- Supports generation through CLI, Node.js and NPX +- Supports tsc and @babel/plugin-transform-typescript +- Supports aborting of requests (cancelable promise pattern) +- Supports external references using [json-schema-ref-parser](https://github.com/APIDevTools/json-schema-ref-parser/) + +## Install + +``` +npm install openapi-typescript-codegen --save-dev +``` + +## Usage + +``` +$ openapi --help + + Usage: openapi [options] + + Options: + -V, --version output the version number + -i, --input OpenAPI specification, can be a path, url or string content (required) + -o, --output Output directory (required) + -c, --client HTTP client to generate [fetch, xhr, node, axios, angular] (default: "fetch") + --name Custom client class name + --useOptions Use options instead of arguments + --useUnionTypes Use union types instead of enums + --exportCore Write core files to disk (default: true) + --exportServices Write services to disk (default: true) + --exportModels Write models to disk (default: true) + --exportSchemas Write schemas to disk (default: false) + --indent Indentation options [4, 2, tab] (default: "4") + --postfix Service name postfix (default: "Service") + --request Path to custom request file + -h, --help display help for command + + Examples + $ openapi --input ./spec.json --output ./generated + $ openapi --input ./spec.json --output ./generated --client xhr +``` + +Documentation +=== +- [Basic usage](basic-usage.md) +- [OpenAPI object](openapi-object.md) +- [Client instances](client-instances.md) `--name` +- [Argument vs. Object style](arguments-vs-object-style.md) `--useOptions` +- [Enums vs. Union types](enum-vs-union-types.md) `--useUnionTypes` +- [Runtime schemas](runtime-schemas.md) `--exportSchemas` +- [Enum with custom names and descriptions](custom-enums.md) +- [Nullable props (OpenAPI v2)](nullable-props.md) +- [Authorization](authorization.md) +- [External references](external-references.md) +- [Canceling requests](canceling-requests.md) +- [Custom request file](custom-request-file.md) + +Support +=== +- [Babel support](babel-support.md) +- [Axios support](axios-support.md) +- [Angular support](angular-support.md) +- [Node-Fetch support](node-fetch-support.md) + +[npm-url]: https://npmjs.org/package/openapi-typescript-codegen +[npm-image]: https://img.shields.io/npm/v/openapi-typescript-codegen.svg +[license-url]: ../LICENSE +[license-image]: http://img.shields.io/npm/l/openapi-typescript-codegen.svg +[coverage-url]: https://codecov.io/gh/ferdikoomen/openapi-typescript-codegen +[coverage-image]: https://img.shields.io/codecov/c/github/ferdikoomen/openapi-typescript-codegen.svg +[quality-url]: https://lgtm.com/projects/g/ferdikoomen/openapi-typescript-codegen +[quality-image]: https://img.shields.io/lgtm/grade/javascript/g/ferdikoomen/openapi-typescript-codegen.svg +[climate-url]: https://codeclimate.com/github/ferdikoomen/openapi-typescript-codegen +[climate-image]: https://img.shields.io/codeclimate/maintainability/ferdikoomen/openapi-typescript-codegen.svg +[downloads-url]: http://npm-stat.com/charts.html?package=openapi-typescript-codegen +[downloads-image]: http://img.shields.io/npm/dm/openapi-typescript-codegen.svg +[build-url]: https://circleci.com/gh/ferdikoomen/openapi-typescript-codegen/tree/master +[build-image]: https://circleci.com/gh/ferdikoomen/openapi-typescript-codegen/tree/master.svg?style=svg diff --git a/package-lock.json b/package-lock.json index 8e88b6497..85eef6e7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "openapi-typescript-codegen", + "name": "saddleback-openapi-typescript-codegen", "version": "0.23.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "openapi-typescript-codegen", + "name": "saddleback-openapi-typescript-codegen", "version": "0.23.0", "license": "MIT", "dependencies": { @@ -16,7 +16,8 @@ "json-schema-ref-parser": "^9.0.9" }, "bin": { - "openapi": "bin/index.js" + "openapi": "bin/index.js", + "saddlebackOpenapi": "bin/saddleback.cli.js" }, "devDependencies": { "@angular-devkit/build-angular": "13.3.7", @@ -6388,6 +6389,7 @@ "version": "3.20.3", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", "dev": true, "hasInstallScript": true, "funding": { diff --git a/package.json b/package.json index 9bb34b216..4704f2df6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "openapi-typescript-codegen", - "version": "0.23.0", + "name": "saddleback-openapi-typescript-codegen", + "version": "0.34.1", "description": "Library that generates Typescript clients based on the OpenAPI specification.", "author": "Ferdi Koomen", "homepage": "https://github.com/ferdikoomen/openapi-typescript-codegen", @@ -34,10 +34,12 @@ "main": "dist/index.js", "types": "types/index.d.ts", "bin": { - "openapi": "bin/index.js" + "openapi": "bin/index.js", + "saddlebackOpenapi": "bin/saddleback.cli.js" }, "files": [ "bin/index.js", + "bin/saddleback.cli.js", "dist/index.js", "types/index.d.ts" ], @@ -48,6 +50,7 @@ "release": "rollup --config --environment NODE_ENV:production", "validate": "tsc --project tsconfig.json --noEmit", "run": "node ./test/index.js", + "cleanRun": "npm run clean && npm run build && npm run run", "test": "jest --selectProjects UNIT", "test:update": "jest --selectProjects UNIT --updateSnapshot", "test:watch": "jest --selectProjects UNIT --watch", @@ -56,7 +59,8 @@ "eslint": "eslint .", "eslint:fix": "eslint . --fix", "prepublishOnly": "npm run clean && npm run release", - "codecov": "codecov --token=66c30c23-8954-4892-bef9-fbaed0a2e42b" + "codecov": "codecov --token=66c30c23-8954-4892-bef9-fbaed0a2e42b", + "prepare": "npm run release" }, "dependencies": { "camelcase": "^6.3.0", diff --git a/rollup.config.js b/rollup.config.js index d563874c3..ff88c800a 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -37,6 +37,7 @@ const handlebarsPlugin = () => ({ escapeComment: true, escapeDescription: true, camelCase: true, + pascalCase: true, }, }); return `export default ${templateSpec};`; @@ -69,6 +70,6 @@ export default { file: './dist/index.js', format: 'cjs', }, - external: ['camelcase', 'commander', 'fs-extra', 'handlebars', 'json-schema-ref-parser'], + external: ['camelcase', 'commander', 'fs-extra', 'handlebars', 'json-schema-ref-parser', 'axios', 'form-data'], plugins: getPlugins(), }; diff --git a/src/HttpClient.ts b/src/HttpClient.ts index 40c77c7c9..b90bde695 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -4,4 +4,5 @@ export enum HttpClient { NODE = 'node', AXIOS = 'axios', ANGULAR = 'angular', + SADDLEBACK = 'saddleback', } diff --git a/src/generate.ts b/src/generate.ts new file mode 100644 index 000000000..caef5b604 --- /dev/null +++ b/src/generate.ts @@ -0,0 +1,130 @@ +import { HttpClient } from './HttpClient'; +import { Indent } from './Indent'; +import { parse as parseV2 } from './openApi/v2'; +import { parse as parseV3 } from './openApi/v3'; +import { getOpenApiSpec } from './utils/getOpenApiSpec'; +import { getOpenApiVersion, OpenApiVersion } from './utils/getOpenApiVersion'; +import { isString } from './utils/isString'; +import { postProcessClient } from './utils/postProcessClient'; +import { registerHandlebarTemplates } from './utils/registerHandlebarTemplates'; +import { writeClient } from './utils/writeClient'; + +export type Options = { + input: string | Record; + output: string; + httpClient?: HttpClient; + clientName?: string; + useOptions?: boolean; + useUnionTypes?: boolean; + exportCore?: boolean; + exportServices?: boolean; + exportModels?: boolean; + exportSchemas?: boolean; + indent?: Indent; + postfix?: string; + request?: string; + write?: boolean; + additionalModelFileExtension?: boolean; + additionalServiceFileExtension?: boolean; +}; +/** + * Generate the OpenAPI client. This method will read the OpenAPI specification and based on the + * given language it will generate the client, including the typed models, validation schemas, + * service layer, etc. + * @param input The relative location of the OpenAPI spec + * @param output The relative location of the output directory + * @param httpClient The selected httpClient (fetch, xhr, node or axios) + * @param clientName Custom client class name + * @param useOptions Use options or arguments functions + * @param useUnionTypes Use union types instead of enums + * @param exportCore Generate core client classes + * @param exportServices Generate services + * @param exportModels Generate models + * @param exportSchemas Generate schemas + * @param indent Indentation options (4, 2 or tab) + * @param postfix Service name postfix + * @param request Path to custom request file + * @param write Write the files to disk (true or false) + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* + */ +export const generate = async ({ + input, + output, + httpClient = HttpClient.FETCH, + clientName, + useOptions = false, + useUnionTypes = false, + exportCore = true, + exportServices = true, + exportModels = true, + exportSchemas = false, + indent = Indent.SPACE_4, + postfix = 'Service', + request, + write = true, + additionalModelFileExtension = false, + additionalServiceFileExtension = false, +}: Options): Promise => { + const openApi = isString(input) ? await getOpenApiSpec(input) : input; + const openApiVersion = getOpenApiVersion(openApi); + const templates = registerHandlebarTemplates({ + httpClient, + useUnionTypes, + useOptions, + }); + + switch (openApiVersion) { + case OpenApiVersion.V2: { + const client = parseV2(openApi); + const clientFinal = postProcessClient(client); + if (!write) break; + await writeClient( + clientFinal, + templates, + output, + httpClient, + useOptions, + useUnionTypes, + exportCore, + exportServices, + exportModels, + exportSchemas, + indent, + postfix, + additionalModelFileExtension, + additionalServiceFileExtension, + clientName, + request + ); + break; + } + + case OpenApiVersion.V3: { + const client = parseV3(openApi); + const clientFinal = postProcessClient(client); + if (!write) break; + await writeClient( + clientFinal, + templates, + output, + httpClient, + useOptions, + useUnionTypes, + exportCore, + exportServices, + exportModels, + exportSchemas, + indent, + postfix, + additionalModelFileExtension, + additionalServiceFileExtension, + clientName, + request + ); + break; + } + } +}; + +export default generate; diff --git a/src/generateSaddlebackSpec.ts b/src/generateSaddlebackSpec.ts new file mode 100644 index 000000000..87a3de26a --- /dev/null +++ b/src/generateSaddlebackSpec.ts @@ -0,0 +1,154 @@ +import { generate, Options } from './generate'; +import { OpenApi } from './openApi/v3/interfaces/OpenApi'; +import { OpenApiOperation } from './openApi/v3/interfaces/OpenApiOperation'; +import { OpenApiParameter } from './openApi/v3/interfaces/OpenApiParameter'; +import { OpenApiSchema } from './openApi/v3/interfaces/OpenApiSchema'; +import { OpenApiServer } from './openApi/v3/interfaces/OpenApiServer'; +import { getOpenApiSpec } from './utils/getOpenApiSpec'; +import { isString } from './utils/isString'; +import { mapSwaggerRef } from './utils/mapSwaggerRef'; +import { removeLodashPrefix } from './utils/removeLodashPrefix'; +import { removeLodashPrefixFromRef } from './utils/removeLodashPrefixFromRef'; +import { getSchemaRefFromContent } from './utils/saddleback/getSchemaRefFromContent'; +import { getSwaggerJsonByEnv } from './utils/saddleback/getSwaggerJsonByEnv'; +import { Environment, Service } from './utils/saddleback/getUrlByServiceEnv'; +import { recursiveAddAllUnknownModels } from './utils/saddleback/recursiveAddAllUnknownModels'; +import { Dictionary } from './utils/types'; + +type Config = Options & { + useSaddlebackServices?: boolean; + additionalModelFileExtension?: boolean; + additionalServiceFileExtension?: boolean; + removeLodashPrefixes?: boolean; + username: string; + password: string; + useEnvironment?: Environment; + useService?: Service; + filterMethod: 'include' | 'exclude'; + filterArray: string[]; +}; + +export const generateSaddlebackSpec = async (config: Config) => { + const openApi: OpenApi = + config.useEnvironment && config.useService + ? await getSwaggerJsonByEnv({ + env: config.useEnvironment, + service: config.useService, + username: config.username, + password: config.password, + }) + : isString(config.input) + ? await getOpenApiSpec(config.input) + : config.input; + + if (config.removeLodashPrefixes && openApi.components && openApi.components.schemas) { + const newSchemas: Dictionary = {}; + + for (const schemaKey in openApi.components.schemas) { + if (openApi.components.schemas.hasOwnProperty(schemaKey)) { + newSchemas[removeLodashPrefix(schemaKey)] = openApi.components.schemas[schemaKey]; + } + } + + openApi.components.schemas = newSchemas; + + mapSwaggerRef(openApi, removeLodashPrefixFromRef); + } + + const list: OpenApi = openApi; + + if (!config.filterArray || config.filterArray.length === 0) { + await generate({ ...config, input: list }); + return; + } + + const requiredPaths: OpenApi['paths'] = {}; + + for (const path in list.paths) { + if (!list.paths.hasOwnProperty(path)) return; + + if (config.filterMethod === 'include') { + if (config.filterArray.some(it => it === path)) requiredPaths[path] = list.paths[path]; + } + if (config.filterMethod === 'exclude') { + if (!config.filterArray.some(it => it === path)) requiredPaths[path] = list.paths[path]; + } + } + + const requiredSchemasSet: Set = new Set(); + + for (const pathName in requiredPaths) { + const pathElement = requiredPaths[pathName]; + + const openApiPathValues = Object.values(pathElement) as ( + | OpenApiOperation + | OpenApiServer + | OpenApiParameter + | string + )[]; + + openApiPathValues.forEach(requestMethodData => { + if (typeof requestMethodData !== 'string') { + if (!('url' in requestMethodData)) { + if ('parameters' in requestMethodData) { + // add schemas from {apiPath}/{method}/parameters + requestMethodData.parameters?.forEach(parameter => { + const modelName = getSchemaRefFromContent(parameter); + + requiredSchemasSet.add(modelName); + recursiveAddAllUnknownModels(modelName, openApi, requiredSchemasSet); + }); + } + if ('responses' in requestMethodData) { + const responsesCodeData = Object.values(requestMethodData.responses); + + responsesCodeData.forEach(response => { + const contentTypeData = Object.values(response.content ?? {}); + + // add schemas from {apiPath}/{method}/responses/{responseType}/content + contentTypeData.forEach(content => { + const modelName = getSchemaRefFromContent(content); + + requiredSchemasSet.add(getSchemaRefFromContent(content)); + recursiveAddAllUnknownModels(modelName, openApi, requiredSchemasSet); + }); + }); + } + if ('requestBody' in requestMethodData) { + const requestBodyContent = Object.values(requestMethodData.requestBody?.content ?? {}); + + // add schemas from {apiPath}/{method}/responses/{responseType}/requestBody/content + requestBodyContent.forEach(content => { + const modelName = getSchemaRefFromContent(content); + + requiredSchemasSet.add(getSchemaRefFromContent(content)); + recursiveAddAllUnknownModels(modelName, openApi, requiredSchemasSet); + }); + } + } + } + }); + } + + const requiredSchemas: Dictionary = {}; + + if (list && list.components && list.components.schemas) { + for (const schema in list.components.schemas) { + if (requiredSchemasSet.has(schema)) { + requiredSchemas[schema] = list.components.schemas[schema]; + } + } + } + + const listWithRequiredPaths: OpenApi = { + ...list, + paths: requiredPaths, + components: { + schemas: requiredSchemas, + }, + }; + + await generate({ ...config, input: listWithRequiredPaths }); +}; + +export default generateSaddlebackSpec; diff --git a/src/index.ts b/src/index.ts index ef7a8b1bf..4dc2e097d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,127 +1,15 @@ +import { generate } from './generate'; +import { generateSaddlebackSpec } from './generateSaddlebackSpec'; import { HttpClient } from './HttpClient'; import { Indent } from './Indent'; -import { parse as parseV2 } from './openApi/v2'; -import { parse as parseV3 } from './openApi/v3'; -import { getOpenApiSpec } from './utils/getOpenApiSpec'; -import { getOpenApiVersion, OpenApiVersion } from './utils/getOpenApiVersion'; -import { isString } from './utils/isString'; -import { postProcessClient } from './utils/postProcessClient'; -import { registerHandlebarTemplates } from './utils/registerHandlebarTemplates'; -import { writeClient } from './utils/writeClient'; +export { generateSaddlebackSpec }; +export { generate }; export { HttpClient } from './HttpClient'; export { Indent } from './Indent'; -export type Options = { - input: string | Record; - output: string; - httpClient?: HttpClient; - clientName?: string; - useOptions?: boolean; - useUnionTypes?: boolean; - exportCore?: boolean; - exportServices?: boolean; - exportModels?: boolean; - exportSchemas?: boolean; - indent?: Indent; - postfix?: string; - request?: string; - write?: boolean; -}; - -/** - * Generate the OpenAPI client. This method will read the OpenAPI specification and based on the - * given language it will generate the client, including the typed models, validation schemas, - * service layer, etc. - * @param input The relative location of the OpenAPI spec - * @param output The relative location of the output directory - * @param httpClient The selected httpClient (fetch, xhr, node or axios) - * @param clientName Custom client class name - * @param useOptions Use options or arguments functions - * @param useUnionTypes Use union types instead of enums - * @param exportCore Generate core client classes - * @param exportServices Generate services - * @param exportModels Generate models - * @param exportSchemas Generate schemas - * @param indent Indentation options (4, 2 or tab) - * @param postfix Service name postfix - * @param request Path to custom request file - * @param write Write the files to disk (true or false) - */ -export const generate = async ({ - input, - output, - httpClient = HttpClient.FETCH, - clientName, - useOptions = false, - useUnionTypes = false, - exportCore = true, - exportServices = true, - exportModels = true, - exportSchemas = false, - indent = Indent.SPACE_4, - postfix = 'Service', - request, - write = true, -}: Options): Promise => { - const openApi = isString(input) ? await getOpenApiSpec(input) : input; - const openApiVersion = getOpenApiVersion(openApi); - const templates = registerHandlebarTemplates({ - httpClient, - useUnionTypes, - useOptions, - }); - - switch (openApiVersion) { - case OpenApiVersion.V2: { - const client = parseV2(openApi); - const clientFinal = postProcessClient(client); - if (!write) break; - await writeClient( - clientFinal, - templates, - output, - httpClient, - useOptions, - useUnionTypes, - exportCore, - exportServices, - exportModels, - exportSchemas, - indent, - postfix, - clientName, - request - ); - break; - } - - case OpenApiVersion.V3: { - const client = parseV3(openApi); - const clientFinal = postProcessClient(client); - if (!write) break; - await writeClient( - clientFinal, - templates, - output, - httpClient, - useOptions, - useUnionTypes, - exportCore, - exportServices, - exportModels, - exportSchemas, - indent, - postfix, - clientName, - request - ); - break; - } - } -}; - export default { HttpClient, generate, + generateSaddlebackSpec, }; diff --git a/src/templates/client.hbs b/src/templates/client.hbs index 601f27d8f..cb2a2830e 100644 --- a/src/templates/client.hbs +++ b/src/templates/client.hbs @@ -16,7 +16,7 @@ import { {{{httpRequest}}} } from './core/{{{httpRequest}}}'; {{#if services}} {{#each services}} -import { {{{name}}}{{{@root.postfix}}} } from './services/{{{name}}}{{{@root.postfix}}}'; +import { {{{name}}}{{{@root.postfix}}} } from './services/{{{name}}}{{{@root.postfix}}}{{#if ../additionalServiceFileExtension}}.service{{/if}}'; {{/each}} {{/if}} diff --git a/src/templates/exportModel.hbs b/src/templates/exportModel.hbs index 7ddb2c3e8..4207aaf8a 100644 --- a/src/templates/exportModel.hbs +++ b/src/templates/exportModel.hbs @@ -3,7 +3,7 @@ {{#if imports}} {{#each imports}} -import type { {{{this}}} } from './{{{this}}}'; +import type { {{{this}}} } from './{{camelCase this}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; {{/each}} {{/if}} diff --git a/src/templates/exportSaddlebackService.hbs b/src/templates/exportSaddlebackService.hbs new file mode 100644 index 000000000..d9606e617 --- /dev/null +++ b/src/templates/exportSaddlebackService.hbs @@ -0,0 +1,79 @@ +{{>header}} + +{{#if imports}} +{{#each imports}} +import type { {{{this}}} } from '../models/{{camelCase this}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; +{{/each}} +{{/if}} +import { + AxiosError, + AxiosResponse, +} from 'axios'; +import axios from '../../baseAxios'; +import serviceError from '../../serviceError'; +import getBaseConfig from '../../getBaseConfig'; + +{{#each operations}} +/** +{{#if deprecated}} + * @deprecated +{{/if}} +{{#if summary}} + * {{{escapeComment summary}}} +{{/if}} +{{#if description}} + * {{{escapeComment description}}} +{{/if}} +{{#unless @root.useOptions}} +{{#if parameters}} +{{#each parameters}} + * @param {{{name}}} {{#if description}}{{{escapeComment description}}}{{/if}} +{{/each}} +{{/if}} +{{/unless}} +{{#each results}} + * @returns {{{type}}} {{#if description}}{{{escapeComment description}}}{{/if}} +{{/each}} + * @throws Error('{{{../name}}}Service > {{name}}') + */ + +export const fetch{{{../name}}}{{pascalCase name}} = async ({{> saddlebackParameters}}): Promiseresult}}>> => { + const setBaseConfig = await getBaseConfig({ +{{#if parametersBody}} + data, +{{/if}} +{{#if parametersPath}} + params, +{{else if parametersQuery}} + params, +{{/if}} + method: '{{{method}}}', + url: '{{{path}}}', + service: '{{{pascalCase ../serviceName}}}', +{{#if parametersBody}} +{{#if parametersBody.mediaType}} + contentType: '{{{parametersBody.mediaType}}}', +{{/if}} +{{/if}} +{{#if parameters}} + ...config, +{{/if}} + }); + + try { + const response: AxiosResponse<{{>result}}> = await axios({ + ...setBaseConfig, + }); + + return response; + } catch (error) { + const axiosError = error as AxiosError; + + serviceError(error); + + throw new Error('{{{../name}}}Service > {{name}}'); + } +}; + +{{/each}} + diff --git a/src/templates/exportService.hbs b/src/templates/exportService.hbs index 2fdd9af58..10667ddfa 100644 --- a/src/templates/exportService.hbs +++ b/src/templates/exportService.hbs @@ -13,7 +13,7 @@ import type { Observable } from 'rxjs'; {{/equals}} {{#if imports}} {{#each imports}} -import type { {{{this}}} } from '../models/{{{this}}}'; +import type { {{{this}}} } from '../models/{{{this}}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; {{/each}} {{/if}} diff --git a/src/templates/index.hbs b/src/templates/index.hbs index 72544d7db..8916cc5ca 100644 --- a/src/templates/index.hbs +++ b/src/templates/index.hbs @@ -18,13 +18,13 @@ export type { OpenAPIConfig } from './core/OpenAPI'; {{#each models}} {{#if @root.useUnionTypes}} -export type { {{{name}}} } from './models/{{{name}}}'; +export type { {{{name}}} } from './models/{{{camelCase name}}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; {{else if enum}} -export { {{{name}}} } from './models/{{{name}}}'; +export { {{{name}}} } from './models/{{{camelCase name}}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; {{else if enums}} -export { {{{name}}} } from './models/{{{name}}}'; +export { {{{name}}} } from './models/{{{camelCase name}}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; {{else}} -export type { {{{name}}} } from './models/{{{name}}}'; +export type { {{{name}}} } from './models/{{{camelCase name}}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; {{/if}} {{/each}} {{/if}} @@ -33,7 +33,7 @@ export type { {{{name}}} } from './models/{{{name}}}'; {{#if models}} {{#each models}} -export { ${{{name}}} } from './schemas/${{{name}}}'; +export { ${{{name}}} } from './schemas/${{{camelCase name}}}'; {{/each}} {{/if}} {{/if}} @@ -41,7 +41,11 @@ export { ${{{name}}} } from './schemas/${{{name}}}'; {{#if services}} {{#each services}} -export { {{{name}}}{{{@root.postfix}}} } from './services/{{{name}}}{{{@root.postfix}}}'; +{{#equals @root.httpClient 'saddleback'}} +export * as fetch{{{name}}}{{{@root.postfix}}} from './services/{{{camelCase name}}}{{{@root.postfix}}}{{#if ../additionalServiceFileExtension}}.service{{/if}}'; +{{else}} +export { {{{name}}}{{{@root.postfix}}} } from './services/{{{camelCase name}}}{{{@root.postfix}}}{{#if ../additionalServiceFileExtension}}.service{{/if}}'; +{{/equals}} {{/each}} {{/if}} {{/if}} diff --git a/src/templates/modelsIndex.hbs b/src/templates/modelsIndex.hbs new file mode 100644 index 000000000..324db39a4 --- /dev/null +++ b/src/templates/modelsIndex.hbs @@ -0,0 +1,18 @@ +{{>header}} + +{{#if @root.exportModels}} +{{#if models}} +{{#each models}} +{{#if @root.useUnionTypes}} +export type { {{{name}}} } from './{{camelCase name}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; +{{else if enum}} +export { {{{name}}} } from './{{camelCase name}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; +{{else if enums}} +export { {{{name}}} } from './{{camelCase name}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; +{{else}} +export type { {{{name}}} } from './{{camelCase name}}{{#if ../additionalModelFileExtension}}.models{{/if}}'; +{{/if}} +{{/each}} +{{/if}} +{{/if}} + diff --git a/src/templates/partials/saddlebackParameters.hbs b/src/templates/partials/saddlebackParameters.hbs new file mode 100644 index 000000000..e0c3e053e --- /dev/null +++ b/src/templates/partials/saddlebackParameters.hbs @@ -0,0 +1,79 @@ +{{#if parameters}} +{ + {{#if parametersBody}} + data, + {{/if}} + {{#if parametersPath}} + params, + {{else if parametersQuery}} + params, +{{/if}} + config, +}: { + {{#if parametersBody}} + data: {{#equals parametersBody.in 'formData'}}FormData;{{else}}{{{parametersBody.type}}};{{/equals}} + {{/if}} + {{#if parametersPath}} + params: { + {{#each parametersPath}} + {{#ifdef description deprecated}} + /** + {{#if description}} + * {{{escapeComment description}}} + {{/if}} + {{#if deprecated}} + * @deprecated + {{/if}} + */ + {{/ifdef}} + {{{name}}}{{>isRequired}}: {{>type}}; + {{/each}} + {{#each parametersQuery}} + {{#ifdef description deprecated}} + /** + {{#if description}} + * {{{escapeComment description}}} + {{/if}} + {{#if deprecated}} + * @deprecated + {{/if}} + */ + {{/ifdef}} + {{{name}}}{{>isRequired}}: {{>type}}; + {{/each}} + }; + {{else if parametersQuery}} + params: { + {{#each parametersPath}} + {{#ifdef description deprecated}} + /** + {{#if description}} + * {{{escapeComment description}}} + {{/if}} + {{#if deprecated}} + * @deprecated + {{/if}} + */ + {{/ifdef}} + {{{name}}}{{>isRequired}}: {{>type}}; + {{/each}} + {{#each parametersQuery}} + {{#ifdef description deprecated}} + /** + {{#if description}} + * {{{escapeComment description}}} + {{/if}} + {{#if deprecated}} + * @deprecated + {{/if}} + */ + {{/ifdef}} + {{{name}}}{{>isRequired}}: {{>type}}; + {{/each}} + }; +{{/if}} + /** + * Config to add or overwrite getBaseConfig arguments + */ + config?: Partial[0]>; +}{{/if}} diff --git a/src/templates/servicesIndex.hbs b/src/templates/servicesIndex.hbs new file mode 100644 index 000000000..3f993246c --- /dev/null +++ b/src/templates/servicesIndex.hbs @@ -0,0 +1,13 @@ +{{>header}} + +{{#if @root.exportServices}} +{{#if services}} +{{#each services}} +{{#equals @root.httpClient 'saddleback'}} +export * as fetch{{{name}}}{{{@root.postfix}}} from './{{camelCase name}}{{{@root.postfix}}}{{#if ../additionalServiceFileExtension}}.service{{/if}}'; +{{else}} +export { {{{name}}}{{{@root.postfix}}} } from './{{camelCase name}}{{{@root.postfix}}}{{#if ../additionalServiceFileExtension}}.service{{/if}}'; +{{/equals}} +{{/each}} +{{/if}} +{{/if}} diff --git a/src/utils/getHttpRequestName.ts b/src/utils/getHttpRequestName.ts index 53b7ad05a..d74e34caf 100644 --- a/src/utils/getHttpRequestName.ts +++ b/src/utils/getHttpRequestName.ts @@ -16,5 +16,7 @@ export const getHttpRequestName = (httpClient: HttpClient): string => { return 'AxiosHttpRequest'; case HttpClient.ANGULAR: return 'AngularHttpRequest'; + case HttpClient.SADDLEBACK: + return 'AxiosHttpRequest'; } }; diff --git a/src/utils/mapSwaggerRef.ts b/src/utils/mapSwaggerRef.ts new file mode 100644 index 000000000..daddb3cdf --- /dev/null +++ b/src/utils/mapSwaggerRef.ts @@ -0,0 +1,13 @@ +export const mapSwaggerRef = (obj: Record, mapFunction: Function): void => { + const searchRef = (obj: Record) => { + for (const key in obj) { + if (obj.hasOwnProperty(key)) { + if (key === '$ref') { + obj[key] = mapFunction(obj[key]); + } else if (typeof obj[key] === 'object') searchRef(obj[key]); + } + } + } + + searchRef(obj); +}; diff --git a/src/utils/registerHandlebarHelpers.spec.ts b/src/utils/registerHandlebarHelpers.spec.ts index f8347abdb..c2a041280 100644 --- a/src/utils/registerHandlebarHelpers.spec.ts +++ b/src/utils/registerHandlebarHelpers.spec.ts @@ -21,5 +21,6 @@ describe('registerHandlebarHelpers', () => { expect(helpers).toContain('escapeComment'); expect(helpers).toContain('escapeDescription'); expect(helpers).toContain('camelCase'); + expect(helpers).toContain('pascalCase'); }); }); diff --git a/src/utils/registerHandlebarHelpers.ts b/src/utils/registerHandlebarHelpers.ts index 88f47c19b..c1d4e3174 100644 --- a/src/utils/registerHandlebarHelpers.ts +++ b/src/utils/registerHandlebarHelpers.ts @@ -104,4 +104,8 @@ export const registerHandlebarHelpers = (root: { Handlebars.registerHelper('camelCase', function (value: string): string { return camelCase(value); }); + + Handlebars.registerHelper('pascalCase', function (value: string): string { + return camelCase(value, { pascalCase: true }); + }); }; diff --git a/src/utils/registerHandlebarTemplates.ts b/src/utils/registerHandlebarTemplates.ts index bf77cbdc1..701c90f57 100644 --- a/src/utils/registerHandlebarTemplates.ts +++ b/src/utils/registerHandlebarTemplates.ts @@ -53,9 +53,11 @@ import xhrGetResponseHeader from '../templates/core/xhr/getResponseHeader.hbs'; import xhrRequest from '../templates/core/xhr/request.hbs'; import xhrSendRequest from '../templates/core/xhr/sendRequest.hbs'; import templateExportModel from '../templates/exportModel.hbs'; +import templateExportSaddlebackService from '../templates/exportSaddlebackService.hbs'; import templateExportSchema from '../templates/exportSchema.hbs'; import templateExportService from '../templates/exportService.hbs'; import templateIndex from '../templates/index.hbs'; +import templateModelsIndex from '../templates/modelsIndex.hbs'; import partialBase from '../templates/partials/base.hbs'; import partialExportComposition from '../templates/partials/exportComposition.hbs'; import partialExportEnum from '../templates/partials/exportEnum.hbs'; @@ -67,6 +69,7 @@ import partialIsReadOnly from '../templates/partials/isReadOnly.hbs'; import partialIsRequired from '../templates/partials/isRequired.hbs'; import partialParameters from '../templates/partials/parameters.hbs'; import partialResult from '../templates/partials/result.hbs'; +import saddlebackParameters from '../templates/partials/saddlebackParameters.hbs'; import partialSchema from '../templates/partials/schema.hbs'; import partialSchemaArray from '../templates/partials/schemaArray.hbs'; import partialSchemaComposition from '../templates/partials/schemaComposition.hbs'; @@ -83,15 +86,19 @@ import partialTypeInterface from '../templates/partials/typeInterface.hbs'; import partialTypeIntersection from '../templates/partials/typeIntersection.hbs'; import partialTypeReference from '../templates/partials/typeReference.hbs'; import partialTypeUnion from '../templates/partials/typeUnion.hbs'; +import templateServiceIndex from '../templates/servicesIndex.hbs'; import { registerHandlebarHelpers } from './registerHandlebarHelpers'; export interface Templates { index: Handlebars.TemplateDelegate; + serviceIndex: Handlebars.TemplateDelegate; + modelsIndex: Handlebars.TemplateDelegate; client: Handlebars.TemplateDelegate; exports: { model: Handlebars.TemplateDelegate; schema: Handlebars.TemplateDelegate; service: Handlebars.TemplateDelegate; + saddlebackService: Handlebars.TemplateDelegate; }; core: { settings: Handlebars.TemplateDelegate; @@ -119,11 +126,14 @@ export const registerHandlebarTemplates = (root: { // Main templates (entry points for the files we write to disk) const templates: Templates = { index: Handlebars.template(templateIndex), + serviceIndex: Handlebars.template(templateServiceIndex), + modelsIndex: Handlebars.template(templateModelsIndex), client: Handlebars.template(templateClient), exports: { model: Handlebars.template(templateExportModel), schema: Handlebars.template(templateExportSchema), service: Handlebars.template(templateExportService), + saddlebackService: Handlebars.template(templateExportSaddlebackService), }, core: { settings: Handlebars.template(templateCoreSettings), @@ -147,6 +157,7 @@ export const registerHandlebarTemplates = (root: { Handlebars.registerPartial('isReadOnly', Handlebars.template(partialIsReadOnly)); Handlebars.registerPartial('isRequired', Handlebars.template(partialIsRequired)); Handlebars.registerPartial('parameters', Handlebars.template(partialParameters)); + Handlebars.registerPartial('saddlebackParameters', Handlebars.template(saddlebackParameters)); Handlebars.registerPartial('result', Handlebars.template(partialResult)); Handlebars.registerPartial('schema', Handlebars.template(partialSchema)); Handlebars.registerPartial('schemaArray', Handlebars.template(partialSchemaArray)); diff --git a/src/utils/removeLodashPrefix.ts b/src/utils/removeLodashPrefix.ts new file mode 100644 index 000000000..31d46d685 --- /dev/null +++ b/src/utils/removeLodashPrefix.ts @@ -0,0 +1,3 @@ +export const removeLodashPrefix = (s: string): string => { + return s.split('_').slice(1).join(''); +}; diff --git a/src/utils/removeLodashPrefixFromRef.ts b/src/utils/removeLodashPrefixFromRef.ts new file mode 100644 index 000000000..dd7295ed9 --- /dev/null +++ b/src/utils/removeLodashPrefixFromRef.ts @@ -0,0 +1,11 @@ +import { removeLodashPrefix } from './removeLodashPrefix'; + +export const removeLodashPrefixFromRef = (swaggerRef: string) => { + return ( + swaggerRef + .split('/') + .slice(0, -1) + .reduce((acc: string, it: string) => `${acc}${it}/`, '') + + removeLodashPrefix(swaggerRef.split('/').slice(-1)[0]) + ); +}; diff --git a/src/utils/saddleback/getApiToken.ts b/src/utils/saddleback/getApiToken.ts new file mode 100644 index 000000000..53f039dd0 --- /dev/null +++ b/src/utils/saddleback/getApiToken.ts @@ -0,0 +1,29 @@ +import axios from 'axios'; + +export const getApiToken = async ({ + url, + cookie, + params, +}: { + url: string; + cookie: string; + params: Record; +}): Promise<{ apiToken: string | null }> => { + const response = await axios(url, { + method: 'GET', + headers: { + Cookie: cookie, + }, + params, + maxRedirects: 0, + }).catch(e => console.log(e)); + + if (!response) return { apiToken: null }; + + const regexp = new RegExp(`type='hidden' name='access_token' value='(.*)'`); + const apiToken = response.data.match(regexp)?.[1] || null; + + if (apiToken === null) throw new Error('wrong apiToken getApiToken'); + + return { apiToken }; +}; diff --git a/src/utils/saddleback/getNameFromRef.ts b/src/utils/saddleback/getNameFromRef.ts new file mode 100644 index 000000000..2c6262f62 --- /dev/null +++ b/src/utils/saddleback/getNameFromRef.ts @@ -0,0 +1,3 @@ +export const getNameFromRef = (ref: string): string => { + return ref.split('/').slice(-1)[0]; +}; diff --git a/src/utils/saddleback/getRequestVerificationToken.ts b/src/utils/saddleback/getRequestVerificationToken.ts new file mode 100644 index 000000000..2c9f79b42 --- /dev/null +++ b/src/utils/saddleback/getRequestVerificationToken.ts @@ -0,0 +1,33 @@ +import axios from 'axios'; + +export const getRequestVerificationToken = async ({ + url, + params, +}: { + url: string; + params: Record; +}): Promise<{ + requestVerificationToken: string | null; + cookie: string | null; +}> => { + const response = await axios(url, { + method: 'GET', + params, + maxRedirects: 0, + }).catch(e => console.log(e)); + + if (!response) return { requestVerificationToken: null, cookie: null }; + + const regexp = new RegExp(` `${acc}${it};`, '') || null; + + if (!requestVerificationToken || !cookieString) throw new Error('getRequestVerificationToken failed'); + + return { + cookie: cookieString, + requestVerificationToken, + }; +}; diff --git a/src/utils/saddleback/getSchemaRefFromContent.ts b/src/utils/saddleback/getSchemaRefFromContent.ts new file mode 100644 index 000000000..2d2f43b12 --- /dev/null +++ b/src/utils/saddleback/getSchemaRefFromContent.ts @@ -0,0 +1,10 @@ +import { OpenApiMediaType } from '../../openApi/v3/interfaces/OpenApiMediaType'; +import { getNameFromRef } from './getNameFromRef'; + +export const getSchemaRefFromContent = (content: OpenApiMediaType): string => { + let ref: string = ''; + + ref = content.$ref || content.schema?.$ref || content.schema?.items?.$ref || ''; + + return getNameFromRef(ref); +}; diff --git a/src/utils/saddleback/getSessionCookie.ts b/src/utils/saddleback/getSessionCookie.ts new file mode 100644 index 000000000..831c022ef --- /dev/null +++ b/src/utils/saddleback/getSessionCookie.ts @@ -0,0 +1,50 @@ +import axios, { AxiosError } from 'axios'; +import FormData from 'form-data'; + +export const getSessionCookie = async ({ + username, + password, + requestVerificationToken, + url, + params, + cookie, +}: { + username: string; + password: string; + requestVerificationToken: string; + url: string; + params: Record; + cookie: string; +}): Promise<{ cookie: string }> => { + let cookieString = ''; + + try { + const form = new FormData(); + form.append('Username', username); + form.append('Password', password); + form.append('__RequestVerificationToken', requestVerificationToken); + + const response = await axios(`${url}`, { + method: 'POST', + data: form, + params, + headers: { + Cookie: cookie, + 'Content-Type': 'application/x-www-form-urlencoded', + }, + maxRedirects: 0, + }); + } catch (e) { + const error = e as AxiosError; + if (error.response && error.response.status === 302) { + const cookies = error.response?.headers['set-cookie'] || []; + cookieString = cookies.reduce((acc, it) => `${acc}${it};`, '') || ''; + } else { + throw new Error('Wrong response getSessionCookie'); + } + } finally { + if (cookieString.length === 0) throw new Error('Wrong cookies getSessionCookie'); + + return { cookie: cookieString }; + } +}; diff --git a/src/utils/saddleback/getStateNonce.ts b/src/utils/saddleback/getStateNonce.ts new file mode 100644 index 000000000..912f28d94 --- /dev/null +++ b/src/utils/saddleback/getStateNonce.ts @@ -0,0 +1,25 @@ +import axios, { AxiosError } from 'axios'; + +export const getStateNonce = async ({ + url, +}: { + url: string; +}): Promise<{ state: string | null; nonce: string | null }> => { + let [state, nonce]: [string | null, string | null] = [null, null]; + + const response = await axios(`${url.match(new RegExp('(.*)/api-doc/'))?.[0]}`, { + method: 'GET', + maxRedirects: 0, + }).catch(e => { + const response = e as AxiosError; + + if (response.response && response.response.status === 302) { + const location = response.response.headers?.location || ''; + + const newRegexp = new RegExp(`state=(.*)&nonce=(.*)[&$]`); + [state, nonce] = location.match(newRegexp)?.slice(1) || [null, null]; + } + }); + + return { state, nonce }; +}; diff --git a/src/utils/saddleback/getSwaggerJson.ts b/src/utils/saddleback/getSwaggerJson.ts new file mode 100644 index 000000000..f9c27fba0 --- /dev/null +++ b/src/utils/saddleback/getSwaggerJson.ts @@ -0,0 +1,19 @@ +import axios, { AxiosResponse } from 'axios'; + +export const getSwaggerJson = async ({ + url, + apiToken, +}: { + url: string; + apiToken: string; +}): Promise => { + const response = await axios(url, { + method: 'GET', + headers: { + Cookie: `apiKey=${apiToken}`, + }, + maxRedirects: 0, + }).catch(e => console.log(e)); + + return response ?? null; +}; diff --git a/src/utils/saddleback/getSwaggerJsonByEnv.ts b/src/utils/saddleback/getSwaggerJsonByEnv.ts new file mode 100644 index 000000000..34011412c --- /dev/null +++ b/src/utils/saddleback/getSwaggerJsonByEnv.ts @@ -0,0 +1,75 @@ +import { getApiToken } from './getApiToken'; +import { getRequestVerificationToken } from './getRequestVerificationToken'; +import { getSessionCookie } from './getSessionCookie'; +import { getStateNonce } from './getStateNonce'; +import { getSwaggerJson } from './getSwaggerJson'; +import { Environment, getUrlByServiceEnv, Service } from './getUrlByServiceEnv'; + +export const getSwaggerJsonByEnv = async ({ + env, + service, + username, + password, +}: { + env: Environment; + service: Service; + username: string; + password: string; +}): Promise => { + const swaggerUrl = getUrlByServiceEnv({ env, service }); + const loginUrl = `https://identity-dev.saddleback.com/account/login`; + const tokenUrl = `https://identity-dev.saddleback.com/connect/authorize/callback`; + + // params + const client_id = 'cm'; + const response_type = 'token'; + const scope = 'cm-api.default'; + const redirect_uri = (swaggerUrl.match(new RegExp(`https://.*?/`)) || [])[0] + '/api-doc-auth-callback'; + const response_mode = 'form_post'; + + const { state, nonce } = await getStateNonce({ url: swaggerUrl }); + + if (!state || !nonce) return null; + + // const state = 'e57a56201103b8bda3981515294649254a764612d871ecbe7a31efb8e3e66c8b'; + // const nonce = '78fd83bf2d178a5c5de18f9f7da3269b34f7daa07d4accc28cd0bdb87f9deee8'; + const returnUrl = `/connect/authorize/callback?client_id=${client_id}&response_type=${response_type}&scope=${scope}&redirect_uri=${redirect_uri}&state=${state}&nonce=${nonce}&response_mode=${response_mode}`; + + const { requestVerificationToken, cookie } = await getRequestVerificationToken({ + url: loginUrl, + params: { returnUrl }, + }); + + if (!requestVerificationToken || !cookie) return null; + + const { cookie: sessionCookie } = await getSessionCookie({ + url: loginUrl, + username, + password, + cookie, + requestVerificationToken, + params: { returnUrl }, + }); + + const { apiToken } = await getApiToken({ + url: tokenUrl, + cookie: sessionCookie, + params: { + client_id, + response_type, + scope, + redirect_uri, + state, + nonce, + response_mode, + }, + }); + + if (!apiToken) return null; + + const response = await getSwaggerJson({ url: swaggerUrl, apiToken: apiToken }); + + if (!response) return null; + + return response.data; +}; diff --git a/src/utils/saddleback/getUrlByServiceEnv.ts b/src/utils/saddleback/getUrlByServiceEnv.ts new file mode 100644 index 000000000..00e58f062 --- /dev/null +++ b/src/utils/saddleback/getUrlByServiceEnv.ts @@ -0,0 +1,35 @@ +export enum Service { + Workflows = 'Workflows', + Events = 'Events', + Notifications = 'Notifications', + Core = 'Core', + Journey = 'Journey', + Giving = 'Giving', + SmallGroup = 'SmallGroup', +} + +export enum Environment { + Dev = 'dev', + Stage = 'stage', + Stage2 = 'stage2', + Feature = 'feature', +} + +export const getUrlByServiceEnv = ({ env, service }: { service: Service; env: Environment }): string => { + switch (service) { + case Service.Core: + return `https://hc-${env}.saddleback.com/api-doc/all/swagger.json`; + case Service.Notifications: + return `https://hc-notificationservice-${env}.azurewebsites.net/api-doc/v1/swagger.json`; + case Service.Workflows: + return `https://hc-workflowsservice-${env}.azurewebsites.net/api-doc/v1/swagger.json`; + case Service.Events: + return `https://hc-eventservice-${env}.azurewebsites.net/api-doc/all/swagger.json`; + case Service.Journey: + return `https://hc-journeyservice-${env}.azurewebsites.net/api-doc/v1/swagger.json`; + case Service.Giving: + return `https://hc-givingservice-${env}.azurewebsites.net/api-doc/v1/swagger.json`; + case Service.SmallGroup: + return `https://hc-smallgroupservice-${env}.azurewebsites.net/api-doc/v1/swagger.json`; + } +}; diff --git a/src/utils/saddleback/recursiveAddAllUnknownModels.ts b/src/utils/saddleback/recursiveAddAllUnknownModels.ts new file mode 100644 index 000000000..f6bbdebee --- /dev/null +++ b/src/utils/saddleback/recursiveAddAllUnknownModels.ts @@ -0,0 +1,21 @@ +import { OpenApi } from '../../openApi/v3/interfaces/OpenApi'; +import { getNameFromRef } from './getNameFromRef'; + +export const recursiveAddAllUnknownModels = ( + modelName: string, + openApi: OpenApi, + requiredSchemasSet: Set +): void => { + const model = openApi.components?.schemas ? openApi.components.schemas[modelName] : undefined; + if (model === undefined) return; + + for (const property in model.properties) { + const ref = model.properties[property].$ref || model.properties[property].items?.$ref || ''; + const modelName = getNameFromRef(ref); + + if (!requiredSchemasSet.has(modelName)) { + requiredSchemasSet.add(modelName); + recursiveAddAllUnknownModels(modelName, openApi, requiredSchemasSet); + } + } +}; diff --git a/src/utils/writeClient.spec.ts b/src/utils/writeClient.spec.ts index 3c06a95a5..e62f7339f 100644 --- a/src/utils/writeClient.spec.ts +++ b/src/utils/writeClient.spec.ts @@ -18,11 +18,14 @@ describe('writeClient', () => { const templates: Templates = { index: () => 'index', + modelsIndex: () => 'modelsIndex', + serviceIndex: () => 'serviceIndex', client: () => 'client', exports: { model: () => 'model', schema: () => 'schema', service: () => 'service', + saddlebackService: () => 'saddlebackService', }, core: { settings: () => 'settings', @@ -49,6 +52,8 @@ describe('writeClient', () => { true, Indent.SPACE_4, 'Service', + false, + false, 'AppClient' ); diff --git a/src/utils/writeClient.ts b/src/utils/writeClient.ts index a0ffc1821..4130ffda8 100644 --- a/src/utils/writeClient.ts +++ b/src/utils/writeClient.ts @@ -1,7 +1,7 @@ import { resolve } from 'path'; import type { Client } from '../client/interfaces/Client'; -import type { HttpClient } from '../HttpClient'; +import { HttpClient } from '../HttpClient'; import type { Indent } from '../Indent'; import { mkdir, rmdir } from './fileSystem'; import { isDefined } from './isDefined'; @@ -13,6 +13,9 @@ import { writeClientIndex } from './writeClientIndex'; import { writeClientModels } from './writeClientModels'; import { writeClientSchemas } from './writeClientSchemas'; import { writeClientServices } from './writeClientServices'; +import { writeSaddlebackClientServices } from './writeSaddlebackClientServices'; +import { writeSaddlebackModelsIndex } from './writeSaddlebackModelsIndex'; +import { writeSaddlebackServiceIndex } from './writeSaddlebackServiceIndex'; /** * Write our OpenAPI client, using the given templates at the given output @@ -29,6 +32,8 @@ import { writeClientServices } from './writeClientServices'; * @param exportSchemas Generate schemas * @param indent Indentation options (4, 2 or tab) * @param postfix Service name postfix + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* * @param clientName Custom client class name * @param request Path to custom request file */ @@ -45,10 +50,13 @@ export const writeClient = async ( exportSchemas: boolean, indent: Indent, postfix: string, + additionalModelFileExtension: boolean, + additionalServiceFileExtension: boolean, clientName?: string, request?: string ): Promise => { const outputPath = resolve(process.cwd(), output); + const serviceName = output.split('/').slice(-1)[0]; const outputPathCore = resolve(outputPath, 'core'); const outputPathModels = resolve(outputPath, 'models'); const outputPathSchemas = resolve(outputPath, 'schemas'); @@ -67,17 +75,36 @@ export const writeClient = async ( if (exportServices) { await rmdir(outputPathServices); await mkdir(outputPathServices); - await writeClientServices( - client.services, - templates, - outputPathServices, - httpClient, - useUnionTypes, - useOptions, - indent, - postfix, - clientName - ); + if (httpClient === HttpClient.SADDLEBACK) { + await writeSaddlebackClientServices( + client.services, + templates, + outputPathServices, + httpClient, + useUnionTypes, + useOptions, + indent, + postfix, + additionalModelFileExtension, + additionalServiceFileExtension, + serviceName, + clientName + ); + } else { + await writeClientServices( + client.services, + templates, + outputPathServices, + httpClient, + useUnionTypes, + useOptions, + indent, + postfix, + additionalModelFileExtension, + additionalServiceFileExtension, + clientName + ); + } } if (exportSchemas) { @@ -89,15 +116,56 @@ export const writeClient = async ( if (exportModels) { await rmdir(outputPathModels); await mkdir(outputPathModels); - await writeClientModels(client.models, templates, outputPathModels, httpClient, useUnionTypes, indent); + await writeClientModels( + client.models, + templates, + outputPathModels, + httpClient, + useUnionTypes, + indent, + additionalModelFileExtension, + additionalServiceFileExtension + ); } if (isDefined(clientName)) { await mkdir(outputPath); await writeClientClass(client, templates, outputPath, httpClient, clientName, indent, postfix); } - + // write service index if (exportCore || exportServices || exportSchemas || exportModels) { + await mkdir(outputPath); + await writeSaddlebackServiceIndex( + client, + templates, + outputPathServices, + useUnionTypes, + exportServices, + postfix, + httpClient, + additionalModelFileExtension, + additionalServiceFileExtension, + clientName + ); + } + // write models index + if ((exportCore || exportServices || exportSchemas || exportModels) && httpClient !== HttpClient.SADDLEBACK) { + await mkdir(outputPath); + await writeSaddlebackModelsIndex( + client, + templates, + outputPathModels, + useUnionTypes, + exportModels, + postfix, + httpClient, + additionalModelFileExtension, + additionalServiceFileExtension, + clientName + ); + } + + if (exportCore || exportServices || exportSchemas || (exportModels && httpClient !== HttpClient.SADDLEBACK)) { await mkdir(outputPath); await writeClientIndex( client, @@ -109,6 +177,9 @@ export const writeClient = async ( exportModels, exportSchemas, postfix, + httpClient, + additionalModelFileExtension, + additionalServiceFileExtension, clientName ); } diff --git a/src/utils/writeClientClass.spec.ts b/src/utils/writeClientClass.spec.ts index 102f2eb57..7c9d01550 100644 --- a/src/utils/writeClientClass.spec.ts +++ b/src/utils/writeClientClass.spec.ts @@ -18,11 +18,14 @@ describe('writeClientClass', () => { const templates: Templates = { index: () => 'index', + modelsIndex: () => 'modelsIndex', + serviceIndex: () => 'serviceIndex', client: () => 'client', exports: { model: () => 'model', schema: () => 'schema', service: () => 'service', + saddlebackService: () => 'saddlebackService', }, core: { settings: () => 'settings', diff --git a/src/utils/writeClientCore.spec.ts b/src/utils/writeClientCore.spec.ts index 36990054e..f247a7160 100644 --- a/src/utils/writeClientCore.spec.ts +++ b/src/utils/writeClientCore.spec.ts @@ -20,11 +20,14 @@ describe('writeClientCore', () => { const templates: Templates = { index: () => 'index', + modelsIndex: () => 'modelsIndex', + serviceIndex: () => 'serviceIndex', client: () => 'client', exports: { model: () => 'model', schema: () => 'schema', service: () => 'service', + saddlebackService: () => 'saddlebackService', }, core: { settings: () => 'settings', diff --git a/src/utils/writeClientIndex.spec.ts b/src/utils/writeClientIndex.spec.ts index 6284dfd2e..2b4b6c2fa 100644 --- a/src/utils/writeClientIndex.spec.ts +++ b/src/utils/writeClientIndex.spec.ts @@ -1,4 +1,5 @@ import type { Client } from '../client/interfaces/Client'; +import { HttpClient } from '../HttpClient'; import { writeFile } from './fileSystem'; import type { Templates } from './registerHandlebarTemplates'; import { writeClientIndex } from './writeClientIndex'; @@ -16,11 +17,14 @@ describe('writeClientIndex', () => { const templates: Templates = { index: () => 'index', + modelsIndex: () => 'modelsIndex', + serviceIndex: () => 'serviceIndex', client: () => 'client', exports: { model: () => 'model', schema: () => 'schema', service: () => 'service', + saddlebackService: () => 'saddlebackService', }, core: { settings: () => 'settings', @@ -34,7 +38,20 @@ describe('writeClientIndex', () => { }, }; - await writeClientIndex(client, templates, '/', true, true, true, true, true, 'Service'); + await writeClientIndex( + client, + templates, + '/', + true, + true, + true, + true, + true, + 'Service', + HttpClient.AXIOS, + false, + false + ); expect(writeFile).toBeCalledWith('/index.ts', 'index'); }); diff --git a/src/utils/writeClientIndex.ts b/src/utils/writeClientIndex.ts index eaecd1b40..c4bfe2d0c 100644 --- a/src/utils/writeClientIndex.ts +++ b/src/utils/writeClientIndex.ts @@ -6,6 +6,7 @@ import { isDefined } from './isDefined'; import { Templates } from './registerHandlebarTemplates'; import { sortModelsByName } from './sortModelsByName'; import { sortServicesByName } from './sortServicesByName'; +import { HttpClient } from '../HttpClient'; /** * Generate the OpenAPI client index file using the Handlebar template and write it to disk. @@ -20,6 +21,9 @@ import { sortServicesByName } from './sortServicesByName'; * @param exportModels Generate models * @param exportSchemas Generate schemas * @param postfix Service name postfix + * @param httpClient The selected httpClient (fetch, xhr, node or axios) + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* * @param clientName Custom client class name */ export const writeClientIndex = async ( @@ -32,6 +36,9 @@ export const writeClientIndex = async ( exportModels: boolean, exportSchemas: boolean, postfix: string, + httpClient: HttpClient, + additionalModelFileExtension: boolean, + additionalServiceFileExtension: boolean, clientName?: string ): Promise => { const templateResult = templates.index({ @@ -47,6 +54,9 @@ export const writeClientIndex = async ( models: sortModelsByName(client.models), services: sortServicesByName(client.services), exportClient: isDefined(clientName), + httpClient, + additionalModelFileExtension, + additionalServiceFileExtension, }); await writeFile(resolve(outputPath, 'index.ts'), templateResult); diff --git a/src/utils/writeClientModels.spec.ts b/src/utils/writeClientModels.spec.ts index e147c8e73..888798cff 100644 --- a/src/utils/writeClientModels.spec.ts +++ b/src/utils/writeClientModels.spec.ts @@ -33,11 +33,14 @@ describe('writeClientModels', () => { const templates: Templates = { index: () => 'index', + modelsIndex: () => 'modelsIndex', + serviceIndex: () => 'serviceIndex', client: () => 'client', exports: { model: () => 'model', schema: () => 'schema', service: () => 'service', + saddlebackService: () => 'saddlebackService', }, core: { settings: () => 'settings', @@ -51,7 +54,7 @@ describe('writeClientModels', () => { }, }; - await writeClientModels(models, templates, '/', HttpClient.FETCH, false, Indent.SPACE_4); + await writeClientModels(models, templates, '/', HttpClient.FETCH, false, Indent.SPACE_4, false, false); expect(writeFile).toBeCalledWith('/User.ts', `model${EOL}`); }); diff --git a/src/utils/writeClientModels.ts b/src/utils/writeClientModels.ts index 997569b9f..a9f7a68a4 100644 --- a/src/utils/writeClientModels.ts +++ b/src/utils/writeClientModels.ts @@ -1,3 +1,4 @@ +import camelCase from 'camelcase'; import { resolve } from 'path'; import type { Model } from '../client/interfaces/Model'; @@ -16,6 +17,8 @@ import type { Templates } from './registerHandlebarTemplates'; * @param httpClient The selected httpClient (fetch, xhr, node or axios) * @param useUnionTypes Use union types instead of enums * @param indent Indentation options (4, 2 or tab) + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* */ export const writeClientModels = async ( models: Model[], @@ -23,14 +26,18 @@ export const writeClientModels = async ( outputPath: string, httpClient: HttpClient, useUnionTypes: boolean, - indent: Indent + indent: Indent, + additionalModelFileExtension: boolean, + additionalServiceFileExtension: boolean ): Promise => { for (const model of models) { - const file = resolve(outputPath, `${model.name}.ts`); + const file = resolve(outputPath, `${camelCase(model.name)}${additionalModelFileExtension ? '.models' : ''}.ts`); const templateResult = templates.exports.model({ ...model, httpClient, useUnionTypes, + additionalModelFileExtension, + additionalServiceFileExtension, }); await writeFile(file, i(f(templateResult), indent)); } diff --git a/src/utils/writeClientSchemas.spec.ts b/src/utils/writeClientSchemas.spec.ts index f71286232..62adec085 100644 --- a/src/utils/writeClientSchemas.spec.ts +++ b/src/utils/writeClientSchemas.spec.ts @@ -33,11 +33,14 @@ describe('writeClientSchemas', () => { const templates: Templates = { index: () => 'index', + modelsIndex: () => 'modelsIndex', + serviceIndex: () => 'serviceIndex', client: () => 'client', exports: { model: () => 'model', schema: () => 'schema', service: () => 'service', + saddlebackService: () => 'saddlebackService', }, core: { settings: () => 'settings', diff --git a/src/utils/writeClientServices.spec.ts b/src/utils/writeClientServices.spec.ts index b7ebbfe6c..f61e10f4d 100644 --- a/src/utils/writeClientServices.spec.ts +++ b/src/utils/writeClientServices.spec.ts @@ -21,11 +21,14 @@ describe('writeClientServices', () => { const templates: Templates = { index: () => 'index', + modelsIndex: () => 'modelsIndex', + serviceIndex: () => 'serviceIndex', client: () => 'client', exports: { model: () => 'model', schema: () => 'schema', service: () => 'service', + saddlebackService: () => 'saddlebackService', }, core: { settings: () => 'settings', @@ -39,7 +42,18 @@ describe('writeClientServices', () => { }, }; - await writeClientServices(services, templates, '/', HttpClient.FETCH, false, false, Indent.SPACE_4, 'Service'); + await writeClientServices( + services, + templates, + '/', + HttpClient.FETCH, + false, + false, + Indent.SPACE_4, + 'Service', + false, + false + ); expect(writeFile).toBeCalledWith('/UserService.ts', `service${EOL}`); }); diff --git a/src/utils/writeClientServices.ts b/src/utils/writeClientServices.ts index 2f95341d2..834d36d88 100644 --- a/src/utils/writeClientServices.ts +++ b/src/utils/writeClientServices.ts @@ -19,6 +19,8 @@ import type { Templates } from './registerHandlebarTemplates'; * @param useOptions Use options or arguments functions * @param indent Indentation options (4, 2 or tab) * @param postfix Service name postfix + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* * @param clientName Custom client class name */ export const writeClientServices = async ( @@ -30,10 +32,15 @@ export const writeClientServices = async ( useOptions: boolean, indent: Indent, postfix: string, + additionalModelFileExtension: boolean, + additionalServiceFileExtension: boolean, clientName?: string ): Promise => { for (const service of services) { - const file = resolve(outputPath, `${service.name}${postfix}.ts`); + const file = resolve( + outputPath, + `${service.name}${postfix}${additionalServiceFileExtension ? '.service' : ''}.ts` + ); const templateResult = templates.exports.service({ ...service, httpClient, @@ -41,6 +48,8 @@ export const writeClientServices = async ( useOptions, postfix, exportClient: isDefined(clientName), + additionalModelFileExtension, + additionalServiceFileExtension, }); await writeFile(file, i(f(templateResult), indent)); } diff --git a/src/utils/writeSaddlebackClientServices.ts b/src/utils/writeSaddlebackClientServices.ts new file mode 100644 index 000000000..658e15e0c --- /dev/null +++ b/src/utils/writeSaddlebackClientServices.ts @@ -0,0 +1,59 @@ +import camelCase from 'camelcase'; +import { resolve } from 'path'; + +import type { Service } from '../client/interfaces/Service'; +import type { HttpClient } from '../HttpClient'; +import type { Indent } from '../Indent'; +import { writeFile } from './fileSystem'; +import { formatCode as f } from './formatCode'; +import { formatIndentation as i } from './formatIndentation'; +import { isDefined } from './isDefined'; +import type { Templates } from './registerHandlebarTemplates'; + +/** + * Generate Services using the Handlebar template and write to disk. + * @param services Array of Services to write + * @param templates The loaded handlebar templates + * @param outputPath Directory to write the generated files to + * @param httpClient The selected httpClient (fetch, xhr, node or axios) + * @param useUnionTypes Use union types instead of enums + * @param useOptions Use options or arguments functions + * @param indent Indentation options (4, 2 or tab) + * @param postfix Service name postfix + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* + * @param clientName Custom client class name + */ +export const writeSaddlebackClientServices = async ( + services: Service[], + templates: Templates, + outputPath: string, + httpClient: HttpClient, + useUnionTypes: boolean, + useOptions: boolean, + indent: Indent, + postfix: string, + additionalModelFileExtension: boolean, + additionalServiceFileExtension: boolean, + serviceName: string, + clientName?: string +): Promise => { + for (const service of services) { + const file = resolve( + outputPath, + `${camelCase(service.name)}${postfix}${additionalServiceFileExtension ? '.service' : ''}.ts` + ); + const templateResult = templates.exports.saddlebackService({ + ...service, + httpClient, + useUnionTypes, + useOptions, + postfix, + exportClient: isDefined(clientName), + additionalModelFileExtension, + additionalServiceFileExtension, + serviceName, + }); + await writeFile(file, i(f(templateResult), indent)); + } +}; diff --git a/src/utils/writeSaddlebackModelsIndex.ts b/src/utils/writeSaddlebackModelsIndex.ts new file mode 100644 index 000000000..5f776b95b --- /dev/null +++ b/src/utils/writeSaddlebackModelsIndex.ts @@ -0,0 +1,54 @@ +import { resolve } from 'path'; + +import type { Client } from '../client/interfaces/Client'; +import { HttpClient } from '../HttpClient'; +import { writeFile } from './fileSystem'; +import { isDefined } from './isDefined'; +import { Templates } from './registerHandlebarTemplates'; +import { sortModelsByName } from './sortModelsByName'; +import { sortServicesByName } from './sortServicesByName'; + +/** + * Generate the OpenAPI client index file using the Handlebar template and write it to disk. + * The index file just contains all the exports you need to use the client as a standalone + * library. But yuo can also import individual models and services directly. + * @param client Client object, containing, models, schemas and services + * @param templates The loaded handlebar templates + * @param outputPath Directory to write the generated files to + * @param useUnionTypes Use union types instead of enums + * @param exportModels Generate models + * @param postfix Service name postfix + * @param httpClient The selected httpClient (fetch, xhr, node or axios) + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* + * @param clientName Custom client class name + */ +export const writeSaddlebackModelsIndex = async ( + client: Client, + templates: Templates, + outputPath: string, + useUnionTypes: boolean, + exportModels: boolean, + postfix: string, + httpClient: HttpClient, + additionalModelFileExtension: boolean, + additionalServiceFileExtension: boolean, + clientName?: string +): Promise => { + const templateResult = templates.modelsIndex({ + exportModels, + useUnionTypes, + postfix, + clientName, + server: client.server, + version: client.version, + models: sortModelsByName(client.models), + services: sortServicesByName(client.services), + exportClient: isDefined(clientName), + httpClient, + additionalModelFileExtension, + additionalServiceFileExtension, + }); + + await writeFile(resolve(outputPath, 'index.ts'), templateResult); +}; diff --git a/src/utils/writeSaddlebackServiceIndex.ts b/src/utils/writeSaddlebackServiceIndex.ts new file mode 100644 index 000000000..c7c209c58 --- /dev/null +++ b/src/utils/writeSaddlebackServiceIndex.ts @@ -0,0 +1,54 @@ +import { resolve } from 'path'; + +import type { Client } from '../client/interfaces/Client'; +import { HttpClient } from '../HttpClient'; +import { writeFile } from './fileSystem'; +import { isDefined } from './isDefined'; +import { Templates } from './registerHandlebarTemplates'; +import { sortModelsByName } from './sortModelsByName'; +import { sortServicesByName } from './sortServicesByName'; + +/** + * Generate the OpenAPI client index file using the Handlebar template and write it to disk. + * The index file just contains all the exports you need to use the client as a standalone + * library. But yuo can also import individual models and services directly. + * @param client Client object, containing, models, schemas and services + * @param templates The loaded handlebar templates + * @param outputPath Directory to write the generated files to + * @param useUnionTypes Use union types instead of enums + * @param exportServices Generate services + * @param postfix Service name postfix + * @param httpClient The selected httpClient (fetch, xhr, node or axios) + * @param additionalModelFileExtension Add file extension for models *.models.* + * @param additionalServiceFileExtension Add file extension for service *.service.* + * @param clientName Custom client class name + */ +export const writeSaddlebackServiceIndex = async ( + client: Client, + templates: Templates, + outputPath: string, + useUnionTypes: boolean, + exportServices: boolean, + postfix: string, + httpClient: HttpClient, + additionalModelFileExtension: boolean, + additionalServiceFileExtension: boolean, + clientName?: string +): Promise => { + const templateResult = templates.serviceIndex({ + exportServices, + useUnionTypes, + postfix, + clientName, + server: client.server, + version: client.version, + models: sortModelsByName(client.models), + services: sortServicesByName(client.services), + exportClient: isDefined(clientName), + httpClient, + additionalModelFileExtension, + additionalServiceFileExtension, + }); + + await writeFile(resolve(outputPath, 'index.ts'), templateResult); +}; diff --git a/test/index.js b/test/index.js index 6d276c412..608421849 100644 --- a/test/index.js +++ b/test/index.js @@ -57,8 +57,57 @@ const generateRealWorldSpecs = async () => { }; const main = async () => { - await generate('./test/spec/v2.json', './test/generated/v2/'); - await generate('./test/spec/v3.json', './test/generated/v3/'); + // await generate('./test/spec/v2.json', './test/generated/v2/'); + // await generate('./test/spec/v3.json', './test/generated/v3/'); + const config = { + httpClient: 'saddleback', + clientName: '', + useOptions: true, + useUnionTypes: false, + exportCore: false, + exportServices: true, + exportModels: true, + exportSchemas: false, + indent: '4', + postfix: '', + additionalModelFileExtension: true, + additionalServiceFileExtension: true, + removeLodashPrefixes: true, + useEnvironment: 'feature', + filterMethod: 'include', + }; + // await OpenAPI.generateSaddlebackSpec({ + // output: './test/auto', + // ...config, + // }); + // await OpenAPI.generateSaddlebackSpec({ + // useService: 'core', + // output: './auto/core', + // ...config, + // }); + await OpenAPI.generateSaddlebackSpec({ + useService: 'Events', + output: './auto2/event', + filterMethod: "include", + filterArray: [ + "/api/v2/event-public", + "/api/v2/event-public/cancel-reservation", + "/api/v2/event-public/signup", + "/api/v2/event-public/reserve-tickets" + ], + ...config, + }); + // await OpenAPI.generateSaddlebackSpec({ + // useService: 'workflows', + // output: './auto/workflows', + // ...config, + // }); + // await OpenAPI.generateSaddlebackSpec({ + // useService: 'notifications', + // output: './auto/notifications', + // ...config, + // }); + // await generateRealWorldSpecs(); }; diff --git a/test/spec/saddlebackCoreApi.json b/test/spec/saddlebackCoreApi.json new file mode 100644 index 000000000..9a51e65a3 --- /dev/null +++ b/test/spec/saddlebackCoreApi.json @@ -0,0 +1,80485 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "CM Core API", + "version": "v1" + }, + "paths": { + "/api/agreement": { + "get": { + "tags": [ + "Agreement" + ], + "summary": "Gets all Active Agreements", + "description": "**Data Access:**
\r\nREAD access to active Agreements", + "operationId": "GetAllActiveAgreements", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + } + } + } + } + } + } + }, + "/api/agreement/{id}": { + "get": { + "tags": [ + "Agreement" + ], + "summary": "Gets Agreement by its ID", + "description": "**Data Access:**
\r\nREAD access to the details of a single specified Agreement", + "operationId": "GetAgreementById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Agreement ID (integer)", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + } + } + }, + "404": { + "description": "Not Found" + } + } + }, + "put": { + "tags": [ + "Agreement" + ], + "summary": "Updates an Agreement (which creates a new version of it)", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n
\r\n**Data Access:**
\r\nWRITE access to the detals of a single specified Agreement\r\n\r\n**More Information:**
\r\nAnonymous access is allowed to support scenarios like consent via verification\r\ntoken \"workflow\" in which the agreement must be displayed to unauthenticated\r\nusers.", + "operationId": "UpdateAgreement", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/agreement/latest": { + "get": { + "tags": [ + "Agreement" + ], + "summary": "Gets the latest version of an Agreement as specified by its name", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD access to the details of a single specified Agreement\r\n\r\n**More Information:**
\r\nAnonymous access is allowed to support scenarios like consent via verification\r\ntoken \"workflow\" in which the agreement must be displayed to unauthenticated\r\nusers.", + "operationId": "GetLatestVersionOfAgreementByName", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "Agreement name (string)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/connection-question/answer-source": { + "get": { + "tags": [ + "AnswerSource" + ], + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/rate-limit/client-options": { + "get": { + "tags": [ + "ApiRateLimit" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetClientRateLimit", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "ApiRateLimit" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostClientRateLimit", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ClientRateLimitOptions" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ClientRateLimitOptions" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ClientRateLimitOptions" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ClientRateLimitOptions" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/ip-options": { + "get": { + "tags": [ + "ApiRateLimit" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetIpRateLimit", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "ApiRateLimit" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostIpRateLimit", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IpRateLimitOptions" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IpRateLimitOptions" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IpRateLimitOptions" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IpRateLimitOptions" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/app-settings": { + "get": { + "tags": [ + "ApplicationSettings" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/app-settings/{id}": { + "put": { + "tags": [ + "ApplicationSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "Update", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ApplicationSettingsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ApplicationSettingsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ApplicationSettingsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ApplicationSettingsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/app-settings/logo-image": { + "post": { + "tags": [ + "ApplicationSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "UploadDashboardImage", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/app-settings/cke-comments-key": { + "get": { + "tags": [ + "ApplicationSettings" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetCKECommentsKey", + "parameters": [ + { + "name": "clientId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/basic-content/{contentId}": { + "get": { + "tags": [ + "BasicContent" + ], + "summary": "Returns Basic Content from provider by contenteId", + "operationId": "GetBasicContentByContentId", + "parameters": [ + { + "name": "contentId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/basic-content": { + "get": { + "tags": [ + "BasicContent" + ], + "summary": "Returns all Basic Content from provider for a given content type", + "operationId": "GetBasicContentsByContentType", + "parameters": [ + { + "name": "contentType", + "in": "query", + "description": "ContentType to retrieve contents for", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/basic-content/learn-more-menu": { + "get": { + "tags": [ + "BasicContent" + ], + "summary": "Returns all Basic Content from the CMS provider of type \"LearnMoreMenuContent\"", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetLearnMoreMenuContent", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/bootstrap": { + "get": { + "tags": [ + "Bootstrap" + ], + "operationId": "GetBootstrap", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/enumerations": { + "get": { + "tags": [ + "Bootstrap" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetEnumerationsAsync", + "parameters": [ + { + "name": "expand", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/churchentity": { + "get": { + "tags": [ + "ChurchEntity" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "includeInactive", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "ChurchEntity" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + } + }, + "/api/churchentity/{id}": { + "get": { + "tags": [ + "ChurchEntity" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "ChurchEntity" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + }, + "delete": { + "tags": [ + "ChurchEntity" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + } + }, + "/api/churchentity/{id}/reactivate": { + "put": { + "tags": [ + "ChurchEntity" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "MakeActive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + } + }, + "/api/churchentity/{id}/deactivate": { + "put": { + "tags": [ + "ChurchEntity" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "MakeInactive", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + } + }, + "/api/church-entity-region": { + "get": { + "tags": [ + "ChurchEntityRegion" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "ChurchEntityRegion" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + } + }, + "/api/church-entity-region/{id}": { + "get": { + "tags": [ + "ChurchEntityRegion" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "ChurchEntityRegion" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ChurchEntityRegion" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + }, + "delete": { + "tags": [ + "ChurchEntityRegion" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + } + }, + "/api/rate-limit/clients": { + "get": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetClients", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostClient", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/clients/{clientId}": { + "get": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetClientsById", + "parameters": [ + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "UpdateClientsById", + "parameters": [ + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Client" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/clients/{id}/policy": { + "get": { + "tags": [ + "Client" + ], + "operationId": "GetClientPolicyById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/rate-limit/clients/{clientId}/rules": { + "get": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetRateLimitRuleByClientId", + "parameters": [ + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostClientRateLimitRules", + "parameters": [ + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/clients/{clientId}/rules/{ruleId}": { + "put": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "UpdateClientsRule", + "parameters": [ + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Client" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "DeleteClientsRule", + "parameters": [ + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/communication-list/segment": { + "get": { + "tags": [ + "CommunicationListSegment" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/communication-list/subscriber/{email}/segment": { + "get": { + "tags": [ + "CommunicationListSubscriber" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Person Email Subscriptions
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "email", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "302": { + "description": "Redirect" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Person Email Subscriptions" + ] + } + ] + } + } + }, + "/api/communication-list/subscriber/{personId}": { + "get": { + "tags": [ + "CommunicationListSubscriber" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Person Email Subscriptions
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "excludeManagedSegments", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "302": { + "description": "Redirect" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Person Email Subscriptions" + ] + } + ] + } + } + }, + "/api/communication-list/subscriber": { + "post": { + "tags": [ + "CommunicationListSubscriber" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Email Subscriptions
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "302": { + "description": "Redirect" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Email Subscriptions" + ] + } + ] + } + }, + "delete": { + "tags": [ + "CommunicationListSubscriber" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Email Subscriptions
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SubscriberSegmentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "302": { + "description": "Redirect" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Email Subscriptions" + ] + } + ] + } + } + }, + "/api/communication-template/{id}": { + "get": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Gets Communication template by ID", + "description": "**Data Access:**
\r\nREAD Access to a single specified Communication templates.", + "operationId": "GetCommunicationTemplateById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Communication template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeThumbnail", + "in": "query", + "description": "Boolean flag indicating whether or not to include thumnail URL", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "keepRazorSyntax", + "in": "query", + "description": "Boolean flag indicating whether or not any Razor syntax in the Email Body Content Template\r\nneeds to be translated into UI-friendly markers.
\r\nShould be True if the caller wishes to keep the Email Body Content Template as Razor (i.e. to use the template to construct and send an email message).
\r\nShould be False (or omitted as this is the default) to translate the Razor syntax into UI-friendly markers (i.e. to fetch the template for editing in the UI, using a tool like CKEditor or Unlayer).", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Communication template." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + } + }, + "put": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Updates Communication template", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Communication Template, Update Event, Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Communication Templates.\r\n\r\n**More Info:**
\r\nThis operation is presently restricted to callers with 'Manage Follow Up Rules' permission.\r\nAs of right now, building Follow Up Rules is the only feature that also requires updating\r\nCommunication Templates (e.g. being able to update the Email template associated to an Email Rule Action).\r\n\r\nIn a future iteration, Communication Template management will become a feature in its own right,\r\nand likely at this time, dedicated permissions for that feature will be utilized here.", + "operationId": "UpdateCommunicationTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Communication Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Communication template Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Communication template." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Referenced Communication Template not found." + }, + "409": { + "description": "Updated Communication Template would conflict with a different one (violating a uniqueness constraint)." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Communication Template" + ] + }, + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + }, + "delete": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Deletes Communication template", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Communication Template, Update Event, Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Communication templates.\r\n\r\n**More Info:**
\r\nThis operation is presently restricted to callers with 'Manage Follow Up Rules' permission, simply as a precaution.\r\nAs of right now, there is no use for this endpoint.\r\n\r\nIn a future iteration, Communication Template management will become a feature in its own right,\r\nand likely at this time, dedicated permissions for that feature will be utilized here.", + "operationId": "DeleteCommunicationTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Communication template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Communication template was deleted successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Communication Template" + ] + }, + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/communication-template": { + "get": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Search/Browse Communications Templates", + "description": "**Data Access:**
\r\nREAD Access to Communication Templates.", + "operationId": "Search", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "churchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "isSystem", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "isEmail", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "isSms", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "isActive", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Communication templates list." + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Creates Communication template", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Communication Template, Update Event, Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Communication Templates.\r\n\r\n**More Info:**
\r\nThis operation is presently restricted to callers with 'Manage Follow Up Rules' or 'Update Events' permission.\r\nAs of right now, building Follow Up Rules and/or creating a Custom Registration Response Email Template are the only features that also require creation of\r\nnew Communication Templates.
\r\n\r\nIn a future iteration, Communication Template management will become a feature in its own right,\r\nand likely at this time, dedicated permissions for that feature will be utilized here.", + "operationId": "CreateCommunicationTemplate", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Communication Template Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Communication Template." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "409": { + "description": "New Communication Template conflicts with an existing one (violating a uniqueness constraint)." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Communication Template" + ] + }, + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/communication-template/name": { + "get": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Gets Communication Template by Name and Campus (Church Entity) ID", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD Access to a single specified Communication Templates.\r\n\r\n**More Info:**
\r\nThis operation is presently restricted to callers with 'Internal System' resource scope,\r\nas it is presently only used by REST SDK for obtaining Communication Templates in other Microservices.

\r\nCommunication Template Names are constrained to be unique per Campus (Church Entity), so Name + Church Entity ID is a unique key.", + "operationId": "GetTemplateByName", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "Campus (Church Entity) ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "name", + "in": "query", + "description": "Communication Template Name", + "schema": { + "type": "string" + } + }, + { + "name": "includeThumbnail", + "in": "query", + "description": "Boolean flag indicating whether or not to include thumnail URL", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "keepRazorSyntax", + "in": "query", + "description": "", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Communication template." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/communication-template/{communicationTemplateId}/embedded-image": { + "post": { + "tags": [ + "CommunicationTemplate" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Event, Manage Follow Up Rules
\r\n", + "operationId": "UploadEmbeddedImage", + "parameters": [ + { + "name": "communicationTemplateId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/communication-template/{communicationTemplateId}/attachment": { + "post": { + "tags": [ + "CommunicationTemplate" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Communication Template, Update Event, Manage Follow Up Rules
\r\n", + "operationId": "UploadEmailAttachment", + "parameters": [ + { + "name": "communicationTemplateId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Communication Template" + ] + }, + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/communication-template/attachment": { + "post": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Uploads attachment to temporary location", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Communication Template, Update Event, Manage Follow Up Rules
\r\n", + "operationId": "UploadEmailAttachment", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Communication Template" + ] + }, + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/communication-template/attachment/{uuid}": { + "delete": { + "tags": [ + "CommunicationTemplate" + ], + "summary": "Deletes temporary attachment", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Communication Template, Update Event, Manage Follow Up Rules
\r\n", + "operationId": "DeleteTempAttachment", + "parameters": [ + { + "name": "uuid", + "in": "path", + "description": "UUID part of Attachment ID to delete", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Communication Template" + ] + }, + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/communication-template/{id}/attachment/{attachmentId}": { + "delete": { + "tags": [ + "CommunicationTemplate" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Event, Manage Follow Up Rules
\r\n", + "operationId": "DeleteEmailTemplateAttachment", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "attachmentId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/connection-form/entry/{id}": { + "get": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Gets Connection Form Entry by ID", + "description": "**Inline Authorization Checks:**
\r\nAccess to this resource is granted to:
\r\n* Callers with the \"Internal Systems\" API Resource Scope
\r\n* Callers with \"Read Connection Form Entries\" Permission with an applicable permission scope
\r\n* The \"Person Record Owner\" (the person to whom the Connection From Entry pertains is allowed to request his/her own data)\r\n\r\n**Data Access:**
\r\nREAD access to the details of a single Connection Form Entry", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Form Entry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Connection Form Entry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + } + }, + "put": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Updates a Connection Form Entry", + "description": "**Inline Authorization Checks:**
\r\nAccess to this resource is granted to:
\r\n* Callers with \"Update Connection Form Entry\" permission with an applicable permission scope
\r\n* The \"Person Record Owner\" (the person to whom the Connection Form Entry pertains is allowed to update his/her own data)\r\n\r\n**Data Access:**
\r\nWRITE (UPDATE) Access to the details of a single Connection Form Entry (form response).", + "operationId": "Update", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Connection form data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated Connection Form Entry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + } + } + }, + "400": { + "description": "Invalid body." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found." + } + } + }, + "delete": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Deletes Connection Form Entry", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Connection form entries", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form entry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection form entry was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + } + } + }, + "/api/connection-form/entry": { + "get": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Gets a filtered, paginated list of Connection Form Entries meeting the specified search criteria, suitable for \"Search & Browse\" type scenarios", + "description": "**Inline Authorization Checks:**
\r\nAccess to this resource is granted to:
\r\n* Callers with \"Read Connection Form Entries\" permission with an applicable permission scope
\r\n* The \"Person Record Owner\" (the person to whom the Connection Card Entry pertains is allowed to request his/her own data).
\r\n * This only applies if the **PersonId** parameter is specified.\r\n\r\n**Data Access:**
\r\nREAD access to a paginated list of top-level metadata for a list Connection Form Entries (form responses)\r\nmatching the specified search criteria. Includes some basic Person demographic and contact information and\r\nthe \"Core Milestones\" data (typeical for \"Person 2.0\" style listings) for the Person to which each form\r\nresponse pertains.", + "operationId": "GetFiltered", + "parameters": [ + { + "name": "FormId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EventTime", + "in": "query", + "schema": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string" + } + }, + { + "name": "Anonymous", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns List of filtered Connection Form Entry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_ConnectionFormEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_ConnectionFormEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_ConnectionFormEntryViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Creates a new Connection Form Entry", + "description": "**Inline Authorization Checks:**
\r\nCallers must have the \"Create Connection Form Entry\" permission with an applicable permission scope.
\r\n\r\n**Data Access:**
\r\nWRITE (CREATE) Access to Connection Form Entries.\r\n\r\n**More Info:**
\r\nThere is a separate public-facing Create/POST endpoint that should be used for most integration scenarios.
\r\nThis endpoint is strictly intendend for Form data entry as a feature within the Healthy Church Admin application.", + "operationId": "Create", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Connection form data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Connection Form Entry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + } + } + }, + "400": { + "description": "Invalid body." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/connection-form/entry/lite/{id}": { + "get": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Gets \"lite\" Connection Form Entry data", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Connection Form Entries
\r\n
\r\n**Data Access:**
\r\nREAD access to the top-level metadata details of a single Connection Form Entry.\r\n\r\n**More Info:**
\r\nMostly intended for REST SDK and inter-service communication.", + "operationId": "GetLiteById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Form Entry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Connection Form Entry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryLiteViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Connection Form Entries" + ] + } + ] + } + } + }, + "/api/connection-form/entry/{id}/date": { + "put": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Updates a Connection Form Entry Date", + "description": "**Inline Authorization Checks:**
\r\nCampus scoped and connection form scoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Connection form entries", + "operationId": "UpdateDate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "New entry date-time and timezone", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryDateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryDateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryDateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryDateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated Connection Form Entry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + } + } + } + }, + "400": { + "description": "Invalid body." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found." + } + } + } + }, + "/api/connection-form/entry/event-association": { + "put": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Performs Bulk Update on specified Connection Form Entries to change the Event/Occurrence association", + "description": "**Inline Authorization Checks:**
\r\nCaller must have \"Update Connection Form Entry\" permission with scope including the applicable Campus or Form Template for each specified Form Entry.\r\n\r\n**Data Access:**
\r\nWRITE (Update) Access to Connection Form Entries", + "operationId": "BulkUpdateEventAssociation", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkUpdateEventOccurrenceAssociationRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkUpdateEventOccurrenceAssociationRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkUpdateEventOccurrenceAssociationRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkUpdateEventOccurrenceAssociationRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Operation succeeded." + }, + "400": { + "description": "Invalid request." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/connection-form/entry/bulk-delete": { + "post": { + "tags": [ + "ConnectionFormEntry" + ], + "summary": "Bulk Delete Form Entries", + "description": "**Inline Authorization Checks:**
\r\nCaller must have \"Delete Connection Form Entry\" permission with scope including the applicable Campus or Form Template.
\r\n**NOTE:** All specified Form Entries must belong to the same Form Template; otherwise the request is considered invalid.\r\n\r\n**Data Access:**
\r\nDELETE access to Connection Form Entries.", + "operationId": "BulkDelete", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Bulk deletion request (collection of Form Entry IDs in POST body)", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkDeleteFormEntryRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkDeleteFormEntryRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkDeleteFormEntryRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_BulkDeleteFormEntryRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Connection Form Entries were deleted successfully." + }, + "400": { + "description": "Invalid request." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/connection-form/entry/export/preview": { + "get": { + "tags": [ + "ConnectionFormEntry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Connection Form Data
\r\n", + "operationId": "GetDataExportPreview", + "parameters": [ + { + "name": "FormId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Connection Form Data" + ] + } + ] + } + } + }, + "/api/connection-form/entry/export/request": { + "post": { + "tags": [ + "ConnectionFormEntry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Connection Form Data
\r\n", + "operationId": "RequestDataExport", + "parameters": [ + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "FormId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Connection Form Data" + ] + } + ] + } + } + }, + "/api/connection-form-public/template/{id}": { + "get": { + "tags": [ + "ConnectionFormPublic" + ], + "summary": "Gets Public Connection Form by ID", + "description": "**Data Access:**
\r\nREAD details of a single Published, Active Connection Form Template by specified ID.
\r\nAvailable to anonymous callers.", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns details of specified Connection Form.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Requested Connection Form might be inactive or unpublished." + }, + "404": { + "description": "Requested Connection Form not found." + } + } + } + }, + "/api/connection-form-public/template": { + "get": { + "tags": [ + "ConnectionFormPublic" + ], + "summary": "Gets filtered and paginated list of Published, Active Connection Form Templates", + "description": "**Data Access:**
\r\nREAD details to a list of top-level details of Published, Active Connection Form Templates meeting\r\nthe specified filter parameters.
\r\nAvailable to anonymous callers.", + "operationId": "GetFiltered", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Type", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ConnectionFormType" + } + }, + { + "name": "IsActive", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPublished", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns filtered, paginated list of filtered Connection Form Templates.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/connection-form-public/entry": { + "post": { + "tags": [ + "ConnectionFormPublic" + ], + "summary": "Creates a new Connection Form Entry", + "description": "**Data Access:**
\r\nWRITE access to create a new Connection Form Entry.
\r\n\r\n* Allows anonymous callers to create entry with no person association, or by specifying First Name, Last Name and Email (plus other desired demographic and contact data).\r\n* Authenticated callers can only create Form Entries for themselves (nor for another person).", + "operationId": "CreateEntry", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionForms.Public.ConnectionFormEntryPublicCreateRequestViewModel Connection Form Entry to Create", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPublicCreateRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPublicCreateRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPublicCreateRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPublicCreateRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Connection Form." + }, + "400": { + "description": "Request not valid." + }, + "403": { + "description": "Not authorized.
\r\nThe target Form Template must be Active and Published.
\r\nCallers attempting to post a new Form Entry can be anonymous/unauthenticated\r\nbut generally should not attempt to create a Connection Form Entry for a different person." + }, + "404": { + "description": "Specified Connection Form Template not found." + } + } + } + }, + "/api/connection-form/{id}": { + "get": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Gets Connection Form by ID", + "description": "**Inline Authorization Checks:**
\r\nCampus scoped and connection form scoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nREAD access to the details of a single Connection Form", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeOwnerAndContributorDetails", + "in": "query", + "description": "Boolean flag indicating whether or not to hydrate basic user/person info for the Form Owner and Form Contributors.\r\nOptional; defaults to False.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Connection Form.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + } + }, + "put": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Updates a Connection Form", + "description": "**Inline Authorization Checks:**
\r\nCampus scoped and connection form scoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Connection forms", + "operationId": "Update", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Connection form data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated Connection Form.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "400": { + "description": "Invalid body." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found." + } + } + }, + "delete": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Deletes Connection Form", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Connection forms", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection form was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + } + } + }, + "/api/connection-form": { + "get": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Gets filtered Connection Forms", + "description": "**Inline Authorization Checks:**
\r\nCampus scoped and connection form scoped permission filtering is applied for entity list\r\n\r\n**Data Access:**
\r\nREAD access to Connection Forms", + "operationId": "GetFiltered", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Type", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ConnectionFormType" + } + }, + { + "name": "IsActive", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPublished", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns List of filtered Connection Form.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplatesViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplatesViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplatesViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Creates a new Connection Form", + "description": "**Inline Authorization Checks:**
\r\nCampus scoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Connection forms", + "operationId": "Create", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Connection form data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Connection Form.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "400": { + "description": "Invalid body." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/connection-form/{id}/follow-up-rule-counts": { + "get": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Gets Follow Up Rule Counts for specified Connection Form Template and its associated Questions (Form Fields)", + "description": "**Inline Authorization Checks:**
\r\nRequires \"Manage Follow Up Rules\" permission AND \"Read Connection Form\" permission with scope including the specified Form Template or the Form template's Campus.\r\n\r\n**Data Access:**
\r\nREAD access to Follow Up Rule Counts on Form Template and its associated Questions (Form Fields)", + "operationId": "GetFollowUpRuleCounts", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Form Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeSystemRules", + "in": "query", + "description": "Boolean flag indicating whether or not System Follow Up Rules should be included when reporting the Rule Count.\r\nOptional: defaults to false.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Connection Form Template Follow Up Rule Counts data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateFollowUpRulesCount" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateFollowUpRulesCount" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateFollowUpRulesCount" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Connection Form Template not found." + } + } + } + }, + "/api/connection-form/campuses": { + "get": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Gets list of Campuses that have Connection Form Templates", + "description": "**Data Access:**
\r\nREAD access to a list of Campuses that have Connection Form Templates. No real sensitive or protected data is accessed.", + "operationId": "GetCampusesWithConnectionForms", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Connection Form Template Follow Up Rule Counts data.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ChurchEntityViewModel" + } + } + } + } + } + } + } + }, + "/api/connection-form/{id}/owner": { + "put": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Updates a Connection Form owner", + "description": "**Inline Authorization Checks:**
\r\nCampus scoped and connection form scoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nUPDATE Access for Connection form owners", + "operationId": "UpdateFormOwner", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionForms.ConnectionFormOwnerViewModel: New form owner person data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormOwnerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormOwnerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormOwnerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormOwnerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated Connection Form.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "400": { + "description": "Invalid body." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found." + } + } + } + }, + "/api/connection-form/{id}/contributor": { + "put": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Updates a Connection Form person contributors", + "description": "**Inline Authorization Checks:**
\r\nCampus scoped and connection form scoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nUPDATE Access for Connection form contributors", + "operationId": "UpdateFormContributors", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionForms.ConnectionFormContributorsViewModel: New form contributors data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormContributorsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormContributorsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormContributorsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormContributorsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated Connection Form.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + } + } + }, + "400": { + "description": "Invalid body." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found." + } + } + } + }, + "/api/connection-form/{id}/publish": { + "put": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Publish Connection Form", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Connection forms", + "operationId": "Publish", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection form was published successfully." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + } + } + }, + "/api/connection-form/{id}/unpublish": { + "put": { + "tags": [ + "ConnectionFormTemplate" + ], + "summary": "Unpublish Connection Form", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Connection forms", + "operationId": "Unpublish", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection form ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection form was unpublished successfully." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + } + } + }, + "/api/connection-question/search": { + "get": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Searches Connection Questions", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "QuestionTypeFilter", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MilestoneFilter", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ActiveFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AnswerSourceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionsSearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionsSearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionsSearchResultsViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}": { + "get": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Gets a Connection Question by ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionDetailedViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionDetailedViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionDetailedViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + }, + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Updates a Connection Question", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question": { + "get": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Gets Connection Questions by IDs", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "GetByIds", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + }, + "post": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Creates a new Connection Question", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + }, + "409": { + "description": "Conflict" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/auto-reply-content": { + "get": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Gets default Auto-Reply Email Content for the specified Questions", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "GetDefaultAutoReplyContentForQuestions", + "parameters": [ + { + "name": "questionIds", + "in": "query", + "description": "Comma-separated list of Question IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_QuestionAutoReplyEmailContentLiteDto" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_QuestionAutoReplyEmailContentLiteDto" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_QuestionAutoReplyEmailContentLiteDto" + } + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/published": { + "get": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Gets all Published Connection Questions", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n
\r\nIf answerSourceId is set, the 'title' property in response will contain source specific tilte", + "operationId": "GetPublishedConnectionQuestions", + "parameters": [ + { + "name": "answerSourceId", + "in": "query", + "description": "Answer source ID (optional)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}/auto-reply-email-content": { + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Upserts Default Auto-Reply Email Content for a Connection Question", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "SetDefaultAutoReplyEmailContent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Question ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Default Auto-Reply Email Content Spot Template", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionDetailedViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionDetailedViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionDetailedViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}/sources": { + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Upserts Question sources", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n", + "operationId": "UpsertSources", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Question ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "List of sources", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionSourceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionSourceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionSourceViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionSourceViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}/publish": { + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Publishes a Connection Question", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n
\r\n**Data Access:**
\r\nUPDATES a Connection Question to be \"Published\" (available to the web and connection card app)", + "operationId": "PublishConnectionQuestion", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Question ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection Question has been published." + }, + "403": { + "description": "Not authorized. Must have permission to update Connection Question." + }, + "404": { + "description": "The Connection Question is not found." + }, + "500": { + "description": "The publication attempt failed." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}/unpublish": { + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Unpublishes a Connection Question", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n
\r\n**Data Access:**
\r\nUPDATES a Connection Question to be NOT \"Published\"", + "operationId": "UnpublishConnectionQuestion", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Question ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection Question has been unpublished" + }, + "403": { + "description": "Not authorized. Must have permission to update Connection Question." + }, + "404": { + "description": "The Connection Question record is not found." + }, + "500": { + "description": "The un-publication attempt failed." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}/active": { + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Makes a Connection Question Active (i.e. reactivates it if it was formerly made Inactive)", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n
\r\n**Data Access:**
\r\nUPDATES a Connection Question to be Active", + "operationId": "ActivateQuestion", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}/inactive": { + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Makes a Connection Question Inactive", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n
\r\n**Data Access:**
\r\nUPDATES a Connection Question to be Inactive", + "operationId": "InactivateQuestion", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/{id}/classification": { + "put": { + "tags": [ + "ConnectionQuestion" + ], + "summary": "Changes the Classification on a Connection Question", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Connection Questions
\r\n
\r\n**Data Access:**
\r\nUPDATES a Connection Question by changing its Classification\r\n\r\n**More Info:**
\r\nUsed when converting a Custom Question from a Connection Form Template into a General Question by \"Adding it to the Question Library\".", + "operationId": "ReclassifyQuestion", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_QuestionReclassificationRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_QuestionReclassificationRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_QuestionReclassificationRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_QuestionReclassificationRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Connection Questions" + ] + } + ] + } + } + }, + "/api/connection-question/single-answer/{id}": { + "get": { + "tags": [ + "ConnectionQuestionAnswer" + ], + "summary": "Gets details of a single Connection Question Answer by its ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Connection Question Answers
\r\n
\r\n**Inline Authorization Checks:**
\r\nFor callers authorized via Permission, a secondary check is made on Permission for Read access to Answers for 'Sensitive' Questions.\r\nIf the caller does not have this permission and the requested Answer is for a sensitive Question, then caller will be denied access.\r\n\r\n**Data Access:**
\r\nREAD access to the single Answer record, specified by ID. Some Answers may contain sensitive and confidential personally identifiable\r\ninformation, and so access to this data should be guarded carefully.", + "operationId": "GetAnswerById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Answer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "expand", + "in": "query", + "description": "Comma-separated list of expand options. Currently includes \"occurrence\" and \"person\".", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns collection of matched Connection Questions.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerDetailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerDetailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerDetailViewModel" + } + } + } + }, + "401": { + "description": "Not authenticated." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Specified Answer not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Connection Question Answers" + ] + } + ] + } + } + }, + "/api/connection-question/answer/{personId}": { + "get": { + "tags": [ + "ConnectionQuestionAnswer" + ], + "summary": "Get all Connection Questions Answers for a Person", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Connection Question Answers
\r\n
\r\n**Inline Authorization Checks:**
\r\nFor callers authorized via Permission:\r\n* Campus scope on the Permission is checked.\r\n* A secondary check is made on Permission for Read access to Answers for 'Sensitive' Questions. If the caller does not have this permission, than Answers to Sensitive Questions will be redacted, and the caller will only receive Answers to non-Sensitive Questions.\r\nThese checks are not performed when the caller is requesting data associated to his or her own Person Record.\r\n \r\n**Data Access:**
\r\nREAD access to Answers to Connection Questions associated to the specified Person. Some of these Answers may contain sensitive and confidential personally identifiable information, and so access to this data should be guarded carefully.", + "operationId": "GetAllAnswersByPersonUniqueId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns collection of Connection Question Answers.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + } + }, + "401": { + "description": "Not authenticated." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Specified Person not found." + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Connection Question Answers" + ] + } + ] + } + } + }, + "/api/connection-question-public": { + "get": { + "tags": [ + "Data Capture", + "Connection Questions", + "Open", + "Public" + ], + "summary": "Gets all Published Connection Questions", + "description": "**Data Access:**
\r\nREAD access to published Connection Question metadata. Data is generally appropriate to share with all callers.\r\n\r\n**More Info:**
\r\nIntended for integration partners.\r\n\r\nIf answerSourceId is set, the 'title' property in response will contain source specific title.", + "operationId": "GetPublishedConnectionQuestions", + "parameters": [ + { + "name": "answerSourceId", + "in": "query", + "description": "Answer Source ID (optional)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "questionClassification", + "in": "query", + "description": "Question Classification (optional)", + "schema": { + "$ref": "#/components/schemas/Core_Model_QuestionClassification" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns collection of published Connection Questions.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + } + } + } + } + }, + "/api/connection-question-public/{id}": { + "get": { + "tags": [ + "Data Capture", + "Connection Questions", + "Open", + "Public" + ], + "summary": "Gets a Connection Question by ID", + "description": "**Data Access:**
\r\nREAD access to specified Connection Question metadata. Data is generally appropriate to share with all callers.\r\n\r\n**More Info:**
\r\nIntended for integration partners.", + "operationId": "GetQuestionById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns collection of matched Connection Questions.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + } + } + } + } + }, + "/api/connection-question-public/answer": { + "post": { + "tags": [ + "Data Capture", + "Connection Questions", + "Open", + "Public" + ], + "summary": "Submits new Answers to Connection Questions", + "description": "**Data Access:**
\r\nCREATE access on Connection Question Answers (Data Capture Area).\r\nCreates new Answer records for the specified Connection Questions and returns the results.\r\n\r\n**More Info:**
\r\n* Intended for integration partners.\r\n* Can be called authenticated or unauthenticated.\r\n* Also, caller can request anonymoity using Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.ConnectionQuestionAnswersViewModel.IsAnonymous property.\r\n * When caller is authenticated, Answers will be associated to caller's own Person Record, unless caller requests anonymity.\r\n * When caller is not authenticated, and caller is not requesting anonymity, this endpoint will attempt to match an existing\r\n or create new Person Record using the submitted data in Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.ConnectionQuestionAnswersViewModel.Person properties,\r\n following the standard business rules, and the Answers will be associated to that Person Record.", + "operationId": "CreateConnectionQuestionAnswers", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswersViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswersViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswersViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswersViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Person record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "400": { + "description": "POST body is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "409": { + "description": "Record already exists with specified email." + } + } + } + }, + "/api/country": { + "get": { + "tags": [ + "Country" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAllCountries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/custom-field": { + "get": { + "tags": [ + "CustomField" + ], + "summary": "Get custom fields for specific entity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Read Event, Create Serving Opportunities, Update Serving Opportunities
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nREAD Access to Entity or Internal Access", + "operationId": "GetCustomFields", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeEntityTypeWide", + "in": "query", + "description": "True to include questions for whole entity type in addition to specific entity", + "schema": { + "type": "boolean" + } + }, + { + "name": "includeDeleted", + "in": "query", + "description": "True to include deleted questions", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Custom fields.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + }, + { + "Permissions": [ + "Create Serving Opportunities" + ] + }, + { + "Permissions": [ + "Update Serving Opportunities" + ] + } + ] + } + }, + "post": { + "tags": [ + "CustomField" + ], + "summary": "Add custom field to specific entity", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "InsertCustomField", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.CustomFieldViewModelCustom field to add", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Custom field.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + } + }, + "put": { + "tags": [ + "CustomField" + ], + "summary": "Upsert custom fields for specific entity", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "UpsertCustomFields", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.CustomFieldViewModelList of Custom field to upsert", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns Custom field.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + } + }, + "delete": { + "tags": [ + "CustomField" + ], + "summary": "Delete all custom fields in specific entity", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "DeleteAllCustomFields", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Custom fields were deleted succesfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/custom-field/{questionId}": { + "put": { + "tags": [ + "CustomField" + ], + "summary": "Update custom field for specific entity", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "UpdateCustomField", + "parameters": [ + { + "name": "questionId", + "in": "path", + "description": "Question ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.CustomFieldViewModelCustom field to update", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Custom field.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + } + }, + "delete": { + "tags": [ + "CustomField" + ], + "summary": "Delete custom field from specific entity", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "DeleteCustomField", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "questionId", + "in": "path", + "description": "Question ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Custom field was deleted succesfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/custom-field/answer": { + "get": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Get answers for specific entity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Manage Event Attendees, Manage Serving Opportunity Volunteers
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nREAD Access to Entity or Internal Access.", + "operationId": "GetAnswers", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Answer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Serving Opportunity Volunteers" + ] + } + ] + } + }, + "post": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Add answer to specific entity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Manage Event Attendees, Manage Serving Opportunity Volunteers
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "InsertCustomField", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.ConnectionQuestionAnswerViewModelAnswer to add", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Answer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Serving Opportunity Volunteers" + ] + } + ] + } + }, + "put": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Upsert custom fields for specific entity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Manage Event Attendees, Manage Serving Opportunity Volunteers
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "UpsertCustomField", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.ConnectionQuestionAnswerViewModelList of Answer to upsert", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns Answer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Serving Opportunity Volunteers" + ] + } + ] + } + }, + "delete": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Deletes all custom field answers for specific entity and specified person", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Manage Event Attendees, Manage Serving Opportunity Volunteers
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE (DELETE) on Custom Field Answers for specified Entity and a single specified Person.", + "operationId": "DeleteAllCustomFields", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Custom fields were deleted succesfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Serving Opportunity Volunteers" + ] + } + ] + } + } + }, + "/api/custom-field/answer/occurrence/{occurrenceId}": { + "get": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Get answers for specific entity and occurrence", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Manage Event Attendees, Manage Serving Opportunity Volunteers
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nREAD Access to Entity or Internal Access.", + "operationId": "GetAnswersForOccurrence", + "parameters": [ + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeEntityWide", + "in": "query", + "description": "true to include entity wide answers", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Answer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Serving Opportunity Volunteers" + ] + } + ] + } + } + }, + "/api/custom-field/answer/{answerId}": { + "put": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Update answer for specific entity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Manage Event Attendees, Manage Serving Opportunity Volunteers
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "UpdateCustomField", + "parameters": [ + { + "name": "answerId", + "in": "path", + "description": "Answer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.ConnectionQuestions.ConnectionQuestionAnswerViewModelAnswer to update", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Answer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Serving Opportunity Volunteers" + ] + } + ] + } + }, + "delete": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Delete answer from specific entity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Manage Event Attendees, Manage Serving Opportunity Volunteers
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied for specified entity\r\n\r\n**Data Access:**
\r\nWRITE Access to Entity.", + "operationId": "DeleteCustomField", + "parameters": [ + { + "name": "answerId", + "in": "path", + "description": "Answer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Answer was deleted succesfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Serving Opportunity Volunteers" + ] + } + ] + } + } + }, + "/api/custom-field/answer/bulk-delete": { + "post": { + "tags": [ + "CustomFieldAnswer" + ], + "summary": "Deletes all custom field answers for specific Entity and multiple specified People", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Inline Authorization Checks:**
\r\nVerifying that we are authorized by Policy.
\r\nPresently, there is no use case for this operation to be performed by an authenticated user with permissions.\r\n\r\n**Data Access:**
\r\nWRITE (DELETE) on Custom Field Answers for specified Entity and multiple specified People.", + "operationId": "DeleteAllCustomFieldsForMultiplePeople", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_AnswerCustomFieldBulkDeletionRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_AnswerCustomFieldBulkDeletionRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_AnswerCustomFieldBulkDeletionRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_AnswerCustomFieldBulkDeletionRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/custom-field-public": { + "get": { + "tags": [ + "CustomFieldPublic" + ], + "summary": "Get custom fields for specific entity", + "description": "**Inline Authorization Checks:**
\r\nPublished entities validation is applied for specified entity", + "operationId": "GetCustomFields", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity name", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeEntityTypeWide", + "in": "query", + "description": "True to include questions for whole entity type in addition to specific entity", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Custom fields.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Entity not found." + } + } + } + }, + "/api/daily-devotional-content": { + "get": { + "tags": [ + "DailyDevotional" + ], + "summary": "Gets Daily Devotional By Year and Day", + "operationId": "GetDailyDevotionsContents", + "parameters": [ + { + "name": "year", + "in": "query", + "description": "Year of Daily Devotional", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dayOfYear", + "in": "query", + "description": "day of year of Daily Devotional", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Daily Devotionals based on a year and day of year" + } + } + } + }, + "/api/daily-devotional-content/list": { + "get": { + "tags": [ + "DailyDevotional" + ], + "summary": "Gets Daily Devotionals", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetDailyDevotionals", + "parameters": [ + { + "name": "timeZoneId", + "in": "query", + "description": "Time Zone Id", + "schema": { + "type": "string" + } + }, + { + "name": "numDays", + "in": "query", + "description": "past number of days from current day", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns all Daily Devotionals based on a past number of days and optional timeZoneId value or the current UTC Date and Time", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_DailyDevotionalContent" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_DailyDevotionalContent" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_DailyDevotionalContent" + } + } + } + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/daily-verse-content": { + "get": { + "tags": [ + "DailyVerse" + ], + "summary": "Gets Daily Verse By Year and Day", + "operationId": "GetDailyVerseContents", + "parameters": [ + { + "name": "year", + "in": "query", + "description": "Year of Daily Verse", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dayOfYear", + "in": "query", + "description": "day of year of Daily Verse", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Daily Verses based on a year and day of year" + } + } + } + }, + "/api/daily-verse-content/list": { + "get": { + "tags": [ + "DailyVerse" + ], + "summary": "Gets Daily Verses", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetDailyVerseAsync", + "parameters": [ + { + "name": "timeZoneId", + "in": "query", + "description": "Time Zone Id", + "schema": { + "type": "string" + } + }, + { + "name": "numDays", + "in": "query", + "description": "past number of days from current day", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns all Daily Verses based on a past number of days and optional timeZoneId value or the current UTC Date and Time", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_DailyVerseContent" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_DailyVerseContent" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_DailyVerseContent" + } + } + } + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/department": { + "get": { + "tags": [ + "Department" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "Department" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Create", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Department" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Department" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Department" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Department" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ], + "ModelParameterName": [ + "department" + ] + } + ] + } + } + }, + "/api/department/{id}": { + "delete": { + "tags": [ + "Department" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Church Locations
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Church Locations" + ] + } + ] + } + } + }, + "/api/email/verification-request": { + "put": { + "tags": [ + "EmailVerification" + ], + "operationId": "RequestEmailVerification", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/email/verification-request-retry": { + "put": { + "tags": [ + "EmailVerification" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "RetryVerification", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/email/verify": { + "post": { + "tags": [ + "EmailVerification" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Verify", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationFullfillmentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/integration/email/privileged-verification": { + "put": { + "tags": [ + "EmailVerification" + ], + "summary": "End point to submit an Email Verification Request", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:people-email-verification
\r\n", + "operationId": "PrivilegedVerify", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_EmailVerificationRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:people-email-verification" + ] + } + ] + } + } + }, + "/api/rate-limit/endpoints": { + "get": { + "tags": [ + "Endpoint" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetEndpoints", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "Endpoint" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostEndpoint", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/endpoints/{endpointId}": { + "get": { + "tags": [ + "Endpoint" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetEndpointsById", + "parameters": [ + { + "name": "endpointId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "Endpoint" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "UpdateEndpoint", + "parameters": [ + { + "name": "endpointId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Endpoint" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Endpoint" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "DeleteEndpoint", + "parameters": [ + { + "name": "endpointId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/export/ministry-member": { + "get": { + "tags": [ + "ExportDownload" + ], + "description": "**Authorization Policy:**
\r\nRequires DataExtractType: MinistryMember
\r\n", + "operationId": "DownloadMinistryRosterExport", + "parameters": [ + { + "name": "File", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Token", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresDataExtractTypes": [ + { + "DataExtractTypes": [ + "MinistryMember" + ] + } + ] + } + } + }, + "/api/export/person": { + "get": { + "tags": [ + "ExportDownload" + ], + "description": "**Authorization Policy:**
\r\nRequires DataExtractType: Person
\r\n", + "operationId": "DownloadPeopleExport", + "parameters": [ + { + "name": "File", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Token", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresDataExtractTypes": [ + { + "DataExtractTypes": [ + "Person" + ] + } + ] + } + } + }, + "/api/export/response-card": { + "get": { + "tags": [ + "ExportDownload" + ], + "description": "**Authorization Policy:**
\r\nRequires DataExtractType: ResponseCard
\r\n", + "operationId": "DownloadResponseCardExport", + "parameters": [ + { + "name": "File", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Token", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresDataExtractTypes": [ + { + "DataExtractTypes": [ + "ResponseCard" + ] + } + ] + } + } + }, + "/api/export/serving-opportunity-volunteer": { + "get": { + "tags": [ + "ExportDownload" + ], + "description": "**Authorization Policy:**
\r\nRequires DataExtractType: ServingOpportunityVolunteer
\r\n", + "operationId": "DownloadServingOpportunityVolunteerExport", + "parameters": [ + { + "name": "File", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Token", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresDataExtractTypes": [ + { + "DataExtractTypes": [ + "ServingOpportunityVolunteer" + ] + } + ] + } + } + }, + "/api/export/connection-form": { + "get": { + "tags": [ + "ExportDownload" + ], + "description": "**Authorization Policy:**
\r\nRequires DataExtractType: ConnectionForm
\r\n", + "operationId": "DownloadConnectionFormExport", + "parameters": [ + { + "name": "File", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Token", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresDataExtractTypes": [ + { + "DataExtractTypes": [ + "ConnectionForm" + ] + } + ] + } + } + }, + "/api/export/status": { + "get": { + "tags": [ + "ExportDownload" + ], + "operationId": "GetStatus", + "parameters": [ + { + "name": "ExpirationDateUtcTicks", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "FileName", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Type", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/export/history": { + "post": { + "tags": [ + "ExportHistory" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "AddExportHistory", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ExportHistory" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ExportHistory" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ExportHistory" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ExportHistory" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + }, + "get": { + "tags": [ + "ExportHistory" + ], + "summary": "Get filtered export history list", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Person Data
\r\n", + "operationId": "GetHistory", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Person Data" + ] + } + ] + } + } + }, + "/api/export/history/count": { + "get": { + "tags": [ + "ExportHistory" + ], + "summary": "Get export history count by filter", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Person Data
\r\n", + "operationId": "GetCountByHistoryId", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Person Data" + ] + } + ] + } + } + }, + "/api/fact/{id}": { + "get": { + "tags": [ + "Fact" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Enter Metric Data for Current Period, Enter Metric Data for Any Period
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Enter Metric Data for Current Period" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Any Period" + ] + } + ] + } + }, + "put": { + "tags": [ + "Fact" + ], + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/fact": { + "post": { + "tags": [ + "Fact" + ], + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/fact/upsert-many": { + "post": { + "tags": [ + "Fact" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:data-capture-fact, hc:internal-systems
\r\n", + "operationId": "UpsertMany", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FactLiteViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:data-capture-fact", + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/fact/data-entry": { + "get": { + "tags": [ + "Fact" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Enter Metric Data for Current Period, Enter Metric Data for Any Period
\r\n", + "operationId": "GetFactsForDataEntry", + "parameters": [ + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "VenueId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleEntityTypeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "OccurrenceDate", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Enter Metric Data for Current Period" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Any Period" + ] + } + ] + } + } + }, + "/api/file": { + "post": { + "tags": [ + "File" + ], + "operationId": "PostAsync", + "parameters": [ + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Looks up Follow Up (User Tasks) by Subject Entity Mapping", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD access to potentially many Follow Up Tasks, but light, top-level info only.\r\nIn particular, no Person data other than Unique ID, First Name and Last Name is returned.", + "operationId": "GetBySubjectMapping", + "parameters": [ + { + "name": "subjectEntityType", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "subjectEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskLiteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskLiteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskLiteViewModel" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + }, + "post": { + "tags": [ + "FollowUpTask" + ], + "summary": "Creates a new Follow Up (User Task) given a Task Template ID, Subject Person, and optional additional Subject Mappings", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nCREATES a new Follow Up (User Task) given the specified parameters.\r\n\r\n**More Info:**
\r\nIntended for use for HC internal remote procedure calls (e.g. from Workflows Service processing Task Actions).\r\nNot really intended for use by the back-office client application or other consumers.", + "operationId": "CreateTask", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskCreationRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskCreationRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskCreationRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskCreationRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskBasicViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskBasicViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskBasicViewModel" + } + } + } + }, + "400": { + "description": "Bad Request" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/task/by-multiple-subjects": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Looks up Follow Up (User Tasks) by multiple Subject Entity Mappings", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD access to potentially many Follow Up Tasks, but light, top-level info only.\r\nIn particular, no Person data other than Unique ID, First Name and Last Name is returned.", + "operationId": "GetByMultipleSubjectMappings", + "parameters": [ + { + "name": "EntityTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ParsedEntityTypes", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "ParsedEntityIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskLiteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskLiteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskLiteViewModel" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/task/{id}": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Fetches details of a single Follow Up (User Task) by ID", + "description": "**Inline Authorization Checks:**
\r\nAccess to the Follow Up (User Task) requires at least one of the following:\r\n* Being the Task Assignee\r\n* Being the Task Supervisor\r\n* Having Saddleback.Cm.Common.Contracts.Security.Permission.AllFollowUpTasksRead permission with a scope including the Task's Campus (Church Entity).\r\n\r\nSecondary permission checks are also performed on related Task subject data,\r\ne.g. the associated Person record, Connection Card Entry, etc. that may reduce\r\nor redact some of the data which is returned.\r\n\r\n**Data Access:**
\r\nREAD access to the full details of a single Follow Up (User Task), and at least some data/metadata about the\r\nsubjects of the Task (person, Connection Card Entry, etc.). Some of the subject data might be restricted by\r\nsecondary permissions checks.", + "operationId": "GetTaskDetails", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Task ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/close-by-dependencies": { + "post": { + "tags": [ + "FollowUpTask" + ], + "summary": "Closes (updates Status to \"Successful\") one more Follow Ups (User Tasks) given a collection of \"dependencies\" to specify which Follow Ups to target", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nUPDATES one more more Follow Ups (User Tasks).\r\nWill update Status, and may also assign some or all of the affected Follow Ups to the Supervisor for any that are presently Unclaimed.\r\n\r\n**More Info:**
\r\nIntended for use for HC internal remote procedure calls (e.g. from Workflows Service processing Task Actions).\r\nNot really intended for use by the back-office client application or other consumers.\r\n\r\nExample Use Case (CLASS Transitions/Person Milestone based Follow Ups):\r\n* Person completes CLASS 101.\r\n* The Follow Up Rule for CLASS 101 Milestone creates a User Task for someone at the church to \"shepherd\" the person into CLASS 201.\r\n* Person later completes CLASS 201.\r\n* If the earlier User Task is still open (In Progress, Blocked, etc.) we want the system to automatically move it into Successful closed status.", + "operationId": "CloseTasksByDependencies", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskSubjectMappingViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskSubjectMappingViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskSubjectMappingViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskSubjectMappingViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskBulkActionResultViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskBulkActionResultViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskBulkActionResultViewModel" + } + } + } + }, + "400": { + "description": "Bad Request" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/task/mine/closed": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets Completed Follow Up Inbox Summary Statistics and Task Batches assigned to the Context User", + "operationId": "GetMyCompletedTaskInboxSummary", + "parameters": [ + { + "name": "timeZone", + "in": "query", + "description": "User's current or preferred Time Zone (IANA identifier, e.g. America/Los_Angeles) to\r\nbe used for date/time related filtering and classification of Task data.\r\nOptional. Defaults to U.S. Pacific Time (America/Los_Angeles) if ommitted.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/mine/closed/task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of Completed Follow Up User Tasks for a given Task Batch (defined by Task Template ID)", + "operationId": "GetMyCompletedTaskList", + "parameters": [ + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/mine/in-progress": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets In-Progress Follow Up Inbox Summary Statistics and Task Batches assigned to the Context User", + "operationId": "GetMyInProgressTaskInboxSummary", + "parameters": [ + { + "name": "timeZone", + "in": "query", + "description": "User's current or preferred Time Zone (IANA identifier, e.g. America/Los_Angeles) to\r\nbe used for date/time related filtering and classification of Task data.\r\nOptional. Defaults to U.S. Pacific Time (America/Los_Angeles) if ommitted.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/mine/in-progress/task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of In-Progress Follow Up User Tasks for a given Task Batch (defined by Task Template ID)", + "operationId": "GetMyInProgressTaskList", + "parameters": [ + { + "name": "DueDateType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskDueDateBucket" + } + }, + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/my-teams/unclaimed": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets In-Progress Unclaimed Follow Up Inbox Summary Statistics and Task Batches presently assigned to any Teams of which the Context User is a member", + "operationId": "GetMyTeamsUnclaimedTaskInbox", + "parameters": [ + { + "name": "timeZone", + "in": "query", + "description": "User's current or preferred Time Zone (IANA identifier, e.g. America/Los_Angeles) to\r\nbe used for date/time related filtering and classification of Task data.\r\nOptional. Defaults to U.S. Pacific Time (America/Los_Angeles) if ommitted.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/my-teams/unclaimed/task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of In-Progress Unclaimed Follow Up User Tasks for a given Task Batch (defined by Task Template ID)", + "operationId": "GetUnclaimedTaskList", + "parameters": [ + { + "name": "DueDateType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskDueDateBucket" + } + }, + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/mine/escalated": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets In-Progress Escalated Follow Up Inbox Summary Statistics for Tasks where the Context User is the Supervisor to whom the Tasks have been Escalated", + "operationId": "GetMyEscalatedTaskInboxSummary", + "parameters": [ + { + "name": "timeZone", + "in": "query", + "description": "User's current or preferred Time Zone (IANA identifier, e.g. America/Los_Angeles) to\r\nbe used for date/time related filtering and classification of Task data.\r\nOptional. Defaults to U.S. Pacific Time (America/Los_Angeles) if ommitted.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/mine/escalated/task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of In-Progress Escalated Follow Up User Tasks for a given Task Batch (defined by Task Template ID)", + "operationId": "GetMyEscalatedTaskList", + "parameters": [ + { + "name": "DueDateType", + "in": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskDueDateBucket" + } + }, + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/management/overview": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets Summary data for high-level overview of all batches of Follow Up User Tasks for which the Context User is the Supervisor", + "operationId": "GetSupervisorTaskInboxSummary", + "parameters": [ + { + "name": "timeZone", + "in": "query", + "description": "User's current or preferred Time Zone (IANA identifier, e.g. America/Los_Angeles) to\r\nbe used for date/time related filtering and classification of Task data.\r\nOptional. Defaults to U.S. Pacific Time (America/Los_Angeles) if ommitted.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/management/overview/{id}/stats": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets Statistics for a single Follow Up User Task Batch. Intended for use by Task Supervisors.", + "operationId": "GetSupervisorTaskBatchStatistics", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "timeZone", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "unclaimed", + "in": "query", + "description": "", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/management/overview/{id}/task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of Follow Up User Tasks for a single Task Batch assigned to the specified Assignee and for which Context User is the Supervisor,", + "operationId": "GetSupervisorInProgressTaskList", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "AssigneeId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DueDateTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/management/overview/{id}/unclaimed-task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of Unclaimed Follow Up User Tasks for a Task Batch for which Context User is the Supervisor", + "operationId": "GetSupervisorUnclaimedTaskList", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DueDateTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/management/overview/all": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets Summary data for high-level overview of all batches of Follow Up User Tasks for which the caller is authorized by campus scoped permission", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read All Follow Up Tasks
\r\n
\r\n**Inline Authorization Checks:**
\r\nThe data will be filtered using the Campus (Church Entity) association of the Task Templates\r\ndepending on the scopes for the user's Saddleback.Cm.Common.Contracts.Security.Permission.AllFollowUpTasksRead permission\r\nassignment.\r\n\r\n**More Info:**
\r\nIntended for the \"All Follow Ups\" / \"Campus Pastor\" Use Case.", + "operationId": "GetAllFollowUpsTaskInboxSummary", + "parameters": [ + { + "name": "timeZone", + "in": "query", + "description": "User's current or preferred Time Zone (IANA identifier, e.g. America/Los_Angeles) to\r\nbe used for date/time related filtering and classification of Task data.\r\nOptional. Defaults to U.S. Pacific Time (America/Los_Angeles) if ommitted.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read All Follow Up Tasks" + ] + } + ] + } + } + }, + "/api/task/management/overview/all/{id}/stats": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets Statistics for a single Follow Up User Task Batch. Intended for the \"All Follow Ups\" / \"Campus Pastor\" Use Case.", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read All Follow Up Tasks
\r\n
\r\n**Inline Authorization Checks:**
\r\nThe caller's Saddleback.Cm.Common.Contracts.Security.Permission.AllFollowUpTasksRead permission\r\nassignment scope must include the Campus (Church Entity) associated to the\r\nrequested Task Template.", + "operationId": "GetAllFollowUpsTaskBatchStatistics", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "timeZone", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "assigneeId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "unclaimed", + "in": "query", + "description": "", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read All Follow Up Tasks" + ] + } + ] + } + } + }, + "/api/task/management/overview/all/{id}/task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of Follow Up User Tasks for a single Task Batch assigned to the specified Assignee. Intended for the \"All Follow Ups\" / \"Campus Pastor\" Use Case.", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read All Follow Up Tasks
\r\n
\r\n**Inline Authorization Checks:**
\r\nThe caller's Saddleback.Cm.Common.Contracts.Security.Permission.AllFollowUpTasksRead permission\r\nassignment scope must include the Campus (Church Entity) associated to the\r\nrequested Task Template.", + "operationId": "GetAllFollowUpsIndividualInProgressTaskList", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "AssigneeId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DueDateTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read All Follow Up Tasks" + ] + } + ] + } + } + }, + "/api/task/management/overview/all/{id}/unclaimed-task-list": { + "get": { + "tags": [ + "FollowUpTask" + ], + "summary": "Gets filtered/paginated list of Unclaimed Follow Up User Tasks for a Task Batch. Intended for the \"All Follow Ups\" / \"Campus Pastor\" Use Case.", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read All Follow Up Tasks
\r\n
\r\n**Inline Authorization Checks:**
\r\nThe caller's Saddleback.Cm.Common.Contracts.Security.Permission.AllFollowUpTasksRead permission\r\nassignment scope must include the Campus (Church Entity) associated to the\r\nrequested Task Template.", + "operationId": "GetAllFollowUpsUnclaimedTaskList", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DueDateTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TaskTemplateId", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read All Follow Up Tasks" + ] + } + ] + } + } + }, + "/api/task/{id}/comment": { + "post": { + "tags": [ + "FollowUpTask" + ], + "operationId": "PostComment", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/{taskId}/comment/{commentId}": { + "put": { + "tags": [ + "FollowUpTask" + ], + "operationId": "UpdateComment", + "parameters": [ + { + "name": "taskId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "commentId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskCommentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + }, + "delete": { + "tags": [ + "FollowUpTask" + ], + "operationId": "DeleteComment", + "parameters": [ + { + "name": "taskId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "commentId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/assignee": { + "put": { + "tags": [ + "FollowUpTask" + ], + "operationId": "UpdateAssigneePerson", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskReassignmentRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskReassignmentRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskReassignmentRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskReassignmentRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/assigned-team": { + "put": { + "tags": [ + "FollowUpTask" + ], + "operationId": "UpdateAssigneeTeam", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamTaskReassignmentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamTaskReassignmentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamTaskReassignmentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamTaskReassignmentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/escalate": { + "put": { + "tags": [ + "FollowUpTask" + ], + "operationId": "Escalate", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskEscalationRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskEscalationRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskEscalationRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskEscalationRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/status": { + "put": { + "tags": [ + "FollowUpTask" + ], + "operationId": "UpdateStatus", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskStatusUpdateRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskStatusUpdateRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskStatusUpdateRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskStatusUpdateRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/priority-flag": { + "put": { + "tags": [ + "FollowUpTask" + ], + "operationId": "SetHighPriorityFlag", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/clear-priority-flag": { + "put": { + "tags": [ + "FollowUpTask" + ], + "operationId": "ClearHighPriorityFlag", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FollowUpTaskBulkActionRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/{taskTemplateId}/email": { + "post": { + "tags": [ + "FollowUpTask" + ], + "summary": "Sends an Email Communication to the the people associated to the specified Follow Up Tasks", + "description": "**Data Access:**
\r\nSends Email Communication (Notification) to specified recipients.", + "operationId": "SendEmailToTaskSubjects", + "parameters": [ + { + "name": "taskTemplateId", + "in": "path", + "description": "Task Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "AssigneeId", + "in": "query", + "description": "If querying for Tasks assigned to someone other than the context user (e.g. as in Supervisor or in \"All Follow Ups\" scenarios),\r\nthis should be the Unique ID of the Person/User whose Tasks are being requested.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DueDateTypes", + "in": "query", + "description": "Collection of Due Date \"Buckets\" ( \"Upcoming\", \"DueToday\", \"PastDue\" )
\r\nTypically there should only be one for a specific query, although Supervisor and \"All Follow Ups\" queries allow multiple.", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "description": "Free-text search term, if any", + "schema": { + "type": "string" + } + }, + { + "name": "QueryType", + "in": "query", + "description": "Which kind of query is being performed", + "schema": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskQueryType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Task Statuses for the query", + "schema": { + "type": "string" + } + }, + { + "name": "TimeZone", + "in": "query", + "description": "Time Zone used to evaluate Due Date Bucket parameters when filtering Tasks", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Message specification.
NOTE:recipientIds should be Follow Up Task IDs (not Person IDs).", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/{taskTemplateId}/sms": { + "post": { + "tags": [ + "FollowUpTask" + ], + "summary": "Sends an SMS (Text Message) Communication to the the people associated to the specified Follow Up Tasks", + "description": "**Data Access:**
\r\nSends SMS (Text Message) Communication (Notification) to specified recipients.", + "operationId": "SendSmsToTaskSubjects", + "parameters": [ + { + "name": "taskTemplateId", + "in": "path", + "description": "Task Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "AssigneeId", + "in": "query", + "description": "If querying for Tasks assigned to someone other than the context user (e.g. as in Supervisor or in \"All Follow Ups\" scenarios),\r\nthis should be the Unique ID of the Person/User whose Tasks are being requested.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DueDateTypes", + "in": "query", + "description": "Collection of Due Date \"Buckets\" ( \"Upcoming\", \"DueToday\", \"PastDue\" )
\r\nTypically there should only be one for a specific query, although Supervisor and \"All Follow Ups\" queries allow multiple.", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "description": "Free-text search term, if any", + "schema": { + "type": "string" + } + }, + { + "name": "QueryType", + "in": "query", + "description": "Which kind of query is being performed", + "schema": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskQueryType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Task Statuses for the query", + "schema": { + "type": "string" + } + }, + { + "name": "TimeZone", + "in": "query", + "description": "Time Zone used to evaluate Due Date Bucket parameters when filtering Tasks", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Message specification.
NOTE:recipientIds should be Follow Up Task IDs (not Person IDs).", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task/{taskTemplateId}/email-attachment": { + "post": { + "tags": [ + "FollowUpTask" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Data Access:**
\r\nUploads the file to cloud storage (Amazon S3) for temporary storage so it can be sent as an email attachment.", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "taskTemplateId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/task/follow-up-report": { + "get": { + "tags": [ + "FollowUpTask" + ], + "operationId": "GetFollowUpReport", + "parameters": [ + { + "name": "daysToGoBack", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/task-template/{id}": { + "get": { + "tags": [ + "FollowUpTaskTemplate" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Manage Follow Up Rules
\r\n", + "operationId": "GetTaskTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + }, + "put": { + "tags": [ + "FollowUpTaskTemplate" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Follow Up Rules
\r\n", + "operationId": "UpdateTaskTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/task-template": { + "post": { + "tags": [ + "FollowUpTaskTemplate" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Follow Up Rules
\r\n", + "operationId": "CreateTaskTemplate", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_FollowUpTaskTemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/integration/giving/payment": { + "put": { + "tags": [ + "GivingPayment" + ], + "operationId": "Put", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_PaymentSearchDocument" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_PaymentSearchDocument" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_PaymentSearchDocument" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_PaymentSearchDocument" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/integration/giving/person": { + "put": { + "tags": [ + "GivingPerson" + ], + "operationId": "Put", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "GivingPerson" + ], + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_DataSubscriptionPayload_IndividualProfileSearchDocument" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/hc-platform-events": { + "get": { + "tags": [ + "HCPlatformEvents" + ], + "summary": "Get the list of defined HC Platform Event Topics and their supported Actions", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n
\r\n**Data Access:**
\r\nREAD access to a list of Event Grid topics

\r\n**More Info:**
\r\nThis is intended to provide a quick way for developers to see what Events are available for subscription", + "operationId": "Get", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "text/json": { + "schema": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ProblemDetails" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/help-content/{contentId}": { + "get": { + "tags": [ + "HelpContent" + ], + "summary": "Returns HelpContent from provider by contenteId", + "operationId": "GetHelpContentByContentId", + "parameters": [ + { + "name": "contentId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "versionId", + "in": "query", + "description": "optional", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/help-content": { + "get": { + "tags": [ + "HelpContent" + ], + "summary": "Returns all published HelpContent from the provider filtered by contentType", + "operationId": "GetAllHelpContent", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/help-content/filter": { + "get": { + "tags": [ + "HelpContent" + ], + "summary": "Returns help contents by the specified module and name. Will return all if null", + "operationId": "GetFilteredHelpContent", + "parameters": [ + { + "name": "module", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "publishedOnly", + "in": "query", + "description": "", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/help-content/search": { + "get": { + "tags": [ + "HelpContent" + ], + "summary": "Search for help contents Containing title", + "operationId": "GetHelpContentByTitle", + "parameters": [ + { + "name": "title", + "in": "query", + "description": "Display Text", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/import/file": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "UploadFile", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/preview": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "Preview", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingPreviewViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingPreviewViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingPreviewViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingPreviewViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/ping": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Perform Person Data Imports
\r\n", + "operationId": "PingImportService", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/current": { + "get": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Perform Person Data Imports
\r\n", + "operationId": "GetCurrentImports", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/start": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "StartImport", + "parameters": [ + { + "name": "dataSourceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportMappingViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/stop": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "StopImport", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/finalize": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "FinalizeImport", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/{id}/reindex": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "Reindex", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/{id}/find-duplicates": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "FindDuplicates", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/reopen": { + "post": { + "tags": [ + "Import" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "ReopenImport", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/field-map": { + "get": { + "tags": [ + "ImportFieldMapping" + ], + "summary": "Get all field mappings or by data source id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "dataSourceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + }, + "post": { + "tags": [ + "ImportFieldMapping" + ], + "summary": "Create a new field mapping", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "CreateImportFieldMapping", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + } + }, + "/api/import/field-map/{id}": { + "get": { + "tags": [ + "ImportFieldMapping" + ], + "summary": "Get a field mapping by id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + }, + "put": { + "tags": [ + "ImportFieldMapping" + ], + "summary": "Update the field mapping", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "UpdateImportFieldMapping", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportFieldMappingViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + }, + "delete": { + "tags": [ + "ImportFieldMapping" + ], + "summary": "Delete the field mapping", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "DeleteImportFieldMapping", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + } + }, + "/api/import/history": { + "get": { + "tags": [ + "ImportHistory" + ], + "summary": "Get filtered import history list", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "GetHistory", + "parameters": [ + { + "name": "sourceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/history/count": { + "get": { + "tags": [ + "ImportHistory" + ], + "summary": "Get import history count by filter", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "GetCountByHistoryId", + "parameters": [ + { + "name": "sourceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/record/history/{historyId}": { + "get": { + "tags": [ + "ImportRecord" + ], + "summary": "Get filtered import records", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "GetByHistoryId", + "parameters": [ + { + "name": "historyId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "personAction", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordAction" + } + }, + { + "name": "personActionStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "milestoneStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "milestoneAction", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordAction" + } + }, + { + "name": "milestoneActionStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "firstNameFilter", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/record/history/{historyId}/count": { + "get": { + "tags": [ + "ImportRecord" + ], + "summary": "Get import records count", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "GetCountByHistoryId", + "parameters": [ + { + "name": "historyId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "personAction", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordAction" + } + }, + { + "name": "personActionStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "milestoneStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "milestoneAction", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordAction" + } + }, + { + "name": "milestoneActionStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + } + }, + { + "name": "firstNameFilter", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/import/record/{id}": { + "get": { + "tags": [ + "ImportRecord" + ], + "summary": "Get a import record by id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + }, + "put": { + "tags": [ + "ImportRecord" + ], + "summary": "Update the import record", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Perform Person Data Imports
\r\n", + "operationId": "UpdateImportRecord", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportRecordViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportRecordViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportRecordViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ImportRecordViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Perform Person Data Imports" + ] + } + ] + } + } + }, + "/api/insights/weekend-flash-report": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get metric statistics for current week", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Weekend Flash Report
\r\n
\r\n**Data Access:**
\r\nREAD Access to data capture metrics data, sourced in realtime from the operational data store", + "operationId": "GetWeekendFlashReportFromOperationalDataStore", + "parameters": [ + { + "name": "category", + "in": "query", + "description": "Category Name", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns statistics.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_FactStatisticsViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_FactStatisticsViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_FactStatisticsViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Weekend Flash Report" + ] + } + ] + } + } + }, + "/api/insights/warehouse-dashboard": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get data capture metric statistics", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Church Insights Dashboard
\r\n
\r\n**Data Access:**
\r\nREAD Access to Insights Dashboard data sourced from data warehouse", + "operationId": "GetDashboardReportFromDataWarehouse", + "parameters": [ + { + "name": "type", + "in": "query", + "description": "Statistics Type (Saddleback.Cm.Contracts.Models.Insights.Warehouse.FactStatisticsType)", + "schema": { + "$ref": "#/components/schemas/Core_Model_FactStatisticsType" + } + }, + { + "name": "category", + "in": "query", + "description": "Metrics Category (e.g. Attendance, Baptisms, Salvations, etc.)", + "schema": { + "type": "string" + } + }, + { + "name": "regionId", + "in": "query", + "description": "ID of a \"Region\" (a grouping of Campuses/Church Entities by geography or other criteria useful for insights and reporting)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityIds", + "in": "query", + "description": "Comma separated list of Church Entity (Campus) IDs", + "schema": { + "type": "string" + } + }, + { + "name": "yearsToGoBack", + "in": "query", + "description": "Number of years to look back. Defaults to 2.", + "schema": { + "type": "integer", + "format": "int32", + "default": 2 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Data Capture Metric Statistics.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CategoryStatistics" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CategoryStatistics" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CategoryStatistics" + } + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized; does not have permission to Manage Worship Services." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Church Insights Dashboard" + ] + } + ] + } + } + }, + "/api/insights/warehouse-dashboard/campus": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get the data warehouse list of Campuses by Region", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetCampusesByRegion", + "parameters": [ + { + "name": "regionId", + "in": "query", + "description": "ID of a \"Region\" (a grouping of Campuses/Church Entities by geography or other criteria useful for insights and reporting", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Region" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Region" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Region" + } + } + } + } + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/insights/warehouse-dashboard/class-data": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get CLASS data capture metric statistics", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Church Insights Dashboard
\r\n
\r\n**Data Access:**
\r\nREAD Access to Insights Dashboard data sourced from data warehouse", + "operationId": "GetDashboardClassDataReportFromDataWarehouse", + "parameters": [ + { + "name": "regionId", + "in": "query", + "description": "ID of a \"Region\" (a grouping of Campuses/Church Entities by geography or other criteria useful for insights and reporting)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityIds", + "in": "query", + "description": "Comma separated list of Church Entity (Campus) IDs", + "schema": { + "type": "string" + } + }, + { + "name": "yearsToGoBack", + "in": "query", + "description": "Number of years to look back. Defaults to 2.", + "schema": { + "type": "integer", + "format": "int32", + "default": 2 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CategoryStatistics" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CategoryStatistics" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CategoryStatistics" + } + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Church Insights Dashboard" + ] + } + ] + } + } + }, + "/api/insights/warehouse-dashboard/region": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get the data warehouse reporting Regions", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetRegions", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Region" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Region" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Region" + } + } + } + } + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/insights/person/{personId}/core-milestone": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get Person's Core milestones by person unique id", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Milestones
\r\n", + "operationId": "GetCoreMilestones", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "PersonUniqueId", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Milestones" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/insights/person/core-milestone": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get Core milestones for a specified list of person unique ids", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Person Milestones
\r\n", + "operationId": "GetCoreMilestones", + "parameters": [ + { + "name": "personIds", + "in": "query", + "description": "PersonUniqueIds", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Milestones" + ] + } + ] + } + } + }, + "/api/insights/person/core-milestone-internal": { + "post": { + "tags": [ + "Insights" + ], + "summary": "Get Core milestones for a specified list of person unique ids", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD Access to Communication Templates.\r\n\r\n**More Info:**
\r\nThis operation is presently restricted to callers with 'Internal System' resource scope,\r\nas it is presently only used by REST SDK for obtaining Communication Templates in other Microservices.", + "operationId": "GetCoreMilestonesInternal", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "PersonUniqueIds", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns CoreMilestonesViewModel.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/insights/person/{personUniqueId}/engagement": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Get Engagment Timeline data for specified person", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Engagement
\r\n
\r\n**Data Access:**
\r\nREAD Access to Person Engagements.", + "operationId": "GetEngagements", + "parameters": [ + { + "name": "personUniqueId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDateUtc", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "endDateUtc", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "zoomLevel", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Core_Model_EngagementZoomLevel" + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns EngagementViewModel.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_EngagementViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_EngagementViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_EngagementViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personUniqueId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Engagement" + ], + "RouteParameters": [ + "personUniqueId" + ] + } + ] + } + } + }, + "/api/insights/version": { + "get": { + "tags": [ + "Insights" + ], + "summary": "Gets the CI Warehouse version", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetVersion", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/import/data-source": { + "get": { + "tags": [ + "IntegrationDataSource" + ], + "summary": "Get all data sources", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + }, + "post": { + "tags": [ + "IntegrationDataSource" + ], + "summary": "Create a new data source", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "CreateIntegrationDataSource", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + } + }, + "/api/import/data-source/{id}": { + "get": { + "tags": [ + "IntegrationDataSource" + ], + "summary": "Get a data source by id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + }, + "put": { + "tags": [ + "IntegrationDataSource" + ], + "summary": "Update the data source", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "UpdateIntegrationDataSource", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_IntegrationDataSourceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + }, + "delete": { + "tags": [ + "IntegrationDataSource" + ], + "summary": "Delete the data source", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Integration Data Sources
\r\n", + "operationId": "DeleteIntegrationDataSource", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Integration Data Sources" + ] + } + ] + } + } + }, + "/api/rate-limit/ipAddresses": { + "get": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetIpAddresses", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostIpAddress", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/ipAddresses/{ipAddressId}": { + "get": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetIpAddressById", + "parameters": [ + { + "name": "ipAddressId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "UpdateIpAddressById", + "parameters": [ + { + "name": "ipAddressId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_IpAddress" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/ipAddresses/policy": { + "get": { + "tags": [ + "IpAddress" + ], + "operationId": "GetIpPolicy", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/rate-limit/ipAddresses/{ipAddressId}/rules": { + "get": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetRateLimitRuleByIpAddressId", + "parameters": [ + { + "name": "ipAddressId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostIpRateLimitRules", + "parameters": [ + { + "name": "ipAddressId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/ipAddresses/{ipAddressId}/rules/{ruleId}": { + "put": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "UpdateIpAddressRule", + "parameters": [ + { + "name": "ipAddressId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "IpAddress" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "DeleteIpAddressRule", + "parameters": [ + { + "name": "ipAddressId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/media": { + "get": { + "tags": [ + "Media" + ], + "operationId": "GetAll", + "parameters": [ + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "Media" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Media
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Media" + ] + } + ] + } + } + }, + "/api/media/{id}": { + "get": { + "tags": [ + "Media" + ], + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "put": { + "tags": [ + "Media" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Media
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Media" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Media" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Media
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Media" + ] + } + ] + } + } + }, + "/api/media/playlist": { + "get": { + "tags": [ + "Media" + ], + "operationId": "GetByPlaylistid", + "parameters": [ + { + "name": "playlistId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/channel": { + "get": { + "tags": [ + "Media" + ], + "operationId": "GetByChannelid", + "parameters": [ + { + "name": "channelId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/channel/top": { + "get": { + "tags": [ + "Media" + ], + "operationId": "GetByChannelid", + "parameters": [ + { + "name": "channelId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "top", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/{id}/tags": { + "put": { + "tags": [ + "Media" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Media
\r\n", + "operationId": "PutTags", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Media" + ] + } + ] + } + }, + "get": { + "tags": [ + "Media" + ], + "operationId": "GetTags", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/version": { + "get": { + "tags": [ + "Media" + ], + "operationId": "GetVersion1", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/feed/rss/{id}/{top}": { + "get": { + "tags": [ + "MediaFeed" + ], + "operationId": "GetRssFeedByPodcastId", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "top", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "getAllMedia", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "head": { + "tags": [ + "MediaFeed" + ], + "operationId": "GetRssFeedByPodcastId", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "top", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "getAllMedia", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/search-fields": { + "get": { + "tags": [ + "MediaSearch" + ], + "operationId": "GetSearchFields", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/search": { + "get": { + "tags": [ + "MediaSearch" + ], + "operationId": "SearchBibleVerse", + "parameters": [ + { + "name": "q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "pages", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/media/search/text": { + "get": { + "tags": [ + "MediaSearch" + ], + "operationId": "Search", + "parameters": [ + { + "name": "q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "pages", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/subsplash/media/{mediaId}/{podcastId}": { + "get": { + "tags": [ + "MediaSubsplash" + ], + "operationId": "GetSubsplashMedia", + "parameters": [ + { + "name": "mediaId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "podcastId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/subsplash/playlist/{playlistId}/{podcastId}": { + "get": { + "tags": [ + "MediaSubsplash" + ], + "operationId": "GetSubsplashPlaylist", + "parameters": [ + { + "name": "playlistId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "podcastId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/subsplash/podcast/{podcastId}": { + "get": { + "tags": [ + "MediaSubsplash" + ], + "operationId": "GetSubsplashPodcast", + "parameters": [ + { + "name": "podcastId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/metric-age-group": { + "get": { + "tags": [ + "MetricAgeGroup" + ], + "summary": "Get metric age groups", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Metrics, Enter Metric Data for Current Period, Enter Metric Data for Any Period
\r\n
\r\n**Data Access:**
\r\nREAD Access to Metrics", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns all metric age groups." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Current Period" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Any Period" + ] + } + ] + } + }, + "post": { + "tags": [ + "MetricAgeGroup" + ], + "summary": "Create a metric age group", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Metrics", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Web.ViewModels.DataCapture.MetricAgeGroupViewModelMetric age group data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Metric age group." + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + } + }, + "/api/metric-age-group/{id}": { + "put": { + "tags": [ + "MetricAgeGroup" + ], + "summary": "Update the metric age group", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Metrics", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Metric age group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Web.ViewModels.DataCapture.MetricAgeGroupViewModelMetric age group data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricAgeGroupViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated Metric age group." + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MetricAgeGroup" + ], + "summary": "Delete the metric age group", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Metrics", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Metric age group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Metric age group was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + } + }, + "/api/metric-category": { + "get": { + "tags": [ + "MetricCategory" + ], + "summary": "Get metric categories", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Metrics, Enter Metric Data for Current Period, Enter Metric Data for Any Period
\r\n
\r\n**Data Access:**
\r\nREAD Access to Metrics", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns all metric categories." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Current Period" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Any Period" + ] + } + ] + } + }, + "post": { + "tags": [ + "MetricCategory" + ], + "summary": "Create a metric category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Metrics", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Web.ViewModels.DataCapture.MetricCategoryViewModelMetric category data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Metric category." + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + } + }, + "/api/metric-category/{id}": { + "get": { + "tags": [ + "MetricCategory" + ], + "summary": "Get metric category by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Metrics, Enter Metric Data for Current Period, Enter Metric Data for Any Period
\r\n
\r\n**Data Access:**
\r\nREAD Access to Metrics", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Metric category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found metric category." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Current Period" + ] + }, + { + "Permissions": [ + "Enter Metric Data for Any Period" + ] + } + ] + } + }, + "put": { + "tags": [ + "MetricCategory" + ], + "summary": "Update the metric category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Metrics", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Metric category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Web.ViewModels.DataCapture.MetricCategoryViewModelMetric category data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MetricCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated Metric category." + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MetricCategory" + ], + "summary": "Delete the metric category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Metrics", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Metric category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Metric category was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + } + }, + "/api/ministry": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Retrieves paginated list of Central Ministries, by Status", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a list of of Ministries\r\n\r\n**More Info:**
\r\nPowers \"Browse Ministries\" functionality.", + "operationId": "GetAll", + "parameters": [ + { + "name": "status", + "in": "query", + "description": "Ministry Status. 0 = Pending Approval, 1 = Open (Active), 2 = Closed (Inactive)\r\nSee Saddleback.Cm.Contracts.Models.Ministries.MinistryStatus", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Page size for pagination/load more.", + "schema": { + "type": "integer", + "format": "int32", + "default": 50 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page number for pagination/load more.", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Ministries by Status", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ] + } + ] + } + }, + "post": { + "tags": [ + "Ministry" + ], + "summary": "Create Ministry", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Create Global Ministry
\r\n
\r\n**Data Access:**
\r\nWRITE Access to an individual Ministries", + "operationId": "CreateMinistry", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.Ministries.MinistryViewModelCreated ministry data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the Ministry" + }, + "404": { + "description": "Not found" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "409": { + "description": "Ministry data conflict." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Create Global Ministry" + ] + } + ] + } + } + }, + "/api/ministry/names": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Retrieves ministry names (filtered by status if necessary)", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a list of of Ministries\r\n\r\n**More Info:**
\r\nUsed for ministry list in UI comboboxes, like 'Related ministries'", + "operationId": "GetNames", + "parameters": [ + { + "name": "status", + "in": "query", + "description": "Ministry Status. \r\nSee Saddleback.Cm.Contracts.Models.Ministries.MinistryStatus", + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Ministries by Status", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_NamedEntity" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_NamedEntity" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_NamedEntity" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ] + } + ] + } + } + }, + "/api/ministry/{id}": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Gets a Ministry by ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeRelationships", + "in": "query", + "description": "If true, include the relationships. If false, just return base information.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + } + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + }, + "put": { + "tags": [ + "Ministry" + ], + "summary": "Update Ministry", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Global Ministries Details
\r\n
\r\n**Data Access:**
\r\nWRITE Access to an individual Ministries", + "operationId": "UpdateMinistry", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.Ministries.MinistryViewModelUpdated ministry data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the Ministry" + }, + "404": { + "description": "Not found" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "409": { + "description": "Deactivated ministry has open serving opportunities or non-empty interested queue." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Global Ministries Details" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Ministry" + ], + "summary": "Delete Ministry", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Global Ministries Details
\r\n
\r\n**Data Access:**
\r\nWRITE Access to an individual Ministries", + "operationId": "DeleteMinistry", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry was deleted successfully" + }, + "404": { + "description": "Not found" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Global Ministries Details" + ] + } + ] + } + } + }, + "/api/ministry/{id}/lite": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Gets a lite Ministry data by ID", + "description": "**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "GetLiteById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeRelationships", + "in": "query", + "description": "If true, include the relationships. If false, just return base information.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + } + }, + "404": { + "description": "Not found" + } + } + } + }, + "/api/ministry/list": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Gets a Ministry by ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Access Ministry Central
\r\n
\r\n**Data Access:**
\r\nREAD Access to one or more individual Ministries", + "operationId": "GetByIds", + "parameters": [ + { + "name": "ministryIds", + "in": "query", + "description": "Comma separated Ministry Ids", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + } + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + } + ] + } + } + }, + "/api/ministry/location-leader": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Gets a Ministry with location leader by ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Ministry Central
\r\n
\r\n**Data Access:**
\r\nREAD Access to one or more individual Ministries", + "operationId": "GetMinistriesWithLocationLeaderById", + "parameters": [ + { + "name": "ministryIds", + "in": "query", + "description": "Comma separated Ministry Ids", + "schema": { + "type": "string" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "CHurch entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + } + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + } + ] + } + } + }, + "/api/ministry/{id}/can-deactivate": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Can Ministry be deactivated", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "CanDeactivate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry can be deactivated" + }, + "400": { + "description": "Ministry is already deactivated." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + }, + "409": { + "description": "Ministry has open serving opportunities or non-empty interested queue." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/can-change-publish/{publish}": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Can Ministry change publish state", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "CanChangePublishState", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "publish", + "in": "path", + "description": "New publish state", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry can change publish state" + }, + "400": { + "description": "Ministry is inactive." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + }, + "409": { + "description": "Ministry can't change publish state." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/ministry/leaders": { + "get": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n", + "operationId": "GetLeaders", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryLeaderDetailedViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryLeaderDetailedViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryLeaderDetailedViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ] + } + ] + } + } + }, + "/api/ministry/event/{eventId}": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Get Ministries by Event", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to an individual Ministries or Event", + "operationId": "GetMinistriesByEventId", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "query", + "in": "query", + "description": "Query", + "schema": { + "type": "string" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID (Optional). Must be set if room leader validation is required", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry list", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_MinistryWithServingOpportunityStatistics" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_MinistryWithServingOpportunityStatistics" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_MinistryWithServingOpportunityStatistics" + } + } + } + } + }, + "404": { + "description": "Not found" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "409": { + "description": "Ministry data conflict." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/ministry/recommended": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Gets Recommended Ministries", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Settings and Preferences
\r\n
\r\n**Data Access:**
\r\nREAD Access to relatively light data on Recommended Ministries and their Locations (Campuses).", + "operationId": "GetRecommendedMinistries", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Recommended Ministries" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Settings and Preferences" + ] + } + ] + } + }, + "post": { + "tags": [ + "Ministry" + ], + "summary": "Toggle Recommended Ministries", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Settings and Preferences
\r\n", + "operationId": "ToggleRecommendedMinistries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_RecommendedMinistryToggleViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_RecommendedMinistryToggleViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_RecommendedMinistryToggleViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_RecommendedMinistryToggleViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns the Ministry" + }, + "404": { + "description": "Not found" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "409": { + "description": "Ministry data conflict." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Settings and Preferences" + ] + } + ] + } + } + }, + "/api/ministry/{id}/contact": { + "get": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAllContacts", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}/statistics": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Retrieves ministry location statistics", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to counts of Ministry Members by Status", + "operationId": "GetStatistics", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Ministry Location Statistics", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationStatisticsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationStatisticsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationStatisticsViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity": { + "post": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Create Local Ministry
\r\n", + "operationId": "CreateLocation", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Create Local Ministry" + ] + } + ] + } + }, + "put": { + "tags": [ + "Ministry" + ], + "summary": "Update locations", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Local Ministry Details
\r\n
\r\n**Data Access:**
\r\nWrite Access to an individual Ministries", + "operationId": "UpdateLocations", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "locationIds", + "in": "query", + "description": "Comma separated list of location IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Data to update ministry locations", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationBulkUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationBulkUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationBulkUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationBulkUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Ministry locations were updated" + }, + "400": { + "description": "Ministry statuses and properties cannot be changed." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + }, + "409": { + "description": "Ministry Location has open serving opportunities or non-empty interested queue." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Local Ministry Details" + ] + } + ] + } + }, + "get": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries, Access Local Ministries
\r\n", + "operationId": "GetLocations", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeRelationships", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}": { + "put": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Local Ministry Details
\r\n", + "operationId": "UpdateLocation", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Local Ministry Details" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Ministry" + ], + "summary": "Delete location", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Local Ministry Details
\r\n
\r\n**Data Access:**
\r\nWrite Access to an individual Ministries", + "operationId": "DeleteLocation", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry location are deleted" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Local Ministry Details" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + }, + "get": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetLocation", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}/can-deactivate": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Can Ministry Location be deactivated", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "CanDeactivateLocation", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry Location can be deactivated" + }, + "409": { + "description": "Ministry Location has open serving opportunities or non-empty interested queue.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryLocationDeactivationValidationResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryLocationDeactivationValidationResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryLocationDeactivationValidationResult" + } + } + } + }, + "400": { + "description": "Ministry Location is already deactivated." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity/can-deactivate": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Can Ministry Locations be deactivated", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Access Ministry Central
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "CanDeactivateLocations", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityIds", + "in": "query", + "description": "Comma separated Church Entity IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry Location can be deactivated" + }, + "409": { + "description": "Ministry Locations have open serving opportunities or non-empty interested queue.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryDeactivationValidationResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryDeactivationValidationResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryDeactivationValidationResult" + } + } + } + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}/can-change-publish/{publish}": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Can Ministry Location change publish state", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "CanChangePublishStateInLocation", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "publish", + "in": "path", + "description": "New value of publish state", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry Location can change publish state" + }, + "400": { + "description": "Ministry Location is inactive." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + }, + "409": { + "description": "Cannot change publish state." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity/leaders": { + "get": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries, Access Local Ministries
\r\n", + "operationId": "GetLeaders", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/ministry/quick-view": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Get filtered locations for ministry quick view", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Ministry Central
\r\n
\r\n**Data Access:**
\r\nREAD Access to Ministry Locations", + "operationId": "GetFilteredLocations", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Statuses", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedMinistryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeServeHours", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Tags", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsAcceptingNewMembers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Sort", + "in": "query", + "description": "Sort order. Can be [\"ministryname\" | \"churchentityname\" | \"leader\" | \"staffconnector\"],[\"asc\" | \"desc\"]", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry locations records.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_QuickViewMinistryLocationsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_QuickViewMinistryLocationsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_QuickViewMinistryLocationsViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + } + ] + } + } + }, + "/api/ministry/church-entity/{id}": { + "get": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Ministry Central
\r\n", + "operationId": "GetMinistriesByChurchEntity", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + } + ] + } + } + }, + "/api/ministry/notification-communication-variables": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Get email variables for ministry notification templates", + "description": "**Data Access:**
\r\nNo specific access", + "operationId": "GetCommunicationVariables", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of variables to use", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}/communication-template": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Retrieves ministry location communication templates", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to ministry campus", + "operationId": "GetMinistryCommunicationTemplates", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Ministry communication template list", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid parameters" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Entities not found" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + }, + "post": { + "tags": [ + "Ministry" + ], + "summary": "Upserts ministry location communication template", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Local Ministry Details
\r\n
\r\n**Data Access:**
\r\nWRITE Access to ministry campus details", + "operationId": "SaveMinistryCommunicationTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Communication template to insert", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Ministry communication template", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCommunicationTemplateViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Entities not found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Local Ministry Details" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}/communication-template/{ministryCommunicationTemplateId}": { + "delete": { + "tags": [ + "Ministry" + ], + "summary": "Deletes ministry location communication template", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Local Ministry Details
\r\n
\r\n**Data Access:**
\r\nWRITE Access to ministry campus details", + "operationId": "DeleteMinistryCommunicationTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryCommunicationTemplateId", + "in": "path", + "description": "Ministry communication template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ok" + }, + "400": { + "description": "Invalid parameters" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Entities not found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Local Ministry Details" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/tag": { + "put": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Create Global Ministry, Update Global Ministries Details
\r\n", + "operationId": "UpsertTagLinks", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Global Ministry" + ] + }, + { + "Permissions": [ + "Update Global Ministries Details" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + }, + "get": { + "tags": [ + "Ministry" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n", + "operationId": "GetTagLinks", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/notification": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Retrieves last notification results for ministry", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to Ministry", + "operationId": "GetLastNotificationResultsForMinistryAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "NotificationChannel", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns last notification results for ministry", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}/notification": { + "get": { + "tags": [ + "Ministry" + ], + "summary": "Retrieves last notification results for ministry location", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to Ministry", + "operationId": "GetLastNotificationResultsForMinistryLocationAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "NotificationChannel", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Page size", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page number", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns last notification results for ministry location", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/category": { + "get": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "IncludeMinistryCount", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IncludeServingOpportunityCount", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Settings and Preferences
\r\n", + "operationId": "CreateMinistryCategory", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Settings and Preferences" + ] + } + ] + } + } + }, + "/api/ministry/category/{id}": { + "get": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetMinistryCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Settings and Preferences
\r\n", + "operationId": "UpdateMinistryCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Settings and Preferences" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Settings and Preferences
\r\n", + "operationId": "DeleteMinistryCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Settings and Preferences" + ] + } + ] + } + } + }, + "/api/ministry/category/tag": { + "get": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetTags", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Settings and Preferences
\r\n", + "operationId": "InsertTag", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Settings and Preferences" + ] + } + ] + } + } + }, + "/api/ministry/category/tag/{id}": { + "delete": { + "tags": [ + "MinistryCategory" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Settings and Preferences
\r\n", + "operationId": "DeleteTag", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Settings and Preferences" + ] + } + ] + } + } + }, + "/api/ministry/{id}/web-settings": { + "get": { + "tags": [ + "MinistryCentralWebSettings" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetMinistryWebSettings", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "MinistryCentralWebSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Global Web Settings
\r\n", + "operationId": "UpdateMinistryWebSettings", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCentralWebSettingsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCentralWebSettingsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCentralWebSettingsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryCentralWebSettingsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Global Web Settings" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/ministry/masthead": { + "post": { + "tags": [ + "MinistryCentralWebSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Global Web Settings
\r\n", + "operationId": "UploadMasthead", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Global Web Settings" + ], + "RouteParameters": [ + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/thumbnail": { + "post": { + "tags": [ + "MinistryCentralWebSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Global Web Settings
\r\n", + "operationId": "UploadThumbnail", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Global Web Settings" + ], + "RouteParameters": [ + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/appheader": { + "post": { + "tags": [ + "MinistryCentralWebSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Global Web Settings
\r\n", + "operationId": "UploadApphead", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Global Web Settings" + ], + "RouteParameters": [ + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/alt-website-image": { + "post": { + "tags": [ + "MinistryCentralWebSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Global Web Settings
\r\n", + "operationId": "UploadAlternateWebsiteImage", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Global Web Settings" + ], + "RouteParameters": [ + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/group": { + "get": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetGroups", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "post": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Roles and Groups
\r\n", + "operationId": "CreateGroup", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Roles and Groups" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/role": { + "get": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetRoles", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "post": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Roles and Groups
\r\n", + "operationId": "CreateRole", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Roles and Groups" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/group/{id}": { + "get": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetGroup", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "put": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Roles and Groups
\r\n", + "operationId": "UpdateGroup", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Roles and Groups" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Roles and Groups
\r\n", + "operationId": "DeleteGroup", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Roles and Groups" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/role/{id}": { + "get": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetRole", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "put": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Roles and Groups
\r\n", + "operationId": "UpdateRole", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryGroupDetailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Roles and Groups" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MinistryGroup" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Roles and Groups
\r\n", + "operationId": "DeleteRole", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Roles and Groups" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/group/{id}/member": { + "get": { + "tags": [ + "MinistryGroup" + ], + "summary": "Gets Group Members in Group/Role with sorting and pagination", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a list of Ministry Member Records, including portions of associated Person Records.\r\n\r\n**More Info:**
\r\nGets a potentially paginated and filtered list of Members for a specific Group/Role.\r\nGroup/Role ID, Ministry ID and Church Entity ID route parameters are required; all query parameters are optional.", + "operationId": "GetMinistryGroupMembers", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Role/group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "query", + "in": "query", + "description": "Query", + "schema": { + "type": "string" + } + }, + { + "name": "excludeGroup", + "in": "query", + "description": "true to return all members which are not in this group", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Members of the specified group/role.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLocationGroupMemberViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLocationGroupMemberViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLocationGroupMemberViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions and authorization for the specified Church Entity." + }, + "400": { + "description": "Invalid parameters." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "post": { + "tags": [ + "MinistryGroup" + ], + "summary": "Add Ministry Members to Group/Role", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Ministry Members
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a list of Ministry Member Records, including portions of associated Person Records.\r\n\r\n**More Info:**
\r\nGroup/Role ID, Ministry ID and Church Entity ID route parameters are required; all query parameters are optional.", + "operationId": "AddPersonsToGroup", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Role/group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma separated person IDs", + "schema": { + "type": "string" + } + }, + { + "name": "query", + "in": "query", + "description": "Query string", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Members added to role/group successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions and authorization for the specified Church Entity." + }, + "400": { + "description": "Invalid parameters." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MinistryGroup" + ], + "summary": "Remove Ministry Members from Group/Role", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Ministry Members
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a list of Ministry Member Records, including portions of associated Person Records.\r\n\r\n**More Info:**
\r\nGroup/Role ID, Ministry ID and Church Entity ID route parameters are required; all query parameters are optional.", + "operationId": "RemovePersonsFromGroup", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Role/group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma separated person IDs", + "schema": { + "type": "string" + } + }, + { + "name": "query", + "in": "query", + "description": "Query string", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Members removed from role/group successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions and authorization for the specified Church Entity." + }, + "400": { + "description": "Invalid parameters." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/role/{id}/member": { + "get": { + "tags": [ + "MinistryGroup" + ], + "summary": "Gets Group Members in Group/Role with sorting and pagination", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a list of Ministry Member Records, including portions of associated Person Records.\r\n\r\n**More Info:**
\r\nGets a potentially paginated and filtered list of Members for a specific Group/Role.\r\nGroup/Role ID, Ministry ID and Church Entity ID route parameters are required; all query parameters are optional.", + "operationId": "GetMinistryGroupMembers", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Role/group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "query", + "in": "query", + "description": "Query", + "schema": { + "type": "string" + } + }, + { + "name": "excludeGroup", + "in": "query", + "description": "true to return all members which are not in this group", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Members of the specified group/role.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLocationGroupMemberViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLocationGroupMemberViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLocationGroupMemberViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions and authorization for the specified Church Entity." + }, + "400": { + "description": "Invalid parameters." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "post": { + "tags": [ + "MinistryGroup" + ], + "summary": "Add Ministry Members to Group/Role", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Ministry Members
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a list of Ministry Member Records, including portions of associated Person Records.\r\n\r\n**More Info:**
\r\nGroup/Role ID, Ministry ID and Church Entity ID route parameters are required; all query parameters are optional.", + "operationId": "AddPersonsToGroup", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Role/group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma separated person IDs", + "schema": { + "type": "string" + } + }, + { + "name": "query", + "in": "query", + "description": "Query string", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Members added to role/group successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions and authorization for the specified Church Entity." + }, + "400": { + "description": "Invalid parameters." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MinistryGroup" + ], + "summary": "Remove Ministry Members from Group/Role", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Ministry Members
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a list of Ministry Member Records, including portions of associated Person Records.\r\n\r\n**More Info:**
\r\nGroup/Role ID, Ministry ID and Church Entity ID route parameters are required; all query parameters are optional.", + "operationId": "RemovePersonsFromGroup", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Role/group ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma separated person IDs", + "schema": { + "type": "string" + } + }, + { + "name": "query", + "in": "query", + "description": "Query string", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Members removed from role/group successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions and authorization for the specified Church Entity." + }, + "400": { + "description": "Invalid parameters." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/integration/ministry": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Gets all active, published Ministries", + "operationId": "GetAllMinistries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/integration/ministry/{id}": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Gets all active, published Ministries", + "operationId": "GetMinistryById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/integration/ministry/church-entity/{churchEntityId}": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Gets all active, published Ministries with a Location at the specified Campus", + "operationId": "GetMinistriesByChurchEntity", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "description": "Campus ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/integration/ministry/serving-opportunity": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Gets a list of all Published/Public Serving Opportunities that are currently active (i.e. that have a future occurrence)", + "operationId": "GetAllPublishedServingOpportunities", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "Optional Filter by Campus ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "publishedChurchEntityIds", + "in": "query", + "description": "Optional filter for published Campus IDs", + "schema": { + "type": "string" + } + }, + { + "name": "days", + "in": "query", + "description": "Optional Serving Opportunity Filter by days of the week (where days are integers matching enum DayOfWeek). To include multiple days, you must stack them in the URL: &days=1&days=2", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "timeStart", + "in": "query", + "description": "Optional Serving Opportunity Filter by Time Start. This will return Serving Opportunities that start on or after the timeStart.", + "schema": { + "type": "string" + } + }, + { + "name": "timeEnd", + "in": "query", + "description": "Optional Serving Opportunity Filter by Time End. This will return Serving Opportunities that start on or before the timeEnd.", + "schema": { + "type": "string" + } + }, + { + "name": "duration", + "in": "query", + "description": "Optional Serving Opportunity Filter by duration. This will return Serving Opportunities that have a duration less than this value.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "frequency", + "in": "query", + "description": "Optional Serving Opportunity Filter by frequency (where frequency are integers matching enum RecurrenceFrequency). To include multiple frequency, you must stack them in the URL: &frequency=1&frequency=2", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional tags (comma-delimited)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + } + } + } + } + } + }, + "/api/integration/ministry/{id}/serving-opportunity": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Gets a list of Serving Opportunities for a Ministry (all Locations/Campuses)", + "operationId": "GetServingOpportunitiesForMinistry", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + } + } + } + } + } + }, + "/api/integration/ministry/{id}/church-entity/{churchEntityId}/serving-opportunity": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Gets a list of Serving Opportunities for a Ministry Location (Campus)", + "operationId": "GetServingOpportunitiesForMinistry", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location (Campus) ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + } + } + } + } + } + }, + "/api/integration/ministry/index": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Retrieves list of Ministries, grouped by Category", + "operationId": "Index", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "Optional Filter by Campus ID to restrict the results to only those Ministries with a presence at the specified Campus", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/integration/ministry/serving-opportunity/search": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Searches for Ministries and Serving Opportunities", + "operationId": "Search", + "parameters": [ + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Optional Filter by Campus ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "query", + "description": "Optional Filter by Ministry ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional Filter by Tag (where tag is a comma-delimited string of the serving opportunity tags to search)", + "schema": { + "type": "string" + } + }, + { + "name": "days", + "in": "query", + "description": "Optional Serving Opportunity Filter by days of the week (where days are integers matching enum DayOfWeek). To include multiple days, you must stack them in the URL: &days=1&days=2", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "timeStart", + "in": "query", + "description": "Optional Serving Opportunity Filter by Time Start. This will return Serving Opportunities that start on or after the timeStart.", + "schema": { + "type": "string" + } + }, + { + "name": "timeEnd", + "in": "query", + "description": "Optional Serving Opportunity Filter by Time End. This will return Serving Opportunities that start on or before the timeEnd.", + "schema": { + "type": "string" + } + }, + { + "name": "duration", + "in": "query", + "description": "Optional Serving Opportunity Filter by duration. This will return Serving Opportunities that have a duration less than this value.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "frequency", + "in": "query", + "description": "Optional Serving Opportunity Filter by frequency (where frequency are integers matching enum RecurrenceFrequency). To include multiple frequency, you must stack them in the URL: &frequency=1&frequency=2", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Bad Request" + } + } + } + }, + "/api/integration/ministry/serving-opportunity/typeahead": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Provides query suggestions/typeahead results for Ministries and Serving Opportunities", + "operationId": "Typeahead", + "parameters": [ + { + "name": "searchQuery", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Campus Id", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + } + } + } + } + }, + "/api/integration/ministry/{ministryUrl}": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetMinistryDetails", + "parameters": [ + { + "name": "ministryUrl", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/integration/ministry/{ministryUrl}/church-entity": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetMinistryLocations", + "parameters": [ + { + "name": "ministryUrl", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/integration/ministry/{ministryUrl}/church-entity/{churchEntityUrl}": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetMinistryLocationDetails", + "parameters": [ + { + "name": "ministryUrl", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "churchEntityUrl", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/integration/serving-opportunity/{id}": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetServingOpportunityDetailsForWeb", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "privateId", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "occurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/integration/ministry/signup": { + "post": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Adds a new Person to the Ministry Roster for External Systems", + "description": "**Data Access:**
\r\nCREATE new Ministry Member Record (associating a Person to the roster of a Ministry).", + "operationId": "MinistrySignup", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Ministry Member we wish to create. Includes Person ID, initial Status, Leadership Position, Groups, and Roles.", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebMinistrySignUpViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebMinistrySignUpViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebMinistrySignUpViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebMinistrySignUpViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the newly created Ministry Member record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + }, + "400": { + "description": "The POST body is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "404": { + "description": "The requested Ministry was not found." + }, + "409": { + "description": "Person is already a member of the Ministry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/integration/serving-opportunity/signup": { + "post": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Adds a new volunteer to specific serving opportunity for External Systems", + "operationId": "ServingOpportunitySignup", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Volunteer to add", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebServingOpportunitySignUpViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebServingOpportunitySignUpViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebServingOpportunitySignUpViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_WebServingOpportunitySignUpViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Record has been inserted." + }, + "400": { + "description": "Invalid parameters." + }, + "409": { + "description": "Person is already signed up for the Serving Opportunity." + } + } + } + }, + "/api/integration/serving-opportunity/{servingOpportunityId}/volunteer-schedule": { + "get": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Gets a Volunteer's commitment schedule for a given Serving Opportunity", + "description": "**Data Access:**
\r\nREAD serving opp volunteer & schedule data.", + "operationId": "GetServingOpportunityVolunteerSchedulingCommitments", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "verificationToken", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the scheduled commitments", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerScheduleCommitmentResponseViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerScheduleCommitmentResponseViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerScheduleCommitmentResponseViewModel" + } + } + } + }, + "204": { + "description": "Volunteer not found", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "400": { + "description": "The request was not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "404": { + "description": "The requested Serving Opportunity was not found." + } + } + }, + "delete": { + "tags": [ + "MinistryIntegration" + ], + "summary": "Unschedules a Volunteer from a Serving Opportunity", + "description": "**Data Access:**
\r\nWRITE serving opp volunteer schedule data.", + "operationId": "RemoveServingOpportunityVolunteerFromSchedule", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "verificationToken", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "removeFromSingleOccurrence", + "in": "query", + "description": "(optional) defaults to true; ignored if both occurrenceId and occurrenceDateTime are not specified", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "the Volunteer was unscheduled" + }, + "400": { + "description": "The request was not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "404": { + "description": "The requested Serving Opportunity was not found." + } + } + } + }, + "/api/ministry/{id}/church-entity/{churchEntityId}/web-settings": { + "get": { + "tags": [ + "MinistryLocationWebSettings" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "MinistryLocationWebSettings" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Ministry Local Web Settings
\r\n", + "operationId": "Update", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationWebSettingsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationWebSettingsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationWebSettingsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryLocationWebSettingsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Ministry Local Web Settings" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets Ministry Roster with optional filtering and pagination", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Inline Authorization Checks:**
\r\nIf the user does not hold a Leadership Position within this Ministry, then he/she must be authorized for the specified Church Entity.\r\n\r\n**Data Access:**
\r\nREAD Access to a list of Ministry Member Records, including portions of associated Person Records.\r\n\r\n**More Info:**
\r\nGets a potentially paginated and filtered list of Ministry Members for a specific Ministry Location.\r\nMinistry ID and Church Entity ID route parameters are required; all query parameters are optional.", + "operationId": "GetFilteredMinistryMembers", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Comma separated MinistryMemberStatus values", + "schema": { + "type": "string" + } + }, + { + "name": "RoleIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExceptRoleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExceptGroupId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Sort", + "in": "query", + "description": "Sorting parameter \"(id | firstname | birthdate | lastname | addedtoministrydate | addedtogroupdate | addedtoroledate),(asc | desc)\". Optional, by default sorted by score", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Number of results in a page.", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page # of results. First page is 0.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkPublicContacts", + "in": "query", + "description": "True to fill 'HasPublicContacts' field in members' data", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "lite", + "in": "query", + "description": "Returns no person's contact data", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "checkEligibility", + "in": "query", + "description": "True to return eligibility info", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "servingOpportunityId", + "in": "query", + "description": "Check eligibility for serving opportunity instead of ministry", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkServingOpportunityMembership", + "in": "query", + "description": "Check if members are volunteers of Serving Opportunity (ID: servingOpportunityId)", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "checkSmsEligibility", + "in": "query", + "description": "Check if members are able to receive SMS messages (have consented, have one or more mobile phones,\r\nand have not opted out on this cahnnel that this ministry will use.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeContactPreferences", + "in": "query", + "description": "Include Members' Contact Preference", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeMemberProfilePictureUrls", + "in": "query", + "description": "Include Members' Profile Pictures", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeAverageDaysOnRoster", + "in": "query", + "description": "Include the Average Days On the Ministry Roster", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeMemberLastServeDate", + "in": "query", + "description": "Include the Last Serve Date for each Ministry Member", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeMemberServeHours", + "in": "query", + "description": "Include Ministry Serve Hours for each Ministry Member", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Members of the specified Ministry that also meet any specified filter criteria.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions and authorization for the specified Church Entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Adds a new Person to the Ministry Roster", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Create Ministry Members, Create Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nCREATE new Ministry Member Record (associating a Person to the roster of a Ministry).", + "operationId": "CreateMinistryMember", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Ministry Member we wish to create. Includes Person ID, initial Status, Leadership Position, Groups, and Roles.", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the newly created Ministry Member record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + }, + "400": { + "description": "The POST body is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions." + }, + "404": { + "description": "The requested Ministry was not found." + }, + "409": { + "description": "Person is already a member of the Ministry.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Create Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "put": { + "tags": [ + "MinistryMember" + ], + "summary": "Updates an existing Ministry Member record", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Ministry Members, Update Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nUPDATE Ministry Member Record. Only Updates Status, Groups and Roles.", + "operationId": "UpdateMinistryMembers", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "memberIds", + "in": "query", + "description": "Comma separated list of member ids", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Comma separated MinistryMemberStatus values", + "schema": { + "type": "string" + } + }, + { + "name": "RoleIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExceptRoleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExceptGroupId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Sort", + "in": "query", + "description": "Sorting parameter \"(id | firstname | birthdate | lastname | addedtoministrydate | addedtogroupdate | addedtoroledate),(asc | desc)\". Optional, by default sorted by score", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Data to update Ministry Member records", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the updated Ministry Member record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + }, + "400": { + "description": "The PUT body is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Update Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MinistryMember" + ], + "summary": "Deletes Ministry Member records", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Delete Ministry Members, Delete Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nDELETE Ministry Member Records. Logical/soft-delete only.\r\n\r\n**More Info:**
\r\nA subsequent CREATE action for a record with the same Ministry ID, Church Entity ID, and Person ID combination will\r\n\"un-delete\" the existing record, rather than creating another record with the same foreign keys, as together they\r\nare essentially a surrogate, composite key, and have a unique index in the database.\r\n\r\nWhat this means for end-users of the tool is that if a Person is \"Deleted\" from the roster of a Ministry, and then\r\nlater the same Person is added again, earlier history on that Person within that Ministry is retained.", + "operationId": "DeleteMinistryMembers", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "memberIds", + "in": "query", + "description": "Comma separated list of member ids", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Comma separated MinistryMemberStatus values", + "schema": { + "type": "string" + } + }, + { + "name": "RoleIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExceptRoleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExceptGroupId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Sort", + "in": "query", + "description": "Sorting parameter \"(id | firstname | birthdate | lastname | addedtoministrydate | addedtogroupdate | addedtoroledate),(asc | desc)\". Optional, by default sorted by score", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Delete Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member/search-fields": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets a list of fields that can be used in search queries", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nNone really ... ElasticSearch metadata.", + "operationId": "GetSearchFields", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member/{id}": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets the details for a single Ministry Member by ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a single Ministry Member Record, including portions of the associated Person Record.", + "operationId": "GetMember", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Ministry Member ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry Member record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "The requested Ministry Member record was not found." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "put": { + "tags": [ + "MinistryMember" + ], + "summary": "Updates an existing Ministry Member record", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Ministry Members, Update Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nUPDATE Ministry Member Record. Only Updates Status, Groups and Roles.", + "operationId": "UpdateMinistryMember", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Ministry Member ID of the existing record to update", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Updated Ministry Member record", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the updated Ministry Member record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberViewModel" + } + } + } + }, + "400": { + "description": "The PUT body is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "The specified Ministry or the existing Ministry Member was not found." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Update Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member/{id}/activity": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets the activity feed for a single Ministry Member by ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Ministry Member's \"Activity Feed\", which is a history of Status Changes.", + "operationId": "GetMemberActivityFeed", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Ministry Member ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Activity Feed", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusHistory" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusHistory" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusHistory" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "The requested Ministry Member record was not found." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member-list": { + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Creates new Ministry Member Records (associating People to the roster of a Ministry)", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nTrusted application only.", + "operationId": "CreateMinistryMembers", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Ministry Members we wish to create. Includes Person ID and initial Status.", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NewMinistryMembersViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NewMinistryMembersViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NewMinistryMembersViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NewMinistryMembersViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the created Ministry Member statistics.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Dto_AddMinistryMemberResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Dto_AddMinistryMemberResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Dto_AddMinistryMemberResult" + } + } + } + }, + "400": { + "description": "The POST body is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permissions." + }, + "404": { + "description": "The requested Ministry was not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member/{memberId}": { + "delete": { + "tags": [ + "MinistryMember" + ], + "summary": "Deletes a Ministry Member record", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Delete Ministry Members, Delete Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nDELETE Ministry Member Record. Logical/soft-delete only.\r\n\r\n**More Info:**
\r\nA subsequent CREATE action for a record with the same Ministry ID, Church Entity ID, and Person ID combination will\r\n\"un-delete\" the existing record, rather than creating another record with the same foreign keys, as together they\r\nare essentially a surrogate, composite key, and have a unique index in the database.\r\n\r\nWhat this means for end-users of the tool is that if a Person is \"Deleted\" from the roster of a Ministry, and then\r\nlater the same Person is added again, earlier history on that Person within that Ministry is retained.", + "operationId": "DeleteMinistryMember", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "memberId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "The requested Ministry Member record was not found." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Delete Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member/{memberId}/note": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets Notes for a Ministry Member", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Inline Authorization Checks:**
\r\nIf user lacks permission for Sensitive Notes, then any such notes will be redacted.\r\n\r\n**Data Access:**
\r\nREAD access to the list of Notes on the Ministry Member record.", + "operationId": "GetNoteByMinistryMemberId", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "memberId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns any Notes on the specified Ministry Member record.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "The specified Ministry Member was not found or did not match with Ministry ID and Church Entity ID." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Adds a Note to the Ministry Member record", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Ministry Members, Update Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nCREATE a new Note on the Ministry Member Record (which is also associated to the referenced Person Record).", + "operationId": "CreateNote", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "memberId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + } + }, + "400": { + "description": "Proffered view model is invalid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "The specified Ministry Member was not found, or the Member did not match with Ministry ID and Church Entity ID." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Update Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member/{memberId}/note/{id}": { + "put": { + "tags": [ + "MinistryMember" + ], + "summary": "Updates a Ministry Member Note", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Ministry Members, Update Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nUPDATE a Note on the Ministry Member record (which is also associated to the referenced Person Record).", + "operationId": "UpdateNote", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "memberId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Note ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Updated Note", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + } + }, + "400": { + "description": "Proffered view model is invalid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Must have either a Leadership Position in the Ministry, or the required Permission." + }, + "404": { + "description": "The specified Note or Ministry Member was not found, or the Member did not match with Ministry ID and Church Entity ID." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Update Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "MinistryMember" + ], + "summary": "Deletes a Ministry Member Note", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Ministry Members, Update Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nDELETE Ministry Member Note. Logical/soft-delete only.\r\n\r\n**More Info:**
\r\nNot a normal operation. Ministry Leaders are not automatically authorized for this action,\r\nas with other typical operations on the Ministry Roster (until such time as Product Ownership\r\ninstructs the Dev Team otherwise). For now, Permissions to Update Ministry Member and Person\r\nand Church Entity Authorization are required for this action.", + "operationId": "DeleteNote", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "memberId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Proffered view model is invalid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "The specified Note or Ministry Member was not found, or the Member did not match with Ministry ID and Church Entity ID." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Update Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/attachment": { + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Email Ministry Members
\r\n
\r\n**Data Access:**
\r\nUploads the file to cloud storage (Amazon S3) where it can be viewed/downloaded by unauthenticated callers\r\nwith the URL (intended usage is to embed the URL to the file in an email in lieu of actually \"attaching\" the file).", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Email Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/email-variables": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Get email variables", + "description": "**Data Access:**
\r\nNo specific access", + "operationId": "GetEmailVariables", + "parameters": [ + { + "name": "type", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_EmailType" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/email": { + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Send an Email to Members of a Ministry", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Email Ministry Members
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the email to the specified recipients.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Comma separated MinistryMemberStatus values", + "schema": { + "type": "string" + } + }, + { + "name": "RoleIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExceptRoleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExceptGroupId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Sort", + "in": "query", + "description": "Sorting parameter \"(id | firstname | birthdate | lastname | addedtoministrydate | addedtogroupdate | addedtoroledate),(asc | desc)\". Optional, by default sorted by score", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Email Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/email-leaders": { + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Send an Email to Leaders (Leader/Co-Leader/Staff Connector) of multiple minsitries. Will also check whether or not the recipients are acutally leaders in any of the ministries.", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Email Ministry Leadership
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the email to the specified recipients.", + "operationId": "SendEmailToLeadershipOfMultipleMinistries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryCentralEmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryCentralEmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryCentralEmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MinistryCentralEmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Email Ministry Leadership" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/email": { + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Send an Email to all Active Members of a Ministry", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Email Ministry Members
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the email to the specified recipients.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Email Ministry Members" + ], + "RouteParameters": [ + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/leader-ids": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets ministry leader IDs.", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access", + "operationId": "GetLeaderIds", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Ministry Location IDs", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryLocationIdsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryLocationIdsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryLocationIdsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryLocationIdsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/ministry/event-assigned": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets Ministry IDs with at least one Serving Opportunity assigned to given Event.", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access", + "operationId": "GetMinistriesWithServingOpportunityAssignedToEvent", + "parameters": [ + { + "name": "eventId", + "in": "query", + "description": "Event ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "CHurch Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryIds", + "in": "query", + "description": "List of ministry IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/related-id": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Gets ministry IDs for related to the given ministry", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access", + "operationId": "GetRelatedMinistryIds", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "404": { + "description": "Ministry nor found", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/ministry/email-multiple-ministries": { + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Sends Email to Members of Multiple Ministries", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Email Multiple Ministry Rosters
\r\n
\r\n**Inline Authorization Checks:**
\r\nCaller must have \"Email Ministry Members\" permission at all specified Ministry Locations.\r\n\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the email to the specified recipients.", + "operationId": "SendEmailToMembersOfMultipleMinistries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MultipleMinistryEmailRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MultipleMinistryEmailRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MultipleMinistryEmailRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MultipleMinistryEmailRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Email Multiple Ministry Rosters" + ] + } + ] + } + } + }, + "/api/ministry/multiple-ministry-recipients": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Used to hydrate a recipient list when communicating with multiple ministries", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Email Multiple Ministry Rosters
\r\n
\r\n**Data Access:**\r\nREAD access to very basic Person and Ministry Membership data (Person ID, First and Last Name, and Status in each Ministry).", + "operationId": "GetCommunicationRecipientsForMultipleMinistries", + "parameters": [ + { + "name": "MinistryIds", + "in": "query", + "description": "Comma-separated list of Ministry IDs", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "description": "Comma-Separated list of Church Entity IDs", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Comma-separated list of Person Unique IDs for any people that should be excluded\r\nfrom the recipients list calculated from the specified Ministry Locations.", + "schema": { + "type": "string" + } + }, + { + "name": "ParsedMinistryIds", + "in": "query", + "description": "Get accessor for the Saddleback.Cm.Web.ViewModels.Ministries.MultipleMinistryEmailRecipientRequestViewModel.MinistryIds parsed into an index-accessible collection of integer IDs.", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "ParsedChurchEntityIds", + "in": "query", + "description": "Get accessor for the Saddleback.Cm.Web.ViewModels.Ministries.MultipleMinistryEmailRecipientRequestViewModel.ChurchEntityIds parsed into an index-accessible collection of integer IDs.", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Email Multiple Ministry Rosters" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/sms-eligibility": { + "get": { + "tags": [ + "MinistryMember" + ], + "summary": "Checks SMS eligibility for a select list of recipients drawn from the ministry roster", + "description": "**Authorization Policy:**
\r\nRequires access to all of these Permissions: Send SMS to Ministry Members, Send SMS to Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nREAD access to informational (but not deeply personal) data about eligibility to send SMS messages\r\nto the specified Persons that are memebrs of the specified Ministry.\r\n\r\nIf the SMS recipient list is not explicit, but rather based on a filter/query applied to the roster,\r\nthen the M:Saddleback.Cm.Web.Controllers.Ministries.MinistryMemberController.GetFilteredMinistryMembers(System.Int32,System.Int32,Saddleback.Cm.Web.ViewModels.Ministries.MinistryMemberFilterQuery,System.Nullable{System.Int32},System.Nullable{System.Int32},System.Boolean,System.Boolean,System.Boolean,System.Nullable{System.Int32},System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean) method should be used instead, specifying the flag to\r\nalso perform the SMS eligibility check on all of the filtered ministry members returned by the query.", + "operationId": "CheckSmsEligibility", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma-separated list of Person Unique IDs of the intended SMS recipients", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Send SMS to Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Send SMS to Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/sms": { + "post": { + "tags": [ + "MinistryMember" + ], + "summary": "Send an SMS to Members of a Ministry and InterestedInMinistry person", + "description": "**Authorization Policy:**
\r\nRequires access to all of these Permissions: Send SMS to Ministry Members, Send SMS to Interested Ministry Members
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the SMS to the specified recipients.", + "operationId": "SendSms", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Comma separated MinistryMemberStatus values", + "schema": { + "type": "string" + } + }, + { + "name": "RoleIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExceptRoleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExceptGroupId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Sort", + "in": "query", + "description": "Sorting parameter \"(id | firstname | birthdate | lastname | addedtoministrydate | addedtogroupdate | addedtoroledate),(asc | desc)\". Optional, by default sorted by score", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Message", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Send SMS to Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + }, + { + "Permissions": [ + "Send SMS to Interested Ministry Members" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry/{ministryId}/church-entity/{churchEntityId}/member/export": { + "post": { + "tags": [ + "MinistryMember" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Ministry Member Data
\r\n", + "operationId": "RequestMinistryMembersDataExport", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Format", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusType" + } + }, + { + "name": "Statuses", + "in": "query", + "description": "Comma separated MinistryMemberStatus values", + "schema": { + "type": "string" + } + }, + { + "name": "RoleIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExceptRoleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExceptGroupId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Sort", + "in": "query", + "description": "Sorting parameter \"(id | firstname | birthdate | lastname | addedtoministrydate | addedtogroupdate | addedtoroledate),(asc | desc)\". Optional, by default sorted by score", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Ministry Member Data" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/ministry-public": { + "get": { + "tags": [ + "MinistryPublicSearch" + ], + "summary": "Retrieves paginated list of Central Ministries, by Status", + "description": "**Data Access:**
\r\nREAD Access to a list of of Ministries\r\n\r\n**More Info:**
\r\nPowers \"Browse Ministries\" functionality.", + "operationId": "GetAllPublic", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Ministries by Status", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + } + } + } + } + } + } + } + }, + "/api/ministry-public/index": { + "get": { + "tags": [ + "MinistryPublicSearch" + ], + "summary": "Retrieves list of Ministries, grouped by Category", + "operationId": "Index", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "Optional Filter by Campus ID to restrict the results to only those Ministries with a presence at the specified Campus", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/ministry-public/search": { + "get": { + "tags": [ + "MinistryPublicSearch" + ], + "summary": "Searches for Ministries and Serving Opportunities", + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MinistryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Tag", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAcceptingNewMembers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFuzzySearch", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Bad Request" + } + } + } + }, + "/api/ministry-public/{id}": { + "get": { + "tags": [ + "MinistryPublicSearch" + ], + "summary": "Gets a Public Ministry by ID", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExpandOptions", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandLimit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_WebMinistryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_WebMinistryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_WebMinistryViewModel" + } + } + } + } + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/ministry-public/{id}/church-entity": { + "get": { + "tags": [ + "MinistryPublicSearch" + ], + "summary": "Gets Ministry locations \r\n**Data Access:**
\r\nREAD Access to an individual Ministries", + "operationId": "GetLocations", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExpandOptions", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandLimit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Ministry Locations" + }, + "404": { + "description": "Not found" + } + } + } + }, + "/api/ministry-public/recommended": { + "get": { + "tags": [ + "MinistryPublicSearch" + ], + "summary": "Gets all recommended ministries", + "operationId": "GetRecommendedMinistries", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Recommended Ministries With Locations" + } + } + } + }, + "/api/ministry/search-fields": { + "get": { + "tags": [ + "MinistrySearch" + ], + "operationId": "GetSearchFields", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/ministry/search": { + "get": { + "tags": [ + "MinistrySearch" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Global Ministries
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "Status", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedMinistryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Tags", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Global Ministries" + ] + } + ] + } + } + }, + "/api/notification-center/{id}": { + "get": { + "tags": [ + "NotificationCenter" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Personal Data
\r\n", + "operationId": "GetNotificationCenterByIdAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_NotificationChannelType" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ] + } + ] + } + } + }, + "/api/occupation-category": { + "get": { + "tags": [ + "OccupationCategory" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/occurrence/{id}": { + "get": { + "tags": [ + "Occurrence" + ], + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/occurrence/date": { + "get": { + "tags": [ + "Occurrence" + ], + "operationId": "GetIdByDate", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/occurrence": { + "get": { + "tags": [ + "Occurrence" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetOccurrences", + "parameters": [ + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleEntityTypeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "Occurrence" + ], + "summary": "Update an occurrence", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Worship Services
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Services", + "operationId": "UpdateOccurrence", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.Schedules.OccurrenceViewModelOccurrence data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + } + } + }, + "responses": { + "200": { + "description": "Return updated occurrence." + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Worship Services" + ], + "ModelParameterName": [ + "occurrenceViewModel" + ] + } + ] + } + } + }, + "/api/permission": { + "get": { + "tags": [ + "Permission" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Security Roles, Manage User Access
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + }, + { + "Permissions": [ + "Manage User Access" + ] + } + ] + } + } + }, + "/api/permission/hierarchy": { + "get": { + "tags": [ + "Permission" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Security Roles, Manage User Access
\r\n", + "operationId": "GetPermissionHierarchy", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + }, + { + "Permissions": [ + "Manage User Access" + ] + } + ] + } + } + }, + "/api/permission/{permissionId}/usage/roles": { + "get": { + "tags": [ + "Permission" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Security Roles, Manage User Access
\r\n", + "operationId": "GetPermissionUsageInRoles", + "parameters": [ + { + "name": "permissionId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + }, + { + "Permissions": [ + "Manage User Access" + ] + } + ] + } + } + }, + "/api/permission/{permissionId}/usage/users": { + "get": { + "tags": [ + "Permission" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Security Roles, Manage User Access
\r\n", + "operationId": "GetPermissionUsageAmongUsers", + "parameters": [ + { + "name": "permissionId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + }, + { + "Permissions": [ + "Manage User Access" + ] + } + ] + } + } + }, + "/api/person/{id}": { + "get": { + "tags": [ + "Person" + ], + "summary": "Gets a Person record by visible/external Unique Person Identifier (not DB PK)", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Personal Data
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "integer: Visible/external Unique Person Identifier (not DB PK)", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeContactDetails", + "in": "query", + "description": "Boolean flag indicating to include Person contact details", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeOccupations", + "in": "query", + "description": "Boolean flag indicating to include Person occupations", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "suppressMergeRedirect", + "in": "query", + "description": "Boolean flag dictating behavior when a Person is requested that has been merged into a different Person record and discarded.\r\nIf TRUE, will issue 200 OK response with JSON payload indicating the current ID for the Person (i.e. for the surviving or kept record in the merge).\r\nIf FALSE (default), will issue 302 Found response that redirects to the correct Person", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "ministryId", + "in": "query", + "description": "Ministry ID. Used only for ministry member operations", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Church entity ID. Used only for ministry member operations", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "302": { + "description": "Redirect" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + }, + "put": { + "tags": [ + "Person" + ], + "summary": "Updates top-level data on an existing Person record", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Personal Data
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "integer: Visible/external Unique Person Identifier (not DB PK)", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.People.PersonViewModel: inbound Person record with updates applied.", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Personal Data" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Person" + ], + "description": "**Authorization Policy:**
\r\nRequires access to all of these Permissions: Delete Personal Data, Delete Person Contact Data
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Delete Personal Data", + "Delete Person Contact Data" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/person": { + "get": { + "tags": [ + "Person" + ], + "summary": "Gets \"Lite\" Person records by visible/external Unique Person Identifiers (not DB PKs)", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to \"lite\" level of detail for multiple person records. This entails top-level attributes on the person\r\nentity only; it includes no contact details or any other child entities of the the perosn records.\r\n\r\n**More Info:**
\r\nThis endpoint does not return 403 Forbidden if one or more of the requested persons are associated to an\r\nunauthorized Campus. Instead, results are filtered by the authorized Campus (\"church entity\") scopes on caller's\r\npermissions.", + "operationId": "GetByIds", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "Comma separated unique IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ] + } + ] + } + }, + "post": { + "tags": [ + "Person" + ], + "operationId": "Post", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "hasConsentedToSms", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/person/bulk": { + "post": { + "tags": [ + "Person" + ], + "summary": "Gets \"Lite\" Person records by visible/external Unique Person Identifiers (not DB PKs)", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access only.", + "operationId": "GetByIds", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person unique IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/{id}/allergy": { + "put": { + "tags": [ + "Person" + ], + "summary": "Update person allergies", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Persons, WRITE access for Event where person takes attendance", + "operationId": "UpdateAllergies", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Allergies list", + "content": { + "application/json-patch+json": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + }, + "application/*+json": { + "schema": { + "type": "string" + } + } + } + }, + "responses": { + "200": { + "description": "Allergies were updated successfully." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/api/person/match-or-create": { + "post": { + "tags": [ + "Person" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "GetsertPerson", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/export/preview": { + "get": { + "tags": [ + "Person" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Person Data
\r\n", + "operationId": "GetDataExportPreview", + "parameters": [ + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "MilestoneId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "MilestoneChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "MilestoneDateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MilestoneDateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Person Data" + ] + } + ] + } + } + }, + "/api/person/export/request": { + "post": { + "tags": [ + "Person" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Person Data
\r\n", + "operationId": "RequestDataExport", + "parameters": [ + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "MilestoneId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "MilestoneChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "MilestoneDateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MilestoneDateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Person Data" + ] + } + ] + } + } + }, + "/api/person/{id}/previous-ids": { + "get": { + "tags": [ + "Person" + ], + "summary": "Retrieves any previous Unique IDs fo records merged into current Person", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Person Audit Logs
\r\n
\r\n**Data Access:**
\r\nREAD Access to a list of any previous Person Unique IDs (given a person's current Unique ID).", + "operationId": "GetPreviousIds", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person unique ID to check", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person unique ID.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "404": { + "description": "Person not found by specified current Unique ID." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Person Audit Logs" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/person/{id}/public-contact": { + "get": { + "tags": [ + "Person" + ], + "summary": "Retrieves the given person's public contact info", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetPersonPublicContactById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person's public contact info.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonPublicContactViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonPublicContactViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonPublicContactViewModel" + } + } + } + }, + "400": { + "description": "Invalid. Something about the provided parameters is not valid", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/person/has-public-contacts": { + "get": { + "tags": [ + "Person" + ], + "summary": "Retrieves person IDs with public contacts", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD Access to a persons.", + "operationId": "HasPublicContacts", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "Person unique IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person unique IDs.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/public-contact": { + "get": { + "tags": [ + "Person" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n", + "operationId": "GetPersonPublicContactByIds", + "parameters": [ + { + "name": "ids", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/{personId}/qr-code/png": { + "get": { + "tags": [ + "Person" + ], + "summary": "Gets person QR Code PNG image", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to Persons", + "operationId": "GetPersonQrCodePng", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Id", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Base64", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "PixelsPerModule", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Size", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "EmbedLogo", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ForegroundColor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "BackgroundColor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "LogoPercentage", + "in": "query", + "schema": { + "maximum": 100, + "minimum": 0, + "type": "integer", + "format": "int32" + } + }, + { + "name": "Transparent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code PNG file." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{id}/qr-code/svg": { + "get": { + "tags": [ + "Person" + ], + "summary": "Gets person QR Code SVG image", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to Persons", + "operationId": "GetPersonQrCodeSvg", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pixelsPerModule", + "in": "query", + "description": "Module size in pixels", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code SVG file." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/person/{personId}/qr-code/bmp": { + "get": { + "tags": [ + "Person" + ], + "summary": "Gets person QR Code BMP image", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to Persons", + "operationId": "GetPersonQrCodeBmp", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Id", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Base64", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "PixelsPerModule", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Size", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "EmbedLogo", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ForegroundColor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "BackgroundColor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "LogoPercentage", + "in": "query", + "schema": { + "maximum": 100, + "minimum": 0, + "type": "integer", + "format": "int32" + } + }, + { + "name": "Transparent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code PNG file." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/qr-code": { + "get": { + "tags": [ + "Person" + ], + "summary": "Gets person by QR Code string", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Persons", + "operationId": "GetPersonByQrCode", + "parameters": [ + { + "name": "qrCode", + "in": "query", + "description": "QR Code string", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Person data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + } + } + }, + "400": { + "description": "Invalid QR code." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + }, + "409": { + "description": "Unsupported QR code." + } + } + } + }, + "/api/person/{personId}/address": { + "get": { + "tags": [ + "PersonAddress" + ], + "summary": "Gets Person Mailing Addresses by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's list of Mailing Addresses", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Person Mailing Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonAddress" + ], + "summary": "Upserts a Person's list of Mailing Addresses", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's list of Mailing Addresses. Performs Inserts, Updates and Deletes as needed.", + "operationId": "UpsertAddresses", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Mailing address list", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated list of Person Mailing Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/address-single": { + "post": { + "tags": [ + "PersonAddress" + ], + "summary": "Upserts a Person's Mailing Address", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's list of Mailing Addresses. Performs Inserts, Updates and Deletes as needed.", + "operationId": "UpsertAddress", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Mailing address", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated list of Person Mailing Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/address/{addressId}": { + "delete": { + "tags": [ + "PersonAddress" + ], + "summary": "Deletes a specific mailing address from a Person", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Delete Person Contact Data
\r\n
\r\n**Data Access:**
\r\nDELETE a mailing address from a Person. Logical/soft-delete only.", + "operationId": "DeleteAddress", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "addressId", + "in": "path", + "description": "ID of the Person address to delete", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Delete succeeded" + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/admin/milestone": { + "get": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Gets all Milestones", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a collection of Milestones.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.", + "operationId": "GetMilestones", + "parameters": [ + { + "name": "includeInactive", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns a collection of Milestones.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + } + } + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Creates a new Milestone", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a Milestone.\r\nCreates new Milestone record and returns the result.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.\r\n* Can ONLY be called authenticated and authorized.", + "operationId": "CreateMilestone", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the created Milestone.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + } + }, + "409": { + "description": "Conflict." + }, + "400": { + "description": "POST body is not valid." + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Updates an existing list of Milestones", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a Milestone.\r\nUpdates existing Milestone records and returns the results.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.\r\n* Can ONLY be called authenticated and authorized.", + "operationId": "UpdateMilestones", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns the updated Milestone.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + } + } + }, + "409": { + "description": "Conflict." + }, + "400": { + "description": "PUT body is not valid." + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/milestone/{milestoneId}": { + "get": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Gets a Milestone by ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a Milestone.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.", + "operationId": "GetMilestone", + "parameters": [ + { + "name": "milestoneId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the requested Milestone.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + } + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + }, + "404": { + "description": "Entity Not Found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Updates an existing Milestone", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a Milestone.\r\nUpdates an existing Milestone record and returns the result.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.\r\n* Can ONLY be called authenticated and authorized.", + "operationId": "UpdateMilestone", + "parameters": [ + { + "name": "milestoneId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneInboundViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the updated Milestone.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + } + }, + "409": { + "description": "Conflict." + }, + "400": { + "description": "POST body is not valid." + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + }, + "404": { + "description": "Entity Not Found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/milestone/{milestoneId}/usage": { + "get": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Gets usage statistics for the specified Milestone", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nREAD access for aggregate statistics about where the specified Milestone is used throughout the system.\r\n\r\n**More Information:**
\r\nCurrently returns:\r\n* Number of People in the system that have the specified Milestone\r\n* Number of Ministry Locations in the system where the specified Milestone is an eligibility requirement", + "operationId": "GetMilestoneUsageStatistics", + "parameters": [ + { + "name": "milestoneId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the usage statistics for the requested Milestone.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneUsageStatsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneUsageStatsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneUsageStatsViewModel" + } + } + } + }, + "401": { + "description": "Caller is not authenticated." + }, + "403": { + "description": "Caller lacks required permissions." + }, + "404": { + "description": "Specified Milestone was not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/milestone/{id}/active": { + "put": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Makes a Milestone Active", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nUPDATES a Milestone to be Active", + "operationId": "ActivateMilestone", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/milestone/{id}/inactive": { + "put": { + "tags": [ + "PersonAdminMilestone" + ], + "summary": "Makes a Milestone Inactive", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nUPDATES a Milestone to be Inactive", + "operationId": "InactivateMilestone", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/note-category": { + "get": { + "tags": [ + "PersonAdminNoteCategory" + ], + "summary": "Gets all Note Categories", + "description": "**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a collection of Note Categories.\r\n \r\n**More Info:**
\r\nIntended for admin users of HC Admin.", + "operationId": "GetNoteCategories", + "parameters": [ + { + "name": "includeInactive", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns a collection of Note Categories.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + } + } + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + } + } + }, + "post": { + "tags": [ + "PersonAdminNoteCategory" + ], + "summary": "Creates a new Note Category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a Note Category.\r\nCreates new Note Category record and returns the result.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.\r\n* Can ONLY be called authenticated and authorized.", + "operationId": "CreateNoteCategory", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the created Note Categories.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + } + } + }, + "400": { + "description": "POST body is not valid." + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + }, + "409": { + "description": "Conflict." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/note-category/{noteCategoryId}": { + "get": { + "tags": [ + "PersonAdminNoteCategory" + ], + "summary": "Gets a Note Category by ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a Note Category.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.", + "operationId": "GetNoteCategory", + "parameters": [ + { + "name": "noteCategoryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns a collection of Note Categories.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + } + } + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + }, + "404": { + "description": "Entity Not Found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "PersonAdminNoteCategory" + ], + "summary": "Updates an existing Note Category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nMANAGE Person Record Settings (People Area) Access to a Note Category.\r\nUpdates an existing Note Category record and returns the result.\r\n\r\n**More Info:**
\r\nIntended for admin users of HC Admin.\r\n* Can ONLY be called authenticated and authorized.", + "operationId": "UpdateNoteCategory", + "parameters": [ + { + "name": "notecategoryId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteCategoryInboundViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the updated Note Categories.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteCategoryViewModel" + } + } + } + } + }, + "400": { + "description": "POST body is not valid." + }, + "401": { + "description": "UnAuthorized Request." + }, + "403": { + "description": "Forbidden Request." + }, + "404": { + "description": "Entity Not Found." + }, + "409": { + "description": "Conflict." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/note-category/{id}/active": { + "put": { + "tags": [ + "PersonAdminNoteCategory" + ], + "summary": "Makes a Note Category Active", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nUPDATES a Note Category to be Active", + "operationId": "ActivateNoteCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/admin/note-category/{id}/inactive": { + "put": { + "tags": [ + "PersonAdminNoteCategory" + ], + "summary": "Makes a Note Category Inactive", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Record Settings
\r\n
\r\n**Data Access:**
\r\nUPDATES a Note Category to be Inactive", + "operationId": "InactivateNoteCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Record Settings" + ] + } + ] + } + } + }, + "/api/person/{personId}/agreement": { + "get": { + "tags": [ + "PersonAgreement" + ], + "summary": "Gets a list of records of the specified person's agreements", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
\r\nREAD access to records about a person's consent to various system agreements.\r\nNo personally identifiable information about the referenced person is included.\r\nThe data includes metadata about the agreement, and the date the person agreed\r\nto it (and, if applicable, the date the person revoked such agreement).\r\n\r\n**More Info:**
includeAgreementContent flag will alter the response view model\r\ndepending on its value. If it is True then the response will be a collection of\r\nSaddleback.Cm.Services.Sdk.Core.ViewModels.Application.PersonAgreementDetailViewModel objects; otherwise it will be a collection\r\nof Saddleback.Cm.Services.Sdk.Core.ViewModels.Application.PersonAgreementLiteViewModel objects.", + "operationId": "GetPersonAgreements", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID (integer)", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeRevoked", + "in": "query", + "description": "Flag indicating whether or not to include revoked agreements (boolean).\r\nOptional; defaults to false if not specified.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeAgreementContent", + "in": "query", + "description": "Flag indicating whether or not to the actual detailed content of the referenced agreement (boolean).\r\nOptional; defaults to false if not specified.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAgreementDetailViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAgreementDetailViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAgreementDetailViewModel" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonAgreement" + ], + "summary": "Creates a new record of a Person's consent to an Agreement", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
\r\nWRITE access to create new record of a Person's consent to an Agreement.\r\nIt is absolutely critical to security and regulatory compliance\r\nthat such an action has strong non-repudiation!\r\n\r\n**More Info:**
\r\nIdeally, this action should be performed by an authenticated user on his or her\r\nown person record. However, there are scenarios where such consent will be\r\ncollected in an unauthenticated context, e.g. via \"verification token workflow\",\r\nand so we do allow this action to be performed on behalf of a particular person\r\nby the system using a client credentials bearer token with \"internal systems access\" \r\nscope. This needs to be used thoughtfully and carefully, as there is potential for\r\nabuse that threatens the non-repudiation of the consent being recorded.", + "operationId": "RecordPersonAgreement", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID (integer)", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Services.Sdk.Core.ViewModels.Application.PersonAgreementRequestViewModel", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementLiteViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/agreement/{agreementId}": { + "delete": { + "tags": [ + "PersonAgreement" + ], + "summary": "Marks a Person Agreement record as Revoked", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
\r\nWRITE access to update a record of a Person's consent to an Agreement\r\nby adding a Revoke timestamp, indicating the Person has withdrawn his\r\nor her consent.\r\n\r\nIt is absolutely critical to security and regulatory compliance\r\nthat such an action has strong non-repudiation!\r\n\r\n**More Info:**
\r\nIdeally, this action should be performed by an authenticated user on his or her\r\nown person record. We do allow this action to be performed on behalf of a particular\r\nperson by the system using a client credentials bearer token with\r\n\"internal systems access\" scope. This needs to be used thoughtfully and carefully,\r\nas there is potential for abuse that threatens the non-repudiation of the revokation of\r\nconsent being recorded.", + "operationId": "RevokePersonAgreement", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "agreementId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAgreementLiteViewModel" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api/audit-log/person": { + "get": { + "tags": [ + "PersonAuditLog" + ], + "summary": "Gets all Person Audit Logs, paginated", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Person Audit Logs
\r\n
\r\n**Inline Authorization Checks:**
\r\nAny Notes on Audit Logs that are marked as Sensitive will be redacted if the caller lacks permission\r\nfor Sensitive Notes.\r\n\r\n**Data Access:**
\r\nREAD access to Person Audit Log data, and any Notes attached to these Audit Logs.\r\n\r\n**More Information:**
\r\nUsed to power \"Global\" People Management Audit Log. Paginated at the database level, with page size\r\nof 20. Can be filtered to only include Audit Logs within a specified date range.", + "operationId": "GetForAllPersons", + "parameters": [ + { + "name": "Category", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Editor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Source", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "SortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortDir", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "description": "Page number if pagination is being used. First page is 0.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "description": "Page size (defaults to 150 if omitted)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns requested page of Audit Logs.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AuditLogViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AuditLogViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AuditLogViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have Permission to Access Person Audit Logs." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Person Audit Logs" + ] + } + ] + } + } + }, + "/api/audit-log/person/{personId}": { + "get": { + "tags": [ + "PersonAuditLog" + ], + "summary": "Gets all Audit Logs for a single Person", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Person Audit Logs
\r\n
\r\n**Inline Authorization Checks:**
\r\nAny Notes on Audit Logs that are marked as Sensitive will be redacted if the caller lacks permission\r\nfor Sensitive Notes.\r\n\r\n**Data Access:**
\r\nREAD access to Audit Logs for a single Person.", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AuditLogViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AuditLogViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AuditLogViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Must have Permission to Access Person Audit Logs." + }, + "404": { + "description": "Requested person not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Person Audit Logs" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/audit-log/{id}/note": { + "post": { + "tags": [ + "PersonAuditLog" + ], + "summary": "Appends a Note to a Person Audit Log entry", + "description": "**Authorization Policy:**
\r\nRequires access to all of these Permissions: Access Person Audit Logs, Create Person Notes
\r\n
\r\n**Data Access:**
\r\nCREATE access to Notes associated to Person Audit Log Entries\r\n\r\n**More Info:**
\r\nAlways appends a new Note to the audit log entry. Does not allow an existing note to be updated.\r\nAlso, does not currently allow a Sensitive Note to be created on the Audit Log.", + "operationId": "AppendAuditLogNote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Audit Log ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AuditLogNoteCreateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AuditLogNoteCreateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AuditLogNoteCreateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AuditLogNoteCreateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "" + }, + "403": { + "description": "Not authorized. Must have Permission to Access Person Audit Logs and Create Person Notes." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Person Audit Logs", + "Create Person Notes" + ] + } + ] + } + } + }, + "/api/person-basic/base/{id}": { + "get": { + "tags": [ + "PersonBasic" + ], + "summary": "Gets Saddleback.Cm.Contracts.Models.People.PersonBasic by Unique ID", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD access to \"Person Base\" information\r\n\r\n**More Info:**
\r\nMostly intended for use for HC internal remote procedure calls;\r\nnot really intended for use by the back-office client application or other consumers.", + "operationId": "GetBaseById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonBase" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonBase" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonBase" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person-basic/{id}": { + "get": { + "tags": [ + "PersonBasic" + ], + "summary": "Gets Saddleback.Cm.Contracts.Models.People.PersonBasic by Unique ID", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD access to \"Person Basic\" information (First Name, Last Name, Primary Email and associated verification metadata)\r\n\r\n**More Info:**
\r\nMostly intended for use for HC internal remote procedure calls;\r\nnot really intended for use by the back-office client application or other consumers.", + "operationId": "GetBasicById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person-basic": { + "post": { + "tags": [ + "PersonBasic" + ], + "summary": "Gets Saddleback.Cm.Contracts.Models.People.PersonBasic data for multiple Persons by a collection of Unique IDs", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD access to \"Person Basic\" information (First Name, Last Name, Primary Email and associated verification metadata)\r\n\r\n**More Info:**
\r\nMostly intended for use for HC internal remote procedure calls;\r\nnot really intended for use by the back-office client application or other consumers.", + "operationId": "GetBasicByUniqueId", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person request data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonByIdRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonByIdRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonByIdRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonByIdRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/{id}/connection": { + "get": { + "tags": [ + "PersonConnection" + ], + "summary": "Gets All the ministry leaders of any ministry that given person is related to by person's unique Id", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Relationships
\r\n", + "operationId": "GetPersonConnectionsByPersonUniqueId", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkInValidation", + "in": "query", + "description": "True to enable check-in validation", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Should be set for checkInValidation", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "onlyFamily", + "in": "query", + "description": "If True, will skip querying for Ministry and Small Group Leaders and only return related People with other relationship types (mostly typical Family relationships)", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonConnectionViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonConnectionViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonConnectionViewModel" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Relationships" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/person/{personId}/contactPreferences": { + "get": { + "tags": [ + "PersonContactPreference" + ], + "summary": "Gets Person Contact Preferences by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's Contact Preferences", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person's Contact Preferences", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonContactPreference" + ], + "summary": "Upserts a Person's Contact Preferences", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's Contact Preferences", + "operationId": "Upsert", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Contact Preferences", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Person's updated Contact Preferences", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/contactPreferences": { + "get": { + "tags": [ + "PersonContactPreference" + ], + "summary": "Gets Person Contact Preferences filtered by Person Unique IDs", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's Contact Preferences", + "operationId": "GetByPersonIds", + "parameters": [ + { + "name": "personIds", + "in": "query", + "description": "Person Unique IDs", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person's Contact Preferences", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceDtoViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceDtoViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceDtoViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Contact Data" + ] + } + ] + } + } + }, + "/api/person/notification": { + "post": { + "tags": [ + "PersonContactPreference" + ], + "summary": "Gets Notification Person information by Person Unique IDs", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access only", + "operationId": "GetNotificationPersons", + "parameters": [ + { + "name": "contactOnly", + "in": "query", + "description": "True to retrieve only contact preferences/is deceased", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person Unique IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns Notification Person list", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_NotificationPerson" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_NotificationPerson" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_NotificationPerson" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/{personId}/credential": { + "get": { + "tags": [ + "PersonCredentials" + ], + "summary": "Gets Person Credentials by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Manage Person Credentials
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person Credentials", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ApplicationUser" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ApplicationUser" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ApplicationUser" + } + } + } + } + }, + "403": { + "description": "Not authorized" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Person Credentials" + ] + } + ] + } + } + }, + "/api/person/credential/{id}/send-email-verification": { + "post": { + "tags": [ + "PersonCredentials" + ], + "summary": "Sends Email Verification Request by User Account ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Credentials
\r\n", + "operationId": "SendEmailVerification", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "User Account ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Not authorized" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Credentials" + ] + } + ] + } + } + }, + "/api/person/credential/{id}/send-password-reset": { + "post": { + "tags": [ + "PersonCredentials" + ], + "summary": "Sends Password Reset Request by User Account ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Credentials
\r\n", + "operationId": "SendPasswordReset", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "User Account ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Not authorized" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Credentials" + ] + } + ] + } + } + }, + "/api/person/credential/{id}/unlock": { + "post": { + "tags": [ + "PersonCredentials" + ], + "summary": "Sends Unlock Request by User Account ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Credentials
\r\n", + "operationId": "Unlock", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "User Account ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Not authorized" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Credentials" + ] + } + ] + } + } + }, + "/api/person/credential/{id}/change-email/{email}": { + "post": { + "tags": [ + "PersonCredentials" + ], + "summary": "Changes a User's Email", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:people-credentials-manage
\r\nAllowed With one of these Permissions: Manage Person Credentials, Manage Person Credentials Email
\r\n
\r\n**Data Access**
\r\nAllows an authenticated User with a special permission or client security scope to change a selected user's login email (via Identity Server API).", + "operationId": "UpdateEmail", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "User Account ID", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "email", + "in": "path", + "description": "User Email", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "verify", + "in": "query", + "description": "Require User Email Verification Flag", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "User Login Email Changed Successfully", + "content": { + "text/plain": { + "schema": { + "type": "boolean" + } + }, + "application/json": { + "schema": { + "type": "boolean" + } + }, + "text/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "500": { + "description": "Internal Server Error" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:people-credentials-manage" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Person Credentials" + ] + }, + { + "Permissions": [ + "Manage Person Credentials Email" + ] + } + ] + } + } + }, + "/api/person/{personId}/document": { + "get": { + "tags": [ + "PersonDocument" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Person Documents
\r\n", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "excludeMilestoneDocuments", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Person Documents" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonDocument" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Create Person Documents
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "overwrite", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Create Person Documents" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/document/{id}": { + "put": { + "tags": [ + "PersonDocument" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Person Documents
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonDocumentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonDocumentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonDocumentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonDocumentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Person Documents" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "PersonDocument" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Delete Person Documents
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Delete Person Documents" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/duplicate": { + "get": { + "tags": [ + "PersonDuplicate" + ], + "summary": "Retrive deduplication groups from the given deduplication report", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Merge Person Records
\r\n
\r\n**Data Access:**
\r\nREAD access to Personal and Contact information", + "operationId": "Get", + "parameters": [ + { + "name": "groupPageSize", + "in": "query", + "description": "Maximum groups number", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "dupesListSize", + "in": "query", + "description": "Maximum duplication items number in each group", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "reportId", + "in": "query", + "description": "Report ID. If default (0), use the last one", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "classificationBound", + "in": "query", + "description": "Classification filter for deduplicaion items. Items should have classification value less or equal to this one.", + "schema": { + "$ref": "#/components/schemas/Core_Model_MatchingClassification" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Merge Person Records" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonDuplicate" + ], + "summary": "Search deduplication items for given person data (not using DB)", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Merge Person Records
\r\n
\r\n**Data Access:**
\r\nREAD access to Person search information", + "operationId": "GetDuplicate", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Person not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Merge Person Records" + ] + } + ] + } + } + }, + "/api/person/duplicate/{personId}": { + "get": { + "tags": [ + "PersonDuplicate" + ], + "summary": "Retrive deduplication items for given person from the given deduplication report", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Merge Person Records
\r\n
\r\n**Data Access:**
\r\nREAD access to Personal and Contact information", + "operationId": "GetGroup", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "reportId", + "in": "query", + "description": "Report ID. If default (0), use the last one", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "dupesListSize", + "in": "query", + "description": "Maximum duplication items number", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "classificationBound", + "in": "query", + "description": "Classification filter for deduplicaion items. Items should have classification value less or equal to this one.", + "schema": { + "$ref": "#/components/schemas/Core_Model_MatchingClassification" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Person not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Merge Person Records" + ] + } + ] + } + } + }, + "/api/person/duplicate/statistics": { + "get": { + "tags": [ + "PersonDuplicate" + ], + "summary": "Retrive deduplication statistic for the given deduplication report", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Merge Person Records
\r\n
\r\n**Data Access:**
\r\nREAD access to Personal and Contact information", + "operationId": "GetStatistic", + "parameters": [ + { + "name": "reportId", + "in": "query", + "description": "Report ID. If default (0), use the last one", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "classificationBound", + "in": "query", + "description": "Classification filter for deduplicaion items. Items should have classification value less or equal to this one.", + "schema": { + "$ref": "#/components/schemas/Core_Model_MatchingClassification" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Merge Person Records" + ] + } + ] + } + } + }, + "/api/person/{personId}/duplicate": { + "get": { + "tags": [ + "PersonDuplicate" + ], + "summary": "Search deduplication items for given person", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Merge Person Records
\r\n
\r\n**Data Access:**
\r\nREAD access to Person search information", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dupesListSize", + "in": "query", + "description": "Maximum duplication items number", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "classificationBound", + "in": "query", + "description": "Classification filter for deduplicaion items. Items should have classification value less or equal to this one.", + "schema": { + "$ref": "#/components/schemas/Core_Model_MatchingClassification" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Person not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Merge Person Records" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/duplicate/mismatch": { + "post": { + "tags": [ + "PersonDuplicate" + ], + "summary": "Set mismatch for persons", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Merge Person Records
\r\n
\r\n**Data Access:**
\r\nWRITE access for merging", + "operationId": "CreateMismatch", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Web.ViewModels.People.MismatchViewModelMismatch data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MismatchViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MismatchViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MismatchViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MismatchViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "400": { + "description": "Invalid mismatch data." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Merge Person Records" + ] + } + ] + } + } + }, + "/api/person/{personId}/emailaddress": { + "get": { + "tags": [ + "PersonEmail" + ], + "summary": "Gets Person Emails by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's list of Email Addresses\r\n\r\n**More Info:**
\r\n* Returns 404 if the person record is not found.\r\n* Returns 400 if the person has Do Not Contact (global) preference set.\r\n* If person exists, doesn't have a Do Not Contact preference, and doesn't actually have any emails,\r\n this call will produce an empty collection.", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Person Email Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonEmail" + ], + "summary": "Upserts a Person's list of Emails", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's list of Email Addresses. Performs Inserts, Updates and Deletes as needed.", + "operationId": "UpsertEmails", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "verify", + "in": "query", + "description": "Boolean flag: If True, send verification emails for any new email addresses", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Address list", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated list of Person Email Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + }, + "409": { + "description": "Conflict (trying to add same email address to same person multiple times)" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/emailaddress-single": { + "post": { + "tags": [ + "PersonEmail" + ], + "summary": "Upserts a Person's Email", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's list of Email Addresses. Performs Inserts, Updates and Deletes as needed.", + "operationId": "UpsertEmail", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "verify", + "in": "query", + "description": "Boolean flag: If True, send verification emails for any new email addresses", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Address", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated list of Person Email Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + }, + "409": { + "description": "Conflict (trying to add same email address to same person multiple times)" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/emailaddress/{emailId}": { + "delete": { + "tags": [ + "PersonEmail" + ], + "summary": "Deletes a specific email address from a Person", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Delete Person Contact Data
\r\n
\r\n**Data Access:**
\r\nDELETE an email address from a Person. Logical/soft-delete only.", + "operationId": "DeleteEmail", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "emailId", + "in": "path", + "description": "ID of the Person email to delete", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Delete succeeded" + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/emergency-contact": { + "get": { + "tags": [ + "PersonEmergencyContact" + ], + "summary": "Gets Person Emergency Contacts by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Emergency Contacts
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's Emergency Contacts", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person's Emergency Contacts", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Emergency Contacts" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonEmergencyContact" + ], + "summary": "Upserts a Person's Emergency Contact", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With one of these Permissions: Create Person Emergency Contacts, Update Person Emergency Contacts
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's Contact Preferences", + "operationId": "Upsert", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Contact Preferences", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Person's updated Contact Preferences", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Person Emergency Contacts" + ], + "RouteParameters": [ + "personId" + ] + }, + { + "Permissions": [ + "Update Person Emergency Contacts" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/primary-emergency-contact": { + "post": { + "tags": [ + "PersonEmergencyContact" + ], + "summary": "Gets Person Primary Emergency Contacts by Person Unique IDs", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access only", + "operationId": "GetPrimaryEmergencyContacts", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person Unique IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns Person's Primary Emergency Contacts", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/{personId}/emergency-contact/delete": { + "post": { + "tags": [ + "PersonEmergencyContact" + ], + "summary": "Delete a Person's Emergency Contact", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Delete Person Emergency Contacts
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's Contact Preferences", + "operationId": "Delete", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Contact Preferences", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Person's updated Contact Preferences", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Person Emergency Contacts" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/facebook": { + "get": { + "tags": [ + "PersonFacebook" + ], + "summary": "Gets Person Facebook Info by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's Facebook Info", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person Facebook", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonFacebookViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonFacebookViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonFacebookViewModel" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/facebook": { + "post": { + "tags": [ + "PersonFacebook" + ], + "summary": "Gets token by Person Facebook Info", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetToken", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person Facebook", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonFacebookViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonFacebookViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonFacebookViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonFacebookViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Token", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/person/update-family/church-entity": { + "put": { + "tags": [ + "PersonFamilyUpdate" + ], + "summary": "Updates Home Campus for multiple Persons", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Personal Data
\r\n
\r\n**Data Access:**
\r\nUPDATE access to Campus for multiple Persons\r\n\r\n**More Info:**
\r\nIntended usage is to apply a Home Campus update to multiple family members at once.", + "operationId": "UpdateHomeCampus", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyCampusUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyCampusUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyCampusUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyCampusUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Update succeeded" + }, + "400": { + "description": "Request is invalid" + }, + "403": { + "description": "Not authorized" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Personal Data" + ], + "ModelParameterName": [ + "viewModel" + ] + } + ] + } + } + }, + "/api/person/update-family/address": { + "put": { + "tags": [ + "PersonFamilyUpdate" + ], + "summary": "Updates Primary Address for multiple Persons", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nUPDATE access to Campus for multiple Persons\r\n\r\n**More Info:**
\r\nIntended usage is to apply a Primary Address update to multiple family members at once.\r\nUses Address Standardizer to compare address to see if the inbound address already exists in the\r\ncollection of addresses for each of the specified persons.", + "operationId": "UpdatePrimaryAddress", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyAddressUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyAddressUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyAddressUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FamilyAddressUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Update succeeded" + }, + "400": { + "description": "Request is invalid" + }, + "403": { + "description": "Not authorized" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ] + } + ] + } + } + }, + "/api/person/{personId}/giving": { + "get": { + "tags": [ + "PersonGiving" + ], + "summary": "Gets Person Giving by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Giving
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's Giving", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person Giving", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonGivingViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonGivingViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonGivingViewModel" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Giving" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/giving/family": { + "get": { + "tags": [ + "PersonGiving" + ], + "summary": "Gets Person Giving by Person Unique ID and the spouses Giving Date as well", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Giving
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's Giving", + "operationId": "GetFamilyGivingByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person Giving", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonGivingViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonGivingViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonGivingViewModel" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Giving" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{uniqueId}/groups": { + "get": { + "tags": [ + "PersonGroups" + ], + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Personal Data
\r\n", + "operationId": "GetPersonGroups", + "parameters": [ + { + "name": "uniqueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "uniqueId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ], + "RouteParameters": [ + "uniqueId" + ] + } + ] + } + } + }, + "/api/person/group": { + "post": { + "tags": [ + "PersonGroups" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "CreateSmallGroup", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/person/group/participant": { + "post": { + "tags": [ + "PersonGroups" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "AcceptSmallGroupInvite", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupParticipantViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupParticipantViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupParticipantViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SmallGroupParticipantViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/integration/person": { + "get": { + "tags": [ + "PersonIntegration" + ], + "summary": "Searches for Person record by Email Address", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD Access to very basic Person info (ID, name and email).\r\n\r\n**More Info:**
\r\nIntended for integration partners with very basic person data needs.\r\nUsed by PEACE Mission Trips Management.\r\n\r\nBecause it is only returning a small subset of person data, it is **_not_** performing security\r\ntrimming by church structure.", + "operationId": "SearchPersonsByEmail", + "parameters": [ + { + "name": "email", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns collection of matched Person records.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + } + } + } + }, + "400": { + "description": "Query string parameters are not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonIntegration" + ], + "summary": "Creates a new \"lite\" Person record.", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nCREATE and READ Access on Person. Creates a new \"lite\" Person record with name and email\r\nand returns the result with its Unique ID.\r\n\r\n**More Info:**
\r\nIntended for creating Person records as needed during Identity Server Account Registration,\r\nand also for integration partners with very basic person data needs, but that potentially need to\r\ncreate new records (e.g. PEACE Mission Trips Management).\r\n\r\nAll other callers are encouraged to first search for an existing record by email before invoking this endpoint\r\nto create a new record.", + "operationId": "CreatePersonLiteAsync", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Person record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + } + } + }, + "400": { + "description": "POST body is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/integration/person/{id}": { + "get": { + "tags": [ + "PersonIntegration" + ], + "summary": "Retrieves person details", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD Access to full Person info.\r\n\r\n**More Info:**
\r\nReturns Person data using the SDK model. Currently, only authorizes Identity Server (illeism client).", + "operationId": "GetPersonDetails", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Person.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Person_SDK" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Person_SDK" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_Person_SDK" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/integration/person/{id}/set-consent": { + "post": { + "tags": [ + "PersonIntegration" + ], + "summary": "Creates a new \"lite\" Person record.", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nCREATE and READ Access on Person. Creates a new \"lite\" Person record with name and email\r\nand returns the result with its Unique ID.\r\n\r\n**More Info:**
\r\nIntended for creating Person records as needed during Identity Server Account Registration,\r\nand also for integration partners with very basic person data needs, but that potentially need to\r\ncreate new records (e.g. PEACE Mission Trips Management).\r\n\r\nAll other callers are encouraged to first search for an existing record by email before invoking this endpoint\r\nto create a new record.", + "operationId": "SetConsentedByPersonUniqueIdAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns created Person record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + } + } + }, + "400": { + "description": "POST body is not valid." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/lite": { + "get": { + "tags": [ + "PersonLite" + ], + "summary": "Retrieves details on Lite Person records for the queue", + "description": "**Authorization Policy:**
\r\nRequires access to all of these Permissions: Read Personal Data, Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to very basic Person info (ID, name and email), as well as some person audit data (source and create date)\r\n\r\n**More Info:**
\r\nPowers the Person Lite Queue in the CM application.", + "operationId": "QueryLitePersonRecords", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortDescending", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns page of Person Lite records, along with total count.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + } + } + }, + "400": { + "description": "Query string parameters are not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Personal Data", + "Read Person Contact Data" + ] + } + ] + } + } + }, + "/api/person/{id}/membership-status": { + "put": { + "tags": [ + "PersonMembershipStatus" + ], + "summary": "Updates a Person's Membership Status", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Person Membership Status
\r\n
\r\n**Inline Authorization Checks:**
\r\nCertain membership status transitions must be accompanied by a note that must be marked sensitive.\r\nCaller must also possess permission for creating sensitive notes in these cases. \r\n\r\n**Data Access:**
\r\nUPDATE access specifically to the Membership Status field of a Person record.\r\n\r\n**More Info:**
\r\nThe regular Person PUT / Update endpoint will not update Membership Status.\r\nIt is only update-able via this endpoint.", + "operationId": "UpdateMembershipStatus", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MembershipStatusUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MembershipStatusUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MembershipStatusUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_MembershipStatusUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Successfully updated Membership Status." + }, + "400": { + "description": "Membership Status update cannot be processed." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Person Membership Status" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/person/merge": { + "post": { + "tags": [ + "PersonMerge" + ], + "summary": "Merge persons", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Merge Person Records
\r\n
\r\n**Inline Authorization Checks:**
\r\nUser should have access to person's church entities.\r\n\r\n**Data Access:**
\r\nUPDATE and DELETE Access to a Person Record, including portions of the associated records.", + "operationId": "Merge", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Merging data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MergeDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MergeDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MergeDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MergeDto" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the merged Person record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Has no access to Person UPDATE and DELETE or not authorized for specific person's church entity." + }, + "404": { + "description": "The one of Person records were not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Merge Person Records" + ] + } + ] + } + } + }, + "/api/person/mergeable": { + "get": { + "tags": [ + "PersonMerge" + ], + "summary": "Generate person's meta data for manual person merging", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person Record, including portions of the associated records.", + "operationId": "GetMergeable", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Merging data", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Persons' meta data to merge.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MergeDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MergeDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_MergeDto" + } + } + } + }, + "403": { + "description": "Not authorized. Has no access to read the persons." + }, + "404": { + "description": "The one of Person records were not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ] + } + ] + } + } + }, + "/api/person/{id}/milestone": { + "get": { + "tags": [ + "PersonMilestone" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:people-milestone-read
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Milestones
\r\n", + "operationId": "GetPersonMilestones", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:people-milestone-read" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Milestones" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonMilestone" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:people-milestone-create, hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Create Person Milestones
\r\n", + "operationId": "CreatePersonMilestone", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:people-milestone-create", + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Person Milestones" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + } + }, + "/api/person/milestone": { + "post": { + "tags": [ + "PersonMilestone" + ], + "summary": "Gets person milestones for person list", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access only", + "operationId": "GetPersonMilestones", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person & milestone IDs", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAndMilestoneIdsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAndMilestoneIdsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAndMilestoneIdsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonAndMilestoneIdsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/milestone/{personMilestoneId}": { + "get": { + "tags": [ + "PersonMilestone" + ], + "summary": "Gets a single Person Milestone record by Person Milestone ID", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD access to a single Person Milestone record.\r\n\r\n**More Information:**
\r\nCurrently mostly used for REST SDK (e.g. for Follow Ups Rules Engine to fetch Person Milestone details for its processing).", + "operationId": "GetPersonMilestone", + "parameters": [ + { + "name": "personMilestoneId", + "in": "path", + "description": "Person Milestone ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkPrerequisites", + "in": "query", + "description": "Boolean flag indicating whether to check for any prerequisites for the Milestone type\r\nfor the specified Person Milestone record, and, if there are any, whether the Person has satisfied them.
\r\nOptional; defaults to False (i.e. omit this check).", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/{personId}/milestone/{milestoneId}": { + "put": { + "tags": [ + "PersonMilestone" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Person Milestones
\r\n", + "operationId": "UpdatePersonMilestone", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "milestoneId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Person Milestones" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/milestone/{personMilestoneId}": { + "delete": { + "tags": [ + "PersonMilestone" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Delete Person Milestones
\r\n", + "operationId": "DeletePersonMilestoneDate", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personMilestoneId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Delete Person Milestones" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{id}/ministry": { + "get": { + "tags": [ + "PersonMinistry" + ], + "summary": "Gets ministry membership records for a person", + "description": "**Data Access:**
\r\nREAD Access to a list of Ministry Member Records for a single Person.", + "operationId": "GetMinistriesByPerson", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "query", + "description": "Ministry ID. Used only for ministry member and SO operations", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Church entity ID. Used only for ministry member and SO operations", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityId", + "in": "query", + "description": "Serving Opportunity ID. Used only for SO operations", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Ministry Member records for specified person", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryMemberDetailedViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryMemberDetailedViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryMemberDetailedViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/person/{id}/my-ministries": { + "get": { + "tags": [ + "PersonMinistry" + ], + "summary": "Gets Person's My Ministries", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n", + "operationId": "GetMyMinistries", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Ministries a person is involved with", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + } + } + }, + "404": { + "description": "Person not found.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MyMinistryWithLocationViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ] + } + } + }, + "/api/person/{id}/my-serving-opportunities": { + "get": { + "tags": [ + "PersonMinistry" + ], + "summary": "Gets Person's My Serving Opportunities", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n", + "operationId": "GetMyServingOpportunities", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "endDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "includeAllOccurrences", + "in": "query", + "description": "", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Person's My Serving Opportunities", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + } + } + }, + "404": { + "description": "Person not found.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityDataViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ] + } + } + }, + "/api/person/{personId}/ministry-serving-hours": { + "get": { + "tags": [ + "PersonMinistry" + ], + "summary": "Gets Person's My Ministry Serving Hours", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n", + "operationId": "GetPersonMinistryServingHours", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Ministry Serving Hours for a person", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + } + } + }, + "404": { + "description": "Person not found.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonMinistry" + ], + "summary": "Add an entry of a Person's Ministry Serving Hours", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
", + "operationId": "AddPersonMinistryServingHours", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the newly added Ministry Serving Hours entry", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid model" + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "put": { + "tags": [ + "PersonMinistry" + ], + "summary": "Update an entry of a Person's Ministry Serving Hours", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
", + "operationId": "UpdatePersonMinistryServingHours", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the updated Ministry Serving Hours entry", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonMinistryServingHoursViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid model" + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/ministry-serving-hours/{id}": { + "delete": { + "tags": [ + "PersonMinistry" + ], + "summary": "Deletes a specific entry of a Person's Ministry Serving Hours", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
\r\nDELETE an entry of a Person's Ministry Serving Hours. Logical/soft-delete only.", + "operationId": "DeletePersonMinistryServingHours", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of an entry of Ministry Serving Hours", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Delete succeeded" + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{id}/serving-opportunities/eligibility": { + "get": { + "tags": [ + "PersonMinistry" + ], + "summary": "Check Person's Serving Opportunities Eligibility", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
", + "operationId": "GetMyServingOpportunityEligibilities", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "string of comma delimited serving opportunity Ids", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Person's My Serving Opportunities", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + } + } + }, + "401": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + } + } + }, + "404": { + "description": "Person not found.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonServingOpportunityEligibilityViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ] + } + } + }, + "/api/person/note/search": { + "get": { + "tags": [ + "PersonNote" + ], + "summary": "Search Notes", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Person Notes
\r\n", + "operationId": "SearchNotes", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "NoteCategoryFilter", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PinnedFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "EntityType", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ReminderFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_PersonNoteSearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonNoteSearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonNoteSearchResultsViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Notes" + ] + } + ] + } + } + }, + "/api/person/{personId}/note": { + "get": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Person Notes
\r\n", + "operationId": "GetNotesByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:people-note-create, hc:internal-systems
\r\nAllowed With Permission: Create Person Notes
\r\n", + "operationId": "CreateNote", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:people-note-create", + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/note/attendee/count": { + "post": { + "tags": [ + "PersonNote" + ], + "summary": "Gets person note counts", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Person Notes
\r\n
\r\n**Data Access:**
\r\nREAD Access to very Person notes", + "operationId": "GetAttendeeNotesCount", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person attendance data", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_PersonAttendance" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_PersonAttendance" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_PersonAttendance" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_PersonAttendance" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns note counts.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_NotesCount" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_NotesCount" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_NotesCount" + } + } + } + } + }, + "400": { + "description": "Invalid body.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/note/{id}": { + "get": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Person Notes
\r\n", + "operationId": "GetNoteById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Notes" + ] + } + ] + } + } + }, + "/api/person/note/{entityType}/{id}": { + "get": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "GetNotesByEntityId", + "parameters": [ + { + "name": "entityType", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/note/{entityType}/count": { + "get": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "GetNotesCount", + "parameters": [ + { + "name": "entityType", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "ids", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/{personId}/note/{id}": { + "put": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Update Person Notes
\r\n", + "operationId": "UpdateNote", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Delete Person Notes
\r\n", + "operationId": "DeleteNote", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/note/pin": { + "post": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:people-note-pin
\r\nAllowed With Permission: Update Person Notes
\r\n", + "operationId": "PinNotes", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:people-note-pin" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/note/unpin": { + "post": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Person Notes
\r\n", + "operationId": "UnPinNotes", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/note/{noteId}/reminder": { + "post": { + "tags": [ + "PersonNote" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Create Person Notes, Update Person Notes
\r\n", + "operationId": "CreateNoteReminderScheduleAsync", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "noteId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteReminderViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteReminderViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteReminderViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_NoteReminderViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Person Notes" + ], + "RouteParameters": [ + "personId" + ] + }, + { + "Permissions": [ + "Update Person Notes" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/occupation": { + "get": { + "tags": [ + "PersonOccupation" + ], + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Occupations
\r\n", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Occupations" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonOccupation" + ], + "summary": "Creates a new occupation for the given person id", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Create Person Occupations
\r\n", + "operationId": "InsertOccupation", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Person Occupations" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/occupation/{occupationId}": { + "put": { + "tags": [ + "PersonOccupation" + ], + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Occupations
\r\n", + "operationId": "UpdateOccupation", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occupationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Occupations" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "PersonOccupation" + ], + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Delete Person Occupations
\r\n", + "operationId": "DeleteOccupation", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occupationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Person Occupations" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/phone": { + "get": { + "tags": [ + "PersonPhone" + ], + "summary": "Gets Person Phone Numbers by Person Unique ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's list of Phone Numbers", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Person Mailing Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonPhone" + ], + "summary": "Upserts a Person's list of Phone Numbers", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's list of Phone Numbers. Performs Inserts, Updates and Deletes as needed.", + "operationId": "UpsertPhones", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Phone numbers list", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated list of Person Phone Numbers", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/phone": { + "get": { + "tags": [ + "PersonPhone" + ], + "summary": "Gets Person's Phones filtered by Unique IDs", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Person's list of Phone Numbers", + "operationId": "GetByPersonIds", + "parameters": [ + { + "name": "personIds", + "in": "query", + "description": "Person Unique ID", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "PhoneTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Person Mailing Addresses", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Contact Data" + ] + } + ] + } + } + }, + "/api/person/{personId}/phone-single": { + "post": { + "tags": [ + "PersonPhone" + ], + "summary": "Upserts a Person's Phone Number", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nWRITE Access to a Person's list of Phone Numbers. Performs Inserts, Updates and Deletes as needed.", + "operationId": "UpsertPhone", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Phone number", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated list of Person Phone Numbers", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/phone/{phoneId}": { + "delete": { + "tags": [ + "PersonPhone" + ], + "summary": "Deletes a specific phone number from a Person", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Delete Person Contact Data
\r\n
\r\n**Data Access:**
\r\nDELETE a phone number from a Person. Logical/soft-delete only.", + "operationId": "DeletePhone", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "phoneId", + "in": "path", + "description": "ID of the Person phone number to delete", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Delete succeeded" + }, + "403": { + "description": "Not authorized" + }, + "404": { + "description": "Person not Found" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Person Contact Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/userpreference": { + "post": { + "tags": [ + "PersonPreference" + ], + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonUserPreference" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonUserPreference" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonUserPreference" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonUserPreference" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/userpreference/public-contacts": { + "post": { + "tags": [ + "PersonPreference" + ], + "summary": "Updates current user public contacts", + "description": "**Data Access:**
\r\nUPDATE person contacts.", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person's public contacts IDs", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_PublicContactsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_PublicContactsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_PublicContactsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_PublicContactsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Opersation is completed successfully" + }, + "400": { + "description": "The body is not valid or contains invalid contact IDs." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "The specified email or phone were not found." + } + } + } + }, + "/api/preview-feature/{id}": { + "put": { + "tags": [ + "PersonPreviewFeature" + ], + "operationId": "TogglePreviewFeature", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FeatureToggleRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FeatureToggleRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FeatureToggleRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_FeatureToggleRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/person/avatar": { + "post": { + "tags": [ + "PersonProfile" + ], + "summary": "Sets a person's \"Web Avatar\" image", + "description": "**Inline Authorization Checks:**
\r\nCaller must either be the person record owner, or have \"Update Personal Data Permission\" and be authorized for person's home campus (church entity).\r\n\r\n**Data Access**
\r\nInserts or updates the person's \"Web Avatar\" image", + "operationId": "PostAvatar", + "parameters": [ + { + "name": "personId", + "in": "query", + "description": "Person Unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Image successfully uploaded and saved." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "The referenced Person record was not found." + } + } + } + }, + "/api/person/photo": { + "post": { + "tags": [ + "PersonProfile" + ], + "summary": "Sets a person's \"Staff Photo\" image", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Personal Data
\r\n
\r\n**Inline Authorization Checks:**
\r\nCaller must be authorized for person's home campus (church entity).\r\n\r\n**Data Access**
\r\nInserts or updates the person's \"Staff Photo\" image", + "operationId": "PostStaffPhoto", + "parameters": [ + { + "name": "personId", + "in": "query", + "description": "Person Unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Image successfully uploaded and saved." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "The referenced Person record was not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Personal Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/avatar": { + "get": { + "tags": [ + "PersonProfile" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAvatar", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "delete": { + "tags": [ + "PersonProfile" + ], + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Delete Personal Data
\r\n", + "operationId": "DeleteAvatar", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Delete Personal Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/photo": { + "get": { + "tags": [ + "PersonProfile" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetStaffPhoto", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "g", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "delete": { + "tags": [ + "PersonProfile" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Delete Personal Data
\r\n", + "operationId": "DeleteStaffPhoto", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Delete Personal Data" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/profile-picture-url": { + "post": { + "tags": [ + "PersonProfile" + ], + "summary": "Gets profile pictures", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nOnly for internal usage", + "operationId": "GetProfilePicturesUrls", + "parameters": [ + { + "name": "personProfilePictureType", + "in": "query", + "description": "Profile picture type", + "schema": { + "$ref": "#/components/schemas/Core_Model_PersonProfilePictureType" + } + }, + { + "name": "usePictureIdentifier", + "in": "query", + "description": "Use picture identifier", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person unique IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns created Person record.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_PersonProfilePictureKeyValuePair" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_PersonProfilePictureKeyValuePair" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_PersonProfilePictureKeyValuePair" + } + } + } + } + }, + "403": { + "description": "Not Authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/person/relation": { + "get": { + "tags": [ + "PersonRelation" + ], + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/person/relationship/{id}": { + "get": { + "tags": [ + "PersonRelationship" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Person Relationships
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Person Relationships" + ] + } + ] + } + }, + "put": { + "tags": [ + "PersonRelationship" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Person Relationships
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "force", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Person Relationships" + ] + } + ] + } + }, + "delete": { + "tags": [ + "PersonRelationship" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Delete Person Relationships
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Delete Person Relationships" + ] + } + ] + } + } + }, + "/api/person/{personId}/relationship": { + "get": { + "tags": [ + "PersonRelationship" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Person Relationships
\r\n", + "operationId": "GetPersonRelationships", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeRelativeProfilePictureUrls", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Person Relationships" + ], + "RouteParameters": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/relationship": { + "post": { + "tags": [ + "PersonRelationship" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Create Person Relationships
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "force", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Create Person Relationships" + ] + } + ] + } + } + }, + "/api/person/relationship/validate": { + "post": { + "tags": [ + "PersonRelationship" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Create Person Relationships
\r\n", + "operationId": "Validate", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonRelationshipViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Create Person Relationships" + ] + } + ] + } + } + }, + "/api/person/search-fields": { + "get": { + "tags": [ + "PersonSearch" + ], + "operationId": "GetSearchFields", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/person/typeahead": { + "get": { + "tags": [ + "PersonSearch" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Person Search
\r\n", + "operationId": "TypeAhead", + "parameters": [ + { + "name": "q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "includeDeceased", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "churchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Person Search" + ] + } + ] + } + } + }, + "/api/person/search": { + "get": { + "tags": [ + "PersonSearch" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Person Search
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "pageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "includeDeceased", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "churchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "eventId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkInType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Dto_PersonCheckInType" + } + }, + { + "name": "refPersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "isUser", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "checkMembership", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "ageCategory", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Dto_AgeCategory" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Person Search" + ] + } + ] + } + } + }, + "/api/user": { + "get": { + "tags": [ + "PersonSecurity" + ], + "summary": "Gets all Users, but their basic information only (name, campus and avatar)", + "description": "**Data Access:**
\r\nREAD access on very basic information for all users. Deliberately not restricted by Manage User Access permission,\r\nnor filtered per Church Structure (campus) scope. (Optionally can be filtered by one or more selected Campus IDs if desired.)\r\n\r\n**More Info:**
\r\nThis endpoint is intended for use cases like producing a list of all users in the system, to which Follow Up [Tasks] could be reassigned.\r\nWe are deliberately *not* making this method require Manage User Access permission. \r\nMost Healthy Church Users that do need to work with Follow Up [Tasks] and would be calling this endpoint\r\nwould not have Manage User Access permission (as that permission is typically reserved for APIs\r\npowering the user access and security management UIs).", + "operationId": "GetAll", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "q", + "in": "query", + "description": "Optional search term to filter the list of users. If numeric, is assumed to a Person Unique ID. Otherwise it searches against person name and primary email.", + "schema": { + "type": "string" + } + }, + { + "name": "includeDisabledUsers", + "in": "query", + "description": "Boolean flag whether or not to include disabled/inactive users. Defaults to FALSE if ommitted (active users only).", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "churchEntityIds", + "in": "query", + "description": "Optional comma-separated", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Users.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityLiteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityLiteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityLiteViewModel" + } + } + } + } + } + } + } + }, + "/api/user/{id}": { + "get": { + "tags": [ + "PersonSecurity" + ], + "summary": "Gets details for a single User by Person Unique ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage User Access
\r\n
\r\n**Inline Authorization Checks**:
\r\nThe caller must be authorized for the Home Campus of the underlying Person to request the security details\r\nof the User.\r\n\r\n**Data Access:**
\r\nREAD access on the full security access details of a Person who is Users of the Healthy Church application.\r\nIncludes some basic Person data and all applicable security/authorization related data.\r\n\r\n**More Info:**
\r\nWill return a 200 OK with available data so long as the underlying Person record can be located, even if the Person\r\nis not currently designated as a User of the Healthy Church application. (All Users are Persons; not all Persons are Users.)", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the User record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "The Person record was not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage User Access" + ], + "RouteParameters": [ + "id" + ] + } + ] + } + }, + "put": { + "tags": [ + "PersonSecurity" + ], + "summary": "Upserts User Access Management data for a Person", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage User Access
\r\n
\r\n**Inline Authorization Checks:**
\r\nAll requests will be subject to additional checks on permission for Sensitive Security Access Management\r\n(i.e. if a caller lacking this permission attempts to upsert a record assigned Sensitive Roles or Permissions,\r\nit will be Forbidden) and authorization for any involved Campuses (church entities).\r\nThis includes the underlying Person's Home Campus, and any Campus(es) for which the User will be authorized.\r\n\r\n**Data Access:**
\r\nCREATE / UPDATE / DELETE on User Access Management data, including:\r\n* Designating a Person as a User of Healthy Church\r\n* Enabling or disabling User Accounts\r\n* Adding or removing scoped Security Role assignments\r\n* Adding or removing directly assigned scoped Permissions\r\n\r\n**More Info:**
\r\nThe request is considered valid so long as the underlying Person record can be located, even if the Person\r\nis not currently designated as a User of the Healthy Church application.\r\n(All Users are Persons; not all Persons are Users.)\r\nMaking this request for a Person not currently designated as a User will mark that Person as a User going forward,\r\ni.e. it is a create/insert from the User perspective.\r\nMaking this request for a Person that is currently designated as a User is an update.", + "operationId": "PutAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "User record to upsert", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the upserted User.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + } + }, + "400": { + "description": "Request is not valid (likely due to malformed body/payload).", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Lacks permission or lacks Church Structure based authorization." + }, + "404": { + "description": "Person record not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage User Access" + ] + } + ] + } + } + }, + "/api/user/security-role/{securityRoleId}": { + "get": { + "tags": [ + "PersonSecurity" + ], + "summary": "Gets a list of Users assigned a particular Security Role", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage User Access
\r\n
\r\n**Inline Authorization Checks:**
\r\nUser list will be filtered per the caller's Church Structure (Campuses) authorization.\r\n\r\n**Data Access**
\r\nREAD access to a list of Persons who are Users of the Healthy Church application.\r\nIncludes some basic Person data and some security/authorization related data.", + "operationId": "GetBySecurityRoleId", + "parameters": [ + { + "name": "securityRoleId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Users.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized. Lacks permission or lacks authorization for any Church Entities." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage User Access" + ] + } + ] + } + } + }, + "/api/user/{id}/role": { + "put": { + "tags": [ + "PersonSecurity" + ], + "summary": "Add Special Roles to User", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nWRITE access assigning Users one or more 'Special' (system-managed) Security Roles.\r\nIntended for use by the System only (via REST/RPC from other Microservices). Not intended for direct use by end-users.\r\n\r\n**More Info:**
\r\nRoles are assigned by Name, not ID.", + "operationId": "AddSpecialRoles", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Roles to add", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns the upserted User.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + } + }, + "400": { + "description": "Request is not valid (likely due to malformed body/payload).", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. lacks the \"internal systems\" scope." + }, + "404": { + "description": "Person record not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + }, + "delete": { + "tags": [ + "PersonSecurity" + ], + "summary": "Remove Special Roles from User", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nWRITE access removing assignment of one or more 'Special' (system-managed) Security Roles from the specified User.\r\nIntended for use by the System only (via REST/RPC from other Microservices). Not intended for direct use by end-users.\r\n\r\n**More Info:**
\r\nRoles are identied by Name, not ID.", + "operationId": "DeleteSpecialRoles", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Roles to delete", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecurityRoleLiteViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns the upserted User.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + } + } + } + }, + "400": { + "description": "Request is not valid (likely due to malformed body/payload).", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. lacks the \"internal systems\" scope." + }, + "404": { + "description": "Person record not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/user/search": { + "get": { + "tags": [ + "PersonSecurity" + ], + "summary": "Gets a sorted and paged (and possibly filtered) list of Users", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage User Access, Manage Teams
\r\n
\r\n**Inline Authorization Checks:**
\r\nUser search results will be filtered per the caller's Church Structure (Campuses) authorization.\r\n\r\n**Data Access**
\r\nREAD access to a list of Persons who are Users of the Healthy Church application.\r\nIncludes some basic Person data and some security/authorization related data.", + "operationId": "Search", + "parameters": [ + { + "name": "Q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "Disabled", + "in": "query", + "description": "Optional flag specifying whether to include only Active Users (if false) or only Disabled Users (if true)", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Users.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_UserListViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_UserListViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_UserListViewModel" + } + } + } + }, + "400": { + "description": "Search query is not valid.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Lacks permission or lacks authorization for any Church Entities." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage User Access" + ] + }, + { + "Permissions": [ + "Manage Teams" + ] + } + ] + } + } + }, + "/api/user/changepassword": { + "post": { + "tags": [ + "PersonSecurity" + ], + "summary": "Changes a User's Password", + "description": "**Data Access**
\r\nAllows an authenticated User to change his/her password (via Identity Server API).\r\nRequires current password to be confirmed as an additional security check.", + "operationId": "ChangePassword", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "User Password", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_UserPassword" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_UserPassword" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_UserPassword" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_UserPassword" + } + } + } + }, + "responses": { + "200": { + "description": "User Password Changed Successfully", + "content": { + "text/plain": { + "schema": { + "type": "boolean" + } + }, + "application/json": { + "schema": { + "type": "boolean" + } + }, + "text/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized" + }, + "500": { + "description": "Internal Server Error" + } + } + } + }, + "/api/user/communication": { + "post": { + "tags": [ + "PersonSecurity" + ], + "summary": "Send Bulk Email to all users", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Bulk Email Users
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the email to all recipients.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Bulk Email Users" + ] + } + ] + } + } + }, + "/api/user/communication/attachment": { + "post": { + "tags": [ + "PersonSecurity" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Bulk Email Users
\r\n
\r\n**Data Access:**
\r\nUploads the file to cloud storage (Amazon S3) where it can be viewed/downloaded by unauthenticated callers\r\nwith the URL (intended usage is to embed the URL to the file in an email in lieu of actually \"attaching\" the file).", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Bulk Email Users" + ] + } + ] + } + } + }, + "/api/user/{id}/permission": { + "get": { + "tags": [ + "PersonSecurity" + ], + "summary": "Get User Permissions Based on ClientId", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\n
\r\n**Data Access:**
\r\nInternal access\r\n\r\nRoles are assigned by Name, not ID", + "operationId": "GetUserPermissions", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the upserted User." + }, + "403": { + "description": "Not authorized. lacks the \"internal systems\" scope." + }, + "404": { + "description": "Person record not found." + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "id" + ] + } + ] + } + } + }, + "/api/person/{personId}/sermon-notes": { + "get": { + "tags": [ + "PersonSermonNotes" + ], + "description": "**Authorization Policy:**
\r\nRequires Person Record Ownership
\r\n", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api/person/{personId}/sermon-notes/{noteId}": { + "get": { + "tags": [ + "PersonSermonNotes" + ], + "description": "**Authorization Policy:**
\r\nRequires Person Record Ownership
\r\n", + "operationId": "GetByPersonIdAndNoteId", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "noteId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "PersonSermonNotes" + ], + "description": "**Authorization Policy:**
\r\nRequires Person Record Ownership
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "noteId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "put": { + "tags": [ + "PersonSermonNotes" + ], + "description": "**Authorization Policy:**
\r\nRequires Person Record Ownership
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "noteId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_Body" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "PersonSermonNotes" + ], + "description": "**Authorization Policy:**
\r\nRequires Person Record Ownership
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "noteId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api": { + "get": { + "tags": [ + "Playlist" + ], + "operationId": "GetAll", + "parameters": [ + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/playlist/{id}": { + "get": { + "tags": [ + "Playlist" + ], + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "put": { + "tags": [ + "Playlist" + ], + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + }, + "delete": { + "tags": [ + "Playlist" + ], + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/playlist/channel": { + "get": { + "tags": [ + "Playlist" + ], + "operationId": "GetByChannelId", + "parameters": [ + { + "name": "channelId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "getAll", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/playlist/media": { + "get": { + "tags": [ + "Playlist" + ], + "operationId": "GetByMediaId", + "parameters": [ + { + "name": "mediaId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/playlist/version": { + "get": { + "tags": [ + "Playlist" + ], + "operationId": "GetVersion1", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/playlist": { + "post": { + "tags": [ + "Playlist" + ], + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/podcast": { + "get": { + "tags": [ + "Podcast" + ], + "operationId": "GetAll", + "parameters": [ + { + "name": "getAllMedia", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "Podcast" + ], + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/podcast/{id}": { + "get": { + "tags": [ + "Podcast" + ], + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "top", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "getPlaylistInfo", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "getAllMedia", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "put": { + "tags": [ + "Podcast" + ], + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_PodcastViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + }, + "delete": { + "tags": [ + "Podcast" + ], + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/podcast/channel": { + "get": { + "tags": [ + "Podcast" + ], + "operationId": "GetByChannelId", + "parameters": [ + { + "name": "channelId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "getAllMedia", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "appId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/power-bi-token/{reportId}": { + "get": { + "tags": [ + "PowerBIToken" + ], + "operationId": "GetEmbedToken", + "parameters": [ + { + "name": "reportId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/prayer-request/{id}": { + "get": { + "tags": [ + "PrayerRequest" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Prayer Requests
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Prayer Requests" + ] + } + ] + } + } + }, + "/api/prayer-request/{id}/tags": { + "put": { + "tags": [ + "PrayerRequest" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Prayer Requests
\r\n", + "operationId": "UpdateTags", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Tag" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Tag" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Tag" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Tag" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Prayer Requests" + ] + } + ] + } + } + }, + "/api/promotion/release-notes/latest": { + "get": { + "tags": [ + "Promotion" + ], + "summary": "Get the latest published release notes", + "description": "**Data Access:**
\r\nREAD Access to CMS data\r\nREAD/WRITE Access to PersonPromotionHistoryRepo\r\n \r\n**More Info:**
\r\nWe track whether or not the person has seen the notes (PersonPromotionHistoryRepo). If they have, no notes are returned (notes should only be viewed once).", + "operationId": "GetLatestReleaseNotes", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/promotion/release-notes": { + "get": { + "tags": [ + "Promotion" + ], + "summary": "Get all release notes, usually for previewing", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Browse In Draft Mode
\r\n
\r\n**Data Access:**
\r\nREAD Access to CMS data", + "operationId": "GetReleaseNotes", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Browse In Draft Mode" + ] + } + ] + } + } + }, + "/api/promotion/release-notes/{contentId}": { + "get": { + "tags": [ + "Promotion" + ], + "summary": "Get specific version of release notes", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Browse In Draft Mode
\r\n
\r\n**Data Access:**
\r\nREAD Access to CMS data", + "operationId": "GetReleaseNotesByContentId", + "parameters": [ + { + "name": "contentId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "versionId", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Browse In Draft Mode" + ] + } + ] + } + } + }, + "/api/rate-limit/rules": { + "get": { + "tags": [ + "RateLimitRule" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetRules", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "RateLimitRule" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "PostRules", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/rate-limit/rules/{ruleId}": { + "get": { + "tags": [ + "RateLimitRule" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "GetRuleById", + "parameters": [ + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "RateLimitRule" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "UpdateRuleById", + "parameters": [ + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_RateLimitRule" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "RateLimitRule" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n", + "operationId": "DeleteRule", + "parameters": [ + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/region/bycountry/{id}": { + "get": { + "tags": [ + "Region" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetRegionsByCountry", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/connection-card/template/search": { + "get": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Connection Form
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "SortField", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "SortFieldOrder", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "IsActive", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/by-church-entity/{churchEntityId}": { + "get": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetByChurchEntityId", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/connection-card/template/{id}": { + "get": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Connection Form
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Connection Form" + ] + } + ] + } + }, + "delete": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Delete Connection Form
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Delete Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/field-info": { + "get": { + "tags": [ + "ResponseCard" + ], + "summary": "Gets Connection Card Template \"Field Info\" (flattened collection of Fields/Sub-Fields)", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Connection Form
\r\n
\r\n**Data Access:**
\r\nREAD access to flattened collection of Fields/Sub-Fields for a Connection Card Template\r\n(optionally including historical/predecessor versions)\r\n\r\n**More Info:**
\r\nExposed via Core REST SDK to make this information available to other components and services within\r\nthe Healthy Church ecosystem (e.g. Workflows Service for processing Connection Card based Workflows).", + "operationId": "GetFieldInfo", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Card Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includePredecessors", + "in": "query", + "description": "Boolean flag indicating whether or not to include historical/predecessor versions. Optional; defaults to False.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ResponseCardFieldInfoViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ResponseCardFieldInfoViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ResponseCardFieldInfoViewModel" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/history": { + "get": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Connection Form
\r\n", + "operationId": "GetHistory", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/workflow-entities": { + "get": { + "tags": [ + "ResponseCard" + ], + "summary": "Gets Workflow Entity Data for the specified Connection Card Template", + "description": "**Authorization Policy:**
\r\nRequires access to all of these Permissions: Read Connection Form, Manage Follow Up Rules
\r\n", + "operationId": "GetWorkflowEntitiesForResponseCardTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardFollowUpRulesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardFollowUpRulesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardFollowUpRulesViewModel" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "500": { + "description": "Server Error" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Connection Form", + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/connection-card/template/church-entities": { + "get": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetChurchEntitiesWithResponseCards", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/connection-card/template/published": { + "get": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetPublishedResponseCards", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/connection-card/template": { + "post": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Create Connection Form
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Create Connection Form" + ], + "ModelParameterName": [ + "viewModel" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/public-labels": { + "put": { + "tags": [ + "ResponseCard" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Connection Form
\r\n", + "operationId": "PutPublicLabels", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/publish": { + "put": { + "tags": [ + "ResponseCard" + ], + "summary": "Publishes a Connection Card Template", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Connection Form
\r\n", + "operationId": "PublishResponseCard", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Card Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection Card Template has been published" + }, + "403": { + "description": "Not authorized. Must have permission to update Connection Card Templates and authorization for the template's campus." + }, + "404": { + "description": "The specified Connection Card Template was not found." + }, + "500": { + "description": "The publication attempt failed." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/unpublish": { + "put": { + "tags": [ + "ResponseCard" + ], + "summary": "Unpublishes a Connection Card Template", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Connection Form
\r\n", + "operationId": "UnpublishResponseCard", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Card Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection Card Template has been unpublished" + }, + "403": { + "description": "Not authorized. Must have permission to update Connection Card Templates and authorization for the template's campus." + }, + "404": { + "description": "The specified Connection Card Template was not found." + }, + "500": { + "description": "The un-publication attempt failed." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/active": { + "put": { + "tags": [ + "ResponseCard" + ], + "summary": "Make a Connection Card Template active", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Connection Form
\r\n", + "operationId": "ActivateResponseCard", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Card Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection Card Template has been activated" + }, + "403": { + "description": "Not authorized. Must have permission to update Connection Card Templates and authorization for the template's campus." + }, + "404": { + "description": "The specified Connection Card Template was not found." + }, + "500": { + "description": "The publication attempt failed." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/template/{id}/inactive": { + "put": { + "tags": [ + "ResponseCard" + ], + "summary": "Make a Connection Card Template inactive", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Connection Form
\r\n", + "operationId": "InactivateResponseCard", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Card Template ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Connection Card Template has been inactivated" + }, + "403": { + "description": "Not authorized. Must have permission to update Connection Card Templates and authorization for the template's campus." + }, + "404": { + "description": "The specified Connection Card Template was not found." + }, + "500": { + "description": "The publication attempt failed." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Connection Form" + ] + } + ] + } + } + }, + "/api/connection-card/entry/{id}": { + "get": { + "tags": [ + "ResponseCardEntry" + ], + "summary": "Gets Connection Card (Response Card) Entry details by Connection Card Entry ID", + "description": "**Inline Authorization Checks:**
\r\nAccess to this resource is granted to:
\r\n* Callers with the \"Internal Systems\" API Resource Scope
\r\n* Callers with \"Read Response Card Entries\" Permission
\r\n* The \"Person Record Owner\" (the person to whom the Connection Card Entry pertains is allowed to request his/her own data)\r\n\r\n**Data Access:**
\r\nREAD access to the details of a single Connection Card (Response Card) Entry (form response).", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Response Card Entry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + } + }, + "put": { + "tags": [ + "ResponseCardEntry" + ], + "summary": "Updates a Connection Card (Response Card) Entry", + "description": "**Inline Authorization Checks:**
\r\nAccess to this resource is granted to:
\r\n* Callers with \"Read Response Card Entries\" permission
\r\n* The \"Person Record Owner\" (the person to whom the Connection Card Entry pertains is allowed to update his/her own data)\r\n\r\n**Data Access:**
\r\nWRITE (UPDATE) access to the details of a single Connection Card (Response Card) Entry (form response).", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Connection Card (Response Card) Entry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Connection Card (Response Card) Entry", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + } + }, + "delete": { + "tags": [ + "ResponseCardEntry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Delete Connection Form Entry
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Delete Connection Form Entry" + ] + } + ] + } + } + }, + "/api/connection-card/entry/search": { + "get": { + "tags": [ + "ResponseCardEntry" + ], + "summary": "Searches/Browses a paginated list of Connection Card (Response Card) Entries by the specified search criteria", + "description": "**Inline Authorization Checks:**
\r\nAccess to this resource is granted to:
\r\n* Callers with \"Read Response Card Entries\" permission
\r\n* The \"Person Record Owner\" (the person to whom the Connection Card Entry pertains is allowed to request his/her own data).
\r\n * This only applies if the **PersonId** parameter is specified.\r\n\r\n**Data Access:**
\r\nREAD access to a paginated list of top-level metadata for Connection Card (Response Card) Entries (form responses) matching the specified search criteria.", + "operationId": "GetSearch", + "parameters": [ + { + "name": "ResponseCardId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonName", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortField", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortFieldOrder", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "description": "Page number if pagination is being used. First page is 0.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "description": "Page size (defaults to 150 if omitted)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntrySearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntrySearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntrySearchResultsViewModel" + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/api/connection-card/entry/export/preview": { + "get": { + "tags": [ + "ResponseCardEntry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Connection Card Data
\r\n", + "operationId": "GetDataExportPreview", + "parameters": [ + { + "name": "ResponseCardId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonName", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortField", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortFieldOrder", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "description": "Page number if pagination is being used. First page is 0.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "description": "Page size (defaults to 150 if omitted)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Connection Card Data" + ] + } + ] + } + } + }, + "/api/connection-card/entry/export/request": { + "post": { + "tags": [ + "ResponseCardEntry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Extract Connection Card Data
\r\n", + "operationId": "RequestDataExport", + "parameters": [ + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ResponseCardId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonName", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortField", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortFieldOrder", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "description": "Page number if pagination is being used. First page is 0.", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "description": "Page size (defaults to 150 if omitted)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "IncludeDeceased", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "TimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Extract Connection Card Data" + ] + } + ] + } + } + }, + "/api/connection-card/entry": { + "post": { + "tags": [ + "ResponseCardEntry" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Create Connection Form Entry
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Create Connection Form Entry" + ] + } + ] + } + } + }, + "/api/integration/response-card/entry": { + "post": { + "tags": [ + "ResponseCardEntryIntegration" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryIntegrationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryIntegrationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryIntegrationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryIntegrationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/rpc": { + "post": { + "tags": [ + "Rpc" + ], + "summary": "Handle RPC request", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
", + "operationId": "Rpc", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "RPC command", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_RpcRestContainer" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_RpcRestContainer" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_RpcRestContainer" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_RpcRestContainer" + } + } + } + }, + "responses": { + "200": { + "description": "Returns RPC operation result." + }, + "400": { + "description": "Invalid RPC model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/schedule/{id}": { + "get": { + "tags": [ + "Schedule" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Get", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "delete": { + "tags": [ + "Schedule" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Schedules
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Schedules" + ] + } + ] + } + } + }, + "/api/schedule/church-entity/{churchEntityId}": { + "get": { + "tags": [ + "Schedule" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetByChurchEntity", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/schedule/church-entity/{churchEntityId}/schedule-entity-type/{scheduleEntityTypeId}": { + "get": { + "tags": [ + "Schedule" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetByChurchEntityAndScheduleEntityType", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "scheduleEntityTypeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/schedule": { + "post": { + "tags": [ + "Schedule" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Schedules
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ScheduleViewModel_Core" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ScheduleViewModel_Core" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ScheduleViewModel_Core" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ScheduleViewModel_Core" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Schedules" + ], + "ModelParameterName": [ + "viewModel" + ] + } + ] + } + } + }, + "/api/schedule-venue-metric": { + "get": { + "tags": [ + "ScheduleVenueMetric" + ], + "summary": "Get metric schedule - venue metrics", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD Access to Metrics", + "operationId": "GetFiltered", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "venueId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includePastMetrics", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns all schedule - venue metrics." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "ScheduleVenueMetric" + ], + "summary": "Upsert a schedule's mapped venues and metrics", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Schedule / Venue / Metric mappings.", + "operationId": "Upsert", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.Web.ViewModels.DataCapture.ScheduleVenueMetricsViewModelList of venue metric mappings for the given scheduleId", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ScheduleVenueMetricsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ScheduleVenueMetricsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ScheduleVenueMetricsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ScheduleVenueMetricsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns upserted collection of schedule / venue / metric mappings." + }, + "400": { + "description": "Invalid request. Proferred data is invalid or referenced schedule is invalid." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + } + }, + "/api/schedule-venue-metric/sort-order": { + "put": { + "tags": [ + "ScheduleVenueMetric" + ], + "summary": "Set sort order for Venue", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Metrics
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Metrics", + "operationId": "SetSortOrder", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "venueId", + "in": "query", + "description": "Venue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "operation was completed successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Metrics" + ] + } + ] + } + } + }, + "/api/search-index": { + "get": { + "tags": [ + "SearchIndex" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n", + "operationId": "GetIndexCounts", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + }, + "post": { + "tags": [ + "SearchIndex" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Access Developer Diagnostics
\r\n", + "operationId": "UpdateSearchIndex", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_UpdateSearchIndexRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_UpdateSearchIndexRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_UpdateSearchIndexRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_UpdateSearchIndexRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/search-index/{entityId}": { + "get": { + "tags": [ + "SearchIndex" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n", + "operationId": "GetIndexDocumentById", + "parameters": [ + { + "name": "entityType", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/search-index/types": { + "get": { + "tags": [ + "SearchIndex" + ], + "summary": "Get Entity types available for search", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n", + "operationId": "GetTypes", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns types." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/search-index/fields": { + "get": { + "tags": [ + "SearchIndex" + ], + "summary": "Get Entity types available for search", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n", + "operationId": "GetFields", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity type. Should be one of types from api/search-index/types call", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns types." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/search-index/search": { + "get": { + "tags": [ + "SearchIndex" + ], + "summary": "Get Search Documents by model type and query string", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity type. Should be one of types from api/search-index/types call", + "schema": { + "type": "string" + } + }, + { + "name": "q", + "in": "query", + "description": "Query", + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Page size", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page Number", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found documents." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/search-index/action": { + "put": { + "tags": [ + "SearchIndex" + ], + "summary": "Make operation for Search Document list", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Access Developer Diagnostics
\r\n", + "operationId": "UpdateSearchIndices", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity type. Should be one of types from api/search-index/types call", + "schema": { + "type": "string" + } + }, + { + "name": "ids", + "in": "query", + "description": "Comma separated document IDs", + "schema": { + "type": "string" + } + }, + { + "name": "operation", + "in": "query", + "description": "Operation for documents. One of REINDEX, DELETE or DELETE_REINDEX", + "schema": { + "$ref": "#/components/schemas/Core_App_Operation" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation was completed successfully." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/search-index/global-reindex": { + "post": { + "tags": [ + "SearchIndex" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n", + "operationId": "GlobalReindex", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/search-index/reindex": { + "post": { + "tags": [ + "SearchIndex" + ], + "summary": "Reindex all documents by type", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n", + "operationId": "Reindex", + "parameters": [ + { + "name": "entityType", + "in": "query", + "description": "Entity type. Should be one of types from api/search-index/types call", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Reindex started." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/audit-log/security-role/{id}": { + "get": { + "tags": [ + "SecurityAuditLog" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Security Audit Logs
\r\n", + "operationId": "GetRoleAuditLogs", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Security Audit Logs" + ] + } + ] + } + } + }, + "/api/audit-log/user/{id}": { + "get": { + "tags": [ + "SecurityAuditLog" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Security Audit Logs
\r\n", + "operationId": "GetUserAuditLogs", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Security Audit Logs" + ] + } + ] + } + } + }, + "/api/security-role": { + "get": { + "tags": [ + "SecurityRole" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Security Roles, Manage User Access
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + }, + { + "Permissions": [ + "Manage User Access" + ] + } + ] + } + }, + "post": { + "tags": [ + "SecurityRole" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Security Roles
\r\n", + "operationId": "Insert", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + } + ] + } + } + }, + "/api/security-role/{id}": { + "get": { + "tags": [ + "SecurityRole" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Security Roles
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + } + ] + } + }, + "put": { + "tags": [ + "SecurityRole" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Security Roles
\r\n", + "operationId": "Update", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SecurityRoleManagementViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + } + ] + } + }, + "delete": { + "tags": [ + "SecurityRole" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Security Roles
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Security Roles" + ] + } + ] + } + } + }, + "/api/service-companion": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Service Companion Data for an Authenticated User", + "operationId": "GetServiceCompanionAuthenticated", + "parameters": [ + { + "name": "dateTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/service-companion/church-entity/{churchEntityId}": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Service Companion Data By Church Entity Id (Campus)", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetServiceCompanionByCampus", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "personId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "bypassCache", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/event/{eventId}": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Service Companion Data by Event ID", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetServiceCompanionByEventId", + "parameters": [ + { + "name": "eventId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "personId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/service-media-info": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Service Media Info", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetServiceMediaInfo", + "parameters": [ + { + "name": "mediaId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/service-mediaseries-list": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Media Series List", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetServiceMediaSeriesList", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/service-notes/{id}": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Service Notes", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetServiceNotes", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/announcements": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAnnouncementsContent", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/service-template/{serviceTemplateId}/person-outline": { + "post": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Add Outline persons to a General Service Template by General Service Template id", + "operationId": "UpsertServiceOutlinePerson", + "parameters": [ + { + "name": "serviceTemplateId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceOutlinePerson" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceOutlinePerson" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceOutlinePerson" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceOutlinePerson" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/service-companion/playlist/{churchEntityId}": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Playlist by Campus", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetPlaylistByCampus", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/song": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Songs by Event Occurrence Id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetSongsContent", + "parameters": [ + { + "name": "occurrenceId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/series": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Series List", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetSeries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/series/{id}": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get Series by Id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetSeriesById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/series/search": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Search Series", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsInUseFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SeriesSearchViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SeriesSearchViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SeriesSearchViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/sermon/search": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Search Sermons", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "SearchSermon", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "DayIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SpeakerIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SeriesIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeAnnouncements", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IncludeConnectionQuestions", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IncludeNextStepQuestions", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IncludeSongs", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns the Campus Service Template record.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SermonSearchResultViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SermonSearchResultViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SermonSearchResultViewModel" + } + } + } + }, + "400": { + "description": "Bad Request. Must have the valid search query." + }, + "403": { + "description": "Forbidden" + }, + "500": { + "description": "The Get Campus Service Templates attempt failed." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/service-companion/my-notes": { + "get": { + "tags": [ + "ServiceCompanion" + ], + "summary": "Get My Notes", + "operationId": "GetMyNotes", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/content-management/service-companion-builder/service-template/search": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Search Service Templates", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SpeakerFilter", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Published", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_ServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_ServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_ServiceTemplateViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Update a Service Template", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Create a new Service Template", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "PostAsync", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/duplicate": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DuplicateGeneralTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/service-speakers/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a list of Service Speakers of a General Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "DeleteServiceSpeakersofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/service-speakers": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add a list of Service Speakers to a General Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "AddServiceSpeakerstoServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/connection-questions": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a list of Connection Questions of a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetConnectionQuestionsofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add a list of Connection Questions to a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "AddConnectionQuestionstoServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Connection Question Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/announcements": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a list of Announcements of a General or Campus Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetAnnouncementsOfCampusServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add a list of Announcements to a General or Campus Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "AddAnnouncementstoServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/connection-questions/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a list of Connection Questions of a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DeleteConnectionQuestionsofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Connection Question Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/announcements/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a list of Announcements of a General or Campus Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DeleteAnnouncementsofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/connection-questions/sort": { + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Sort a list of Connection Questions to a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n
\r\n**Data Access:**
\r\nUPDATES a Service and Campus Service Template(s) Connection Questions setting their sort order", + "operationId": "SortServiceTemplateQuestions", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Sorted list of Connection Questions", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/next-step-questions": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a list of Next Step Questions of a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetNextStepQuestionsofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add a list of Next Step Questions to a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "AddNextStepQuestionstoServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Next Step Question Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/next-step-questions/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a list of Next Step Questions of a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DeleteNextStepQuestionsofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Next Step Question Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/outline": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add Outline to a General Service Template by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "AddOutlineToServiceTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "General Service Template Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Service Template Outline", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Update a General Service Template Outline by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "UpdateServiceTemplateOutline", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "General Service Template Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Service Template Outline", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get Outline of General Service Template by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetOutlineOfServiceTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "General Service Template Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateOutlineViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/person-outline": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add Outline persons to a General Service Template by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "AddPersonsToServiceTemplateOutline", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "General Service Template Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ServiceOutlinePersonViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ServiceOutlinePersonViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ServiceOutlinePersonViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ServiceOutlinePersonViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get Outline Persons of General Service Template by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetPersonsOfServiceTemplateOutline", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "General Service Template Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonBasic" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonBasic" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonBasic" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/outline/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete Outline of General Service Template by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DeleteOutlineOfServiceTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "General Service Template Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/person-outline/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete Outline Persons of General Service Template by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DeletePersonsOfServiceTemplateOutline", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "General Service Template Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/song": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a Songs of a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetSongsofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add a Songs to a General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "AddSongstoServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Next Step Question Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{templateType}/{id}/song/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Remove a Songs from General or Campus Service Template by respective id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DeleteSongsofServiceTemplate", + "parameters": [ + { + "name": "templateType", + "in": "path", + "description": "Service template type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateType" + } + }, + { + "name": "id", + "in": "path", + "description": "service template Id when servie template type is GeneralTemplate \r\n and service template church entity Id when servie template type is CampusTemplate", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Song Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/campus-service-template/{id}/published": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get Campus Service Template Is Published", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetCampusServiceTemplateIsPublished", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/campus-service-template/{id}/occurrences": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get Occurrences by Campus Service Template Id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetOccurrencesByCampusTemplateId", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add a list of Occurrences to a Campus Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "AddOccurrencestoCampusServiceTemplateAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/campus-service-template/{churchEntityId}": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Add a Campus Service Template with a list of Occurrences", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "CreateCampusServiceTemplateWithOccurrencesAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_CampusOccurrenceDto" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/campus-service-template/{id}/occurrences/delete": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a list of Occurrences to a Campus Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "DeleteOccurrencestoCampusServiceTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/campus-service-template": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a list of Campus Service Templates by General Service Template id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetCampusServiceTemplatesByGeneralServiceTempalateId", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CampusServiceTemplateViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CampusServiceTemplateViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CampusServiceTemplateViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/campus-service-template/{id}": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get Campus Service Templates Details by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetCampusServiceTemplateById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_CampusServiceTemplateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_CampusServiceTemplateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_CampusServiceTemplateViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/campus-service-template/{id}/publish/{publish}": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Publish/UnPublish a Campus Service Template by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "PublishCampusServiceTemplate", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "publish", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/occurrences/available": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Filter available Occurrences", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "FilterAvailableOccurrences", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/occurrences/used": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get Used Occurrences", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetUsedOccurrences", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/occurrences": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get Occurrences by Campus", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetOccurrencesByCampus", + "parameters": [ + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/announcement/search": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Search Announcements", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "SearchAnnouncement", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "AnnouncementCategoryFilter", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_AnnouncementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_AnnouncementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_AnnouncementViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/announcement": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get all Announcements", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetAllAnnouncements", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Create a new Announcement", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "PostAnnouncementAsync", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/announcement/{id}": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get an Announcement by id", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetAnnouncementById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + }, + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Update a Service Template", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "PutAnnouncementAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/announcement/category": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get an Announcement Categories", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "GetAnnouncementCategories", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementCategoryViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementCategoryViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementCategoryViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-speaker": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Create a new Service Speaker", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "PostServiceSpeakerAsync", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a Service Speakers", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "GetServiceSpeakers", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-speaker/{id}": { + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Update a Service Speaker", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a Service Speaker by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "GetServiceSpeakerById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServiceSpeakerViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "delete": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a Service Speaker by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "DeleteServiceSpeakers", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/series/search": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Search Series", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsActiveFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsInUseFilter", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SeriesViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/series": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Create a new Series", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "CreateSeries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get all Series", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "GetAllSeries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/series/{id}": { + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Update a Series", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "UpdateSeries", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a Series by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "GetSeriesById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "delete": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a Series by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "DeleteSeriess", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/series/active": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get active Series", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "GetActiveSeries", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/song/search": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Search Songs", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "SearchSongs", + "parameters": [ + { + "name": "query", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SongViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SongViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SearchResultsViewModel_SongViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/song": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Create a new Song", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "PostSongAsync", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get all Songs", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "GetSongs", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/song/{id}": { + "put": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Update a Song", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Service Companion Builder
\r\n", + "operationId": "UpdateSong", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Get a Song by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "GetSongById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + }, + "delete": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Delete a Song by id", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Service Companion Builder
\r\n", + "operationId": "DeleteSong", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/announcement/{id}/file": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "PostAnnouncementHeroImageAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/service-template/{id}/file": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "PostServiceTemplateHeroImageAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/series/{id}/file": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "PostSeriesHeroImageAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/embedded": { + "post": { + "tags": [ + "ServiceCompanionBuilder" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Manage Service Companion Builder, Manage Campus Service Template
\r\n", + "operationId": "PostEmbeddedImageAsync", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Service Companion Builder" + ] + }, + { + "Permissions": [ + "Manage Campus Service Template" + ] + } + ] + } + } + }, + "/api/content-management/service-companion-builder/reset-cache": { + "get": { + "tags": [ + "ServiceCompanionBuilder" + ], + "summary": "Clear Service Companion cache.", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n
\r\n**Data Access:**
\r\nResets Service Companion Cache.", + "operationId": "ResetScheduleCache", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation is completed successfully." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/drafts": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetDraftServingOpportunities", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{id}": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Gets a Serving Opportunity by ID", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "put": { + "tags": [ + "ServingOpportunity" + ], + "operationId": "UpdateServingOpportunity", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + }, + "delete": { + "tags": [ + "ServingOpportunity" + ], + "operationId": "DeleteServingOpportunity", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/serving-opportunity/schedule/{scheduleId}/lite": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Gets a lite Serving Opportunity by ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetLiteByScheduleId", + "parameters": [ + { + "name": "scheduleId", + "in": "path", + "description": "Schedule ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/serving-opportunity/list": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Gets a Serving Opportunity by IDs", + "operationId": "GetByIds", + "parameters": [ + { + "name": "servingOpportunityIds", + "in": "query", + "description": "Serving Opportunity IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/published": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get a list of Published Serving Opportunities by Ministry ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n", + "operationId": "GetByMinistryId", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/communication-variables": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get email variables", + "description": "**Data Access:**
\r\nNo specific access", + "operationId": "GetCommunicationVariables", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/search": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get a list of Serving Opportunities by search text", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to Serving Opportunities", + "operationId": "SearchInMinistry", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "searchType", + "in": "query", + "description": "Search type", + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "startDate", + "in": "query", + "description": "Start date for Closed occurrences", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific person's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/{searchType}": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get a list of Serving Opportunities by search text and schedule type", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunities\r\n \r\nClosed Serving Opportunities have 'Closed' status or all occurrences of this SO are past", + "operationId": "GetWithSearch", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "eventIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific person's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/{searchType}/daily-statistics/{startDate}/{endDate}": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get a list of Saddleback.Cm.Contracts.Models.Ministries.ServingOpportunityStatistics for date range specified by startDate and endDate", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunities\r\n \r\nClosed Serving Opportunities have 'Closed' status or all occurrences of this SO are past", + "operationId": "GetDailyStatistics", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "startDate", + "in": "path", + "description": "ISO 8601 formatted date (ex: 2112-12-21). For convenience, time can also be included (Thh:mm:ss) as it will be ignored", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "endDate", + "in": "path", + "description": "ISO 8601 formatted date (ex: 2112-12-21). For convenience, time can also be included (Thh:mm:ss) as it will be ignored", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/{searchType}/email": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Send an Email to Volunteers of various Serving Opportunities of the given ministryid/churchEntityId combo.", + "description": "**Action Access:**
\r\nCreates \"Notification\" records in the database and sends the Email to the specified recipients.

\r\n**More Info:**
\r\nServing Opportunities can be selected via servingOpportunityIds or by search (q, searchType, eventIds).
\r\nVolunteers can be selected via volunteerFilterParams.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "eventIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Request Body specifying the email message and recipient filter parameters", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/{searchType}/sms": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Send an SMS to Volunteers of various Serving Opportunities of the given ministryid/churchEntityId combo.", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Send SMS to Serving Opportunity Volunteers
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the SMS to the specified recipients.

\r\n**More Info:**
\r\nServing Opportunities can be selected via servingOpportunityIds or by search (q, searchType, eventIds).
\r\nVolunteers can be selected via volunteerFilterParams.", + "operationId": "SendSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "eventIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Request Body specifying the SMS message and recipient filter parameters", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific person's church entity." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Send SMS to Serving Opportunity Volunteers" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/{searchType}/statistics": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Gets Serving Opportunity statistics by Ministry Location", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to Serving Opportunity statistics for a Ministry Location\r\n \r\nClosed Serving Opportunities have 'Closed' status or all occurrences of this SO are past", + "operationId": "GetStatistics", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific person's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/{searchType}/volunteers": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get a list of Volunteers of various Serving Opportunities of the given ministryid/churchEntityId combo.", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunity Volunteers' id, name, opps, roles & groups

\r\n**More Info:**
\r\nServing Opportunities can be selected via servingOpportunityIds or by search (q, searchType, eventIds).
\r\nVolunteers can be selected via volunteerFilterParams.", + "operationId": "GetVolunteers", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "eventIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "purpose", + "in": "query", + "description": "the reason for making the call (current options are: email, sms)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Volunteers of Serving Opportunities." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific person's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/{searchType}/volunteers/extract": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Extracts a list of Volunteers of various Serving Opportunities of the given ministryid/churchEntityId combo.", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunity Volunteers' id, name, opps, roles & groups

\r\n**More Info:**
\r\nServing Opportunities can be selected via servingOpportunityIds or by search (q, searchType, eventIds).
\r\nVolunteers can be selected via volunteerFilterParams.", + "operationId": "RequestVolunteersExport", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "eventIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "format", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Core_App_DataExtractFormat" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific person's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/ministry/{id}/church-entity/{churchEntityId}/public": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get a list of public Serving Opportunities for specific ministry", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD access to public Serving Opportunity information.", + "operationId": "GetAllPublicForMinistry", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Location ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "id" + ] + } + ] + } + } + }, + "/api/serving-opportunity/public": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Get a list of public Serving Opportunities", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD access to public Serving Opportunity information.", + "operationId": "GetAllPublic", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{id}/complete-draft": { + "put": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Takes serving opportunity out of 'draft' mode.\r\nIMPORTANT: This is NOT the same as \"publishing\" it to the tenant website!", + "operationId": "CompleteServingOpportunityDraft", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Serving Opportunity has been published" + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities UPDATE or not authorized for specific person's church entity." + }, + "404": { + "description": "The Serving Opportunity record is not found." + } + } + } + }, + "/api/serving-opportunity/{id}/set-publish-type/{publishType}": { + "put": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Set Publish type of a serving opportunity", + "operationId": "SetServingOpportunityPublishType", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "publishType", + "in": "path", + "description": "The publish type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_PublishType" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Church entity IDs to publish", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns modified Serving Opportunities." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities UPDATE or not authorized for specific person's church entity." + }, + "404": { + "description": "The Serving Opportunity record is not found." + }, + "409": { + "description": "Serving Opportunity can't change public flag." + } + } + } + }, + "/api/serving-opportunity/set-publish-type/{publishType}": { + "put": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Set Publish type of multiple serving opportunities", + "operationId": "SetMyServingOpportunitiesPublishType", + "parameters": [ + { + "name": "servingOpportunityIds", + "in": "query", + "description": "comma delimited list of Serving Opportunity IDs", + "schema": { + "type": "string" + } + }, + { + "name": "publishType", + "in": "path", + "description": "The publish type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_PublishType" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Church entity IDs to publish", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success, all Serving Opportunities were updated accordingly" + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities UPDATE or not authorized for specific person's church entity." + }, + "404": { + "description": "The Serving Opportunity record is not found." + }, + "409": { + "description": "Serving Opportunity can't change public flag." + } + } + } + }, + "/api/serving-opportunity/{id}/can-change-is-public": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Can Serving Opportunity change published state", + "description": "**Data Access:**
\r\nREAD Access to an individual Serving Opportunity", + "operationId": "CanChangePublishState", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Serving Opportunity can change publish state" + }, + "400": { + "description": "Serving Opportunity is inactive." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + }, + "409": { + "description": "Serving Opportunity can't change publish state." + } + } + } + }, + "/api/serving-opportunity/{id}/close": { + "put": { + "tags": [ + "ServingOpportunity" + ], + "operationId": "CloseServingOpportunity", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/serving-opportunity": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "operationId": "CreateServingOpportunity", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/serving-opportunity/multiple": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Create multiple Serving Opportunities", + "description": "**Data Access:**
\r\nWRITE Access to a Serving Opportunities", + "operationId": "CreateServingOpportunities", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns new Serving Opportunities." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/serving-opportunity/{id}/copy": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Create a copy of Serving Opportunity", + "description": "**Data Access:**
\r\nWRITE Access to a Serving Opportunities\r\n\r\n**More Info**
\r\nStatus and IsPublic fields are not copied\r\nSchedule is not copied\r\nNew Serving Opportunity is created in Draft state", + "operationId": "CopyServingOpportunity", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID to Copy", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "copyVolunteers", + "in": "query", + "description": "true for copying volunteer list", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns copied Serving Opportunity.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Source Serving Opportunity is not found." + } + } + } + }, + "/api/serving-opportunity/{id}/notification": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Retrieves last notification results for serving opportunity", + "description": "**Data Access:**
\r\nREAD Access to Ministry", + "operationId": "GetLastNotificationResultsAsync", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Page size", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page number", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns last notification results for serving opportunity", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_NotificationResultViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + } + } + }, + "/api/serving-opportunity/{id}/tag": { + "put": { + "tags": [ + "ServingOpportunity" + ], + "operationId": "UpsertTagLinks", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + }, + "get": { + "tags": [ + "ServingOpportunity" + ], + "operationId": "GetTagLinks", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/serving-opportunity/ministry/{ministryId}/church-entity/{churchEntityId}/attachment": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Action Access:**
\r\nAllowed for ministry leader or EmailServingOpportunityVolunteers\r\n\r\nUploads the file to cloud storage (Amazon S3) where it can be viewed/downloaded by unauthenticated callers\r\nwith the URL (intended usage is to embed the URL to the file in an email in lieu of actually \"attaching\" the file).", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "ministryId", + "in": "path", + "description": "Ministry ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "path", + "description": "Church Entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/serving-opportunity/{id}/web-header": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Retrieves Serving Opportunity web header category image", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nNo restrictions", + "operationId": "GetWebHeaderUrl", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "URL to Serving Opportunity web header image", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "Serving Opportunity or Serving Opportunity web header image not found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Upsert Serving Opportunity web header image for existing Serving Opportunity", + "description": "**Data Access:**
\r\nUpdate Access to Serving Opportunities", + "operationId": "UploadServingOpportunityWebHeaderImage", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Serving Opportunity web header image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + } + } + }, + "404": { + "description": "Serving Opportunity not found" + } + } + } + }, + "/api/serving-opportunity/web-header": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Upsert Serving Opportunity web header image for Serving Opportunity to be created", + "description": "**Data Access:**
\r\nCreate Access to Serving Opportunities", + "operationId": "UploadServingOpportunityWebHeaderImage", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Serving Opportunity web header image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + } + } + } + } + } + }, + "/api/serving-opportunity/{id}/companion-app-header": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Retrieves Serving Opportunity Companion App header category image", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nNo restrictions", + "operationId": "GetCompanionAppHeaderUrl", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "URL to Serving Opportunity companion app header image", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "Serving Opportunity or Serving Opportunity companion app header image not found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/serving-opportunity/companion-app-header": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Upsert Serving Opportunity companion app header image for Serving Opportunity to be created", + "description": "**Data Access:**
\r\nCreate Access to Serving Opportunities", + "operationId": "UploadServingOpportunityCompanionAppHeaderImage", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Serving Opportunity companion app header image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + } + } + } + } + } + }, + "/api/serving-opportunity/{id}/thumbnail": { + "get": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Retrieves Serving Opportunity Thumbnail category image", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nNo restrictions", + "operationId": "GetThumbnailUrl", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "URL to Serving Opportunity thumbnail image", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "Serving Opportunity or Serving Opportunity thumbnail image not found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/serving-opportunity/thumbnail": { + "post": { + "tags": [ + "ServingOpportunity" + ], + "summary": "Upsert Serving Opportunity thumbnail image for Serving Opportunity to be created", + "description": "**Data Access:**
\r\nCreate Access to Serving Opportunities", + "operationId": "UploadServingOpportunityThumbnailImage", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Serving Opportunity thumbnail image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_WebHeader" + } + } + } + } + } + } + }, + "/api/serving-opportunity/event": { + "get": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Get a list of event assigned to Serving Opportunities in given ministry-location", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD access to Ministries or internal access.", + "operationId": "GetEventIdsAssignedToSpecificMinistryLocation", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "description": "Ministry ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Church Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ], + "RouteParameters": [ + "churchEntityId" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ], + "RouteParameters": [ + "churchEntityId", + "ministryId" + ] + } + ] + } + } + }, + "/api/serving-opportunity/event/{eventId}": { + "get": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Get a list of Serving Opportunities linked to event", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD access to Ministries or internal access.

\r\nIt is necessary to set occurrenceID to get serving opportunity statistics for occurrence", + "operationId": "GetServingOpportunitiesAssignedToEvent", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ministryId", + "in": "query", + "description": "Ministry ID (optional)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID (optional)", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person Unique ID (optional). If set, eligibility data for person is returned for each serving opportunity", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/serving-opportunity/event/{eventId}/copy/{targetEventId}": { + "post": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Copy a list of Serving Opportunities by event", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunities

\r\nClosed Serving Opportunities have 'Closed' status or all occurrences of this SO are past", + "operationId": "CopyServingOpportunities", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "targetEventId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Messages for Serving Opportunities that were not copied." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific serving opp's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/serving-opportunity/event/{eventId}/{searchType}": { + "get": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Get a list of Serving Opportunities by search text and schedule type", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunities

\r\nClosed Serving Opportunities have 'Closed' status or all occurrences of this SO are past", + "operationId": "GetWithSearch", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Serving Opportunities." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific serving opp's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/serving-opportunity/event/{eventId}/{searchType}/attachment": { + "post": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Action Access:**
\r\nAllowed for ministry leader or EmailServingOpportunityVolunteers

\r\nUploads the file to cloud storage (Amazon S3) where it can be viewed/downloaded by unauthenticated callers
\r\nwith the URL (intended usage is to embed the URL to the file in an email in lieu of actually \"attaching\" the file).", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/serving-opportunity/event/{eventId}/{searchType}/copy": { + "post": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Copy a list of Serving Opportunities by list or event or search text and schedule type", + "description": "**Data Access:**
\r\nREAD Access to a Serving Opportunities

\r\nClosed Serving Opportunities have 'Closed' status or all occurrences of this SO are past", + "operationId": "CopyServingOpportunitiesWithSearch", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "targetEventId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/serving-opportunity/event/{eventId}/{searchType}/email": { + "post": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Send an Email to Volunteers of various Serving Opportunities of the given eventId.", + "description": "**Action Access:**
\r\nCreates \"Notification\" records in the database and sends the Email to the specified recipients.

\r\n**More Info:**
\r\nServing Opportunities can be selected via servingOpportunityIds or by search (q, searchType).
\r\nVolunteers can be selected via volunteerFilterParams.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Request Body specifying the email message and recipient filter parameters", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/serving-opportunity/event/{eventId}/{searchType}/volunteers": { + "get": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Get a list of Volunteers of various Serving Opportunities of the given eventId.", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunity Volunteers' id, name, opps, roles & groups

\r\n**More Info:**
\r\nServing Opportunities can be selected via servingOpportunityIds or by search (q, searchType).
\r\nVolunteers can be selected via volunteerFilterParams.", + "operationId": "GetVolunteers", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "purpose", + "in": "query", + "description": "the reason for making the call (current options are: email)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found Volunteers of Serving Opportunities." + }, + "400": { + "description": "Invalid parameters.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific serving opp's church entity.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/serving-opportunity/event/{eventId}/{searchType}/volunteers/extract": { + "post": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Extracts a list of Volunteers of various Serving Opportunities of the given ministryeventId", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to a Serving Opportunity Volunteers' id, name, opps, roles & groups

\r\n**More Info:**
\r\nServing Opportunities can be selected via servingOpportunityIds or by search (q, searchType).
\r\nVolunteers can be selected via volunteerFilterParams.", + "operationId": "RequestVolunteersExport", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "searchType", + "in": "path", + "description": "Schedule type", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_ScheduleSearchType" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "format", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Core_App_DataExtractFormat" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized. Has no access to Serving Opportunities READ or not authorized for specific serving opp's church entity." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/serving-opportunity/event/{servingOpportunityId}/volunteer": { + "post": { + "tags": [ + "ServingOpportunityEvent" + ], + "summary": "Adds a new volunteer to specific serving opportunity for event occurrence", + "description": "**Data Access:**
\r\nINSERTS a new Serving Opportunity Volunteer", + "operationId": "CheckInVolunteerForEvent", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Event Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person Unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "force", + "in": "query", + "description": "True to ignore requirements", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Record has been inserted." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Serving opportunity is not found." + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/occurrence": { + "get": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Gets Serving Opportunity Occurrences for given Date interval", + "description": "**Data Access:**
\r\nREAD Access to the list of occurrences for a Serving Opportunity", + "operationId": "GetOccurrences", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "Interval start date", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endDate", + "in": "query", + "description": "Interval end date", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found records.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/scheduled-volunteers": { + "get": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Gets Serving Opportunity Volunteers that are Scheduled to serve for a specific Occurrence of a Serving Opportunity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to the list of Volunteers that are Scheduled to serve for a specific Occurrence of a Serving Opportunity\r\n \r\n**More Info:**
\r\nSorting parameter [id | firstname | birthdate | lastname | dateadded]", + "operationId": "GetScheduledVolunteers", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "Occurrence Date Time", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkEligibility", + "in": "query", + "description": "Check eligibility", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeSmsEligibility", + "in": "query", + "description": "return Sms eligibility", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "requestGrandTotal", + "in": "query", + "description": "Boolean flag indicating whether to compute an overall total of Scheduled Volunteers for the specified Occurrence\r\nwithout any optional filters applied. Optional; defaults to False.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "requestCapacity", + "in": "query", + "description": "Boolean flag indicating whether to request volunteer capacity for the specified Occurrence.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found records.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduledVolunteersViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduledVolunteersViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduledVolunteersViewModel" + } + } + } + }, + "400": { + "description": "Invalid request parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Serving Opportunity not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/unscheduled-volunteers": { + "get": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Gets Serving Opportunity Volunteers from the Roster that are NOT Scheduled to serve for a specific Occurrence of a Serving Opportunity", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to the list of Volunteers that are NOT Scheduled to serve for a specific Occurrence of a Serving Opportunity\r\n \r\n**More Info:**
\r\nSorting parameter [id | firstname | birthdate | lastname | dateadded]", + "operationId": "GetUnscheduledVolunteers", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "Occurrence Date Time", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkEligibility", + "in": "query", + "description": "Check eligibility", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "requestGrandTotal", + "in": "query", + "description": "Boolean flag indicating whether to compute an overall total of Unscheduled Volunteers for the specified Occurrence\r\nwithout any optional filters applied. Optional; defaults to False.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found records.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduledVolunteersViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduledVolunteersViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduledVolunteersViewModel" + } + } + } + }, + "400": { + "description": "Invalid request parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Serving Opportunity not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/is-volunteer": { + "get": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Given a Serving Opportunity ID, Occurrence ID and a list of Person IDs, \r\nreturns a filtered list of only the IDs for Persons currently volunteering for the Serving Opportunity.", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nREAD Access to the list of volunteers for a Serving Opportunity Occurrence", + "operationId": "IsServingOpportunityVolunteer", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Occurrence dateTime", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person IDs to check", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns found records.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/serving-opportunity/event/{eventId}/is-volunteer": { + "get": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Given a Event ID and a list of Person IDs, \r\nreturns a filtered list of only the IDs for Persons currently volunteering for the Event.", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access only", + "operationId": "IsServingOpportunityVolunteerForEvent", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person IDs to check", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns found records.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid data." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/occurrence-capacity": { + "put": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Sets a Capacity for a specific Occurrence of the specified Serving Opportunity (that can override the overall Opportunity's default Capacity)", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Access Ministry Central, Access Local Ministries
\r\n
\r\n**Data Access:**
\r\nWRITE (\"Upsert\" - Create if not exists or update if already exists) Access to Serving Opportunity per-Occurrence Capacity.\r\n\r\n**More Info:**
\r\nBy default, an Opportunity has the same capacity (required number of volunteers) for all Occurrences.\r\nBut there is the possibility to vary this capacity by Occurrence. For example, we might normally need\r\n20 volunteers for each Occurrence, but \"next week\", for whatever reason, we require 30 instead.", + "operationId": "SetOccurrenceCapacity", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityOccurrenceCapacityViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityOccurrenceCapacityViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityOccurrenceCapacityViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityOccurrenceCapacityViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns updated data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + } + }, + "400": { + "description": "There ws some issue with the request parameters. Response body should contain more details.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Specified Serving Opportunity was not found." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Access Ministry Central" + ] + }, + { + "Permissions": [ + "Access Local Ministries" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{id}/scheduled-volunteers/email": { + "post": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Send an Email to volunteers of the given id on occurrenceDateTime", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Email Serving Opportunity Volunteers
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the SMS to the specified recipients.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "Occurrence Date Time", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Message", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Email Serving Opportunity Volunteers" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{id}/scheduled-volunteers/sms": { + "post": { + "tags": [ + "ServingOpportunityOccurrence" + ], + "summary": "Send an SMS to volunteers of the given id on occurrenceDateTime", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Send SMS to Serving Opportunity Volunteers
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the SMS to the specified recipients.", + "operationId": "SendSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "Occurrence Date Time", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Message", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Send SMS to Serving Opportunity Volunteers" + ] + } + ] + } + } + }, + "/api/serving-opportunity-public": { + "get": { + "tags": [ + "ServingOpportunityPublicSearch" + ], + "operationId": "GetAllPublishedServingOpportunities", + "parameters": [ + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Tag", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Days", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "TimeStart", + "in": "query", + "schema": { + "type": "string", + "format": "date-span" + } + }, + { + "name": "TimeEnd", + "in": "query", + "schema": { + "type": "string", + "format": "date-span" + } + }, + { + "name": "Duration", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Frequency", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "EventId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SearchResultsViewModel" + } + } + } + } + } + } + }, + "/api/serving-opportunity-public/search": { + "get": { + "tags": [ + "ServingOpportunityPublicSearch" + ], + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Ids", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MinistryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Tags", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Days", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "Duration", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Frequency", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TimeRanges", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Bad Request" + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteer": { + "get": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Gets volunteers for specific serving opportunity", + "description": "**Data Access:**
\r\nREAD Access to a Serving Opportunity's roster of volunteers\r\n\r\n**More Info:**
\r\nSorting parameter [id | firstname | birthdate | lastname | dateadded]", + "operationId": "GetFilteredServingOpportunityVolunteers", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "checkEligibility", + "in": "query", + "description": "Check eligibility", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeSmsEligibility", + "in": "query", + "description": "Return Sms eligibility", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "date", + "in": "query", + "description": "This Date/Time value typically represents \"now\" or some other \"basis moment\" by which to filter to only Scheduled Volunteers", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns records." + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Adds a new volunteer to specific serving opportunity", + "description": "**Data Access:**
\r\nINSERTS a new Serving Opportunity Volunteer", + "operationId": "InsertServingOpportunityVolunteer", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Volunteer to add", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Record has been inserted." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Serving opportunity is not found." + } + } + }, + "put": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Updates volunteers in specific serving opportunity", + "description": "**Data Access:**
\r\nUPDATE Access to a specific Volunteer for a specific Serving Opportunity", + "operationId": "UpdateServingOpportunityVolunteers", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "soVolunteerIds", + "in": "query", + "description": "Serving opportunity volunteers IDs", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Data to update Serving opportunity volunteer records", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServingOpportunityVolunteerBulkUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServingOpportunityVolunteerBulkUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServingOpportunityVolunteerBulkUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_ServingOpportunityVolunteerBulkUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Record has been updated." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + } + }, + "delete": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Deletes Volunteers (in bulk) from the specified Serving Opportunity", + "description": "**Data Access:**
\r\nDELETE Access to multiple Volunteers within a Serving Opportunity.\r\n\r\n**More Info:**
\r\nRemoves the Volunteers specified by ID list or filter specification _completely_ from the roster of the specified Serving Opportunity.\r\nShould only be used to remove \"Unscheduled\" Volunteers with no actual association to having served during an Occurrences of the Serving Opportunity.", + "operationId": "DeleteServingOpportunityVolunteers", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "soVolunteerIds", + "in": "query", + "description": "Serving opportunity volunteers IDs", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Record ." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteer/{id}": { + "get": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Gets volunteer by Id", + "description": "**Data Access:**
\r\nREAD Access to a Serving Opportunity's roster of volunteers", + "operationId": "GetServingOpportunityVolunteer", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Serving Opportunity Volunteer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns records." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + } + }, + "put": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Updates a volunteer in specific serving opportunity", + "description": "**Data Access:**
\r\nUPDATE Access to a specific Volunteer for a specific Serving Opportunity", + "operationId": "UpdateServingOpportunityVolunteer", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Volunteer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Volunteer to update", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Record has been updated." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Volunteer was not found." + } + } + }, + "delete": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Deletes a Volunteer from the specified Serving Opportunity", + "description": "**Data Access:**
\r\nDELETE Access to a Volunteer within a Serving Opportunity.\r\n\r\n**More Info:**
\r\nRemoves the Volunteer _completely_ from the roster of the Serving Opportunity.\r\nShould only be used to remove \"Unscheduled\" Volunteers with no actual association to having served during an Occurrences of the Serving Opportunity.", + "operationId": "DeleteServingOpportunityVolunteer", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Volunteer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully completed the deletion." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Specified Serving Opportunity or Volunteer was not found." + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/scheduled-volunteers/cancelation-urls": { + "get": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Gets the cancelation url for the specified Volunteers' Scheduling Commitments", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "GetServingOpportunityVolunteerScheduleCancelationUrls", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Serving Opportunity Volunteer IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns the url" + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteer/{id}/schedule": { + "get": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Gets Scheduling Commitment information for the specified Volunteer", + "operationId": "GetServingOpportunityVolunteerSchedulingCommitments", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Serving Opportunity Volunteer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns records." + }, + "400": { + "description": "Invalid request parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + } + }, + "delete": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Removes a Volunteer from scheduled service for a Specific Serving Opportunity", + "description": "**Data Access:**
\r\nWRITE access to the data that describes the specified Volunteer's scheduled service.\r\n\r\n**More Info:**
\r\nEither removes record(s) of service scheduling completely, or adds an exclusion record (if, for example,\r\nVolunteer is presently committed to serve for all Occurrences of a recurring Opportunity, and only being\r\nremoved from one specific Occurrence).", + "operationId": "RemoveServingOpportunityVolunteerFromSchedule", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "path", + "description": "Volunteer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Optional Occurrence ID if only removing a Volunteer from a single Occurrence", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "Optional Occurrence Date/Time if only removing a Volunteer from a single Occurrence", + "schema": { + "type": "string" + } + }, + { + "name": "removeFromSingleOccurrence", + "in": "query", + "description": "(optional) defaults to true unless both occurrenceId and occurrenceDateTime are not specified", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successfully completed the removal." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Specified Serving Opportunity or Volunteer was not found." + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteer/person/{uniqueId}": { + "get": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Gets volunteer by Person Unique Id", + "description": "**Data Access:**
\r\nREAD Access to a Serving Opportunity's roster of volunteers\r\n\r\nUsed only to check if person is a Serving Opportunity Volunteer and fills no person data", + "operationId": "GetServingOpportunityVolunteerByUniqueId", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "uniqueId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns records." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + } + } + }, + "/api/serving-opportunity/volunteer/event/{eventId}": { + "get": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Gets Volunteers assigned to Serving Opportunities associated to the specified Event and Scheduled for the day of the specified Event Occurrence", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\nThis method firstly detects SO Active occurrences, corresponding to given event occurrence,\r\nthen collects volunteers assigned to these SO occurrences", + "operationId": "GetVolunteersByEventId", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "Comma separated Serving Opportunity IDs", + "schema": { + "type": "string" + } + }, + { + "name": "query", + "in": "query", + "description": "Volunteer query", + "schema": { + "type": "string" + } + }, + { + "name": "eventOccurrenceId", + "in": "query", + "description": "Event Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person Unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns records." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteers": { + "post": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Adds new volunteers to specific serving opportunity", + "description": "**Data Access:**
\r\nINSERTS new Serving Opportunity Volunteers", + "operationId": "InsertServingOpportunityVolunteers", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Volunteers to add", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Records has been inserted." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Serving opportunity is not found." + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteer/{volunteerId}/schedule": { + "put": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Adds a new Scheduling Commitment for the specified Volunteer", + "operationId": "UpdateVolunteerScheduleCommitments", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "volunteerId", + "in": "path", + "description": "Serving Opportunity Volunteer ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Payload describing the Scheduling Commitment to add", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduleCommitmentRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduleCommitmentRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduleCommitmentRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityScheduleCommitmentRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Scheduling Commitment record has been saved.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerScheduleCommitmentResponseViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerScheduleCommitmentResponseViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerScheduleCommitmentResponseViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Serving Opportunity or Volunteer was not found." + } + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteer/ministry": { + "put": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Commit volunteers in specific serving opportunity to ministry", + "description": "**Data Access:**
\r\nUPDATE Access to a specific Volunteer for a specific Serving Opportunity", + "operationId": "CommitServingOpportunityVolunteersToMinistry", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "description": "Serving Opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "soVolunteerIds", + "in": "query", + "description": "Serving opportunity volunteers IDs", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": ">Data to update Ministry Member records", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_MinistryMemberBulkUpdateViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Record has been updated." + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/serving-opportunity/{id}/attachment": { + "post": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Action Access:**
\r\nAllowed for ministry leader or ManageLocalMinistries\r\n\r\nUploads the file to cloud storage (Amazon S3) where it can be viewed/downloaded by unauthenticated callers\r\nwith the URL (intended usage is to embed the URL to the file in an email in lieu of actually \"attaching\" the file).", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/serving-opportunity/{id}/email": { + "post": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Send an Email to Serving Opportunity Volunteers", + "description": "**Action Access:**
\r\nAllowed for ministry leader or ManageLocalMinistries\r\n\r\nCreates \"Notification\" records in the database and sends the email to the specified recipients.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving opportunity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/serving-opportunity/{id}/sms-eligibility": { + "get": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Get SMS eligibility for a select list of recipients drawn from the ministry roster", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Send SMS to Serving Opportunity Volunteers
\r\n
\r\n**Data Access:**
\r\nREAD access to informational (but not deeply personal) data about eligibility to send SMS messages\r\nto the specified Persons that are volunteers of the specified Serving Opp.\r\n\r\nIf the SMS recipient list is not explicit, but rather based on a filter/query applied to the list view,\r\nthen the M:Saddleback.Cm.Web.Controllers.Ministries.ServingOpportunityVolunteerController.GetFilteredServingOpportunityVolunteers(System.Int32,Saddleback.Cm.Web.ViewModels.Ministries.ServingOpportunityVolunteerFilterParameters,Saddleback.Cm.Common.Contracts.Infrastructure.Pagination,System.Boolean,System.Boolean,System.String) method should be used instead, specifying the flag to\r\nalso perform the SMS eligibility check on all of the filtered ministry members returned by the query.", + "operationId": "GetSmsEligibility", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personUniqueIds", + "in": "query", + "description": "Comma-separated list of Person Unique IDs of the intended SMS recipients", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Send SMS to Serving Opportunity Volunteers" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{id}/sms": { + "post": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "summary": "Send an SMS to volunteers of the given id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Send SMS to Serving Opportunity Volunteers
\r\n
\r\n**Data Access:**
\r\nCreates \"Notification\" records in the database and sends the SMS to the specified recipients.", + "operationId": "SendSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Serving Opportunity Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Message", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Send SMS to Serving Opportunity Volunteers" + ] + } + ] + } + } + }, + "/api/serving-opportunity/{servingOpportunityId}/volunteer/export": { + "post": { + "tags": [ + "ServingOpportunityVolunteer" + ], + "operationId": "RequestDataExport", + "parameters": [ + { + "name": "servingOpportunityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + { + "name": "IncludeInactiveVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsMinistryMember", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "MissingRequirements", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityRequirements" + } + }, + { + "name": "HomeChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedPersonIds", + "in": "query", + "description": "Person IDs to exclude from filter result\r\nMust be used only for Bulk operations like sending emails", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceDates", + "in": "query", + "description": "Comma delimited list of iso 8601 dates (YYYY-MM-DD)", + "schema": { + "type": "string" + } + }, + { + "name": "format", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Core_App_DataExtractFormat" + } + }, + { + "name": "occurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/share-page": { + "post": { + "tags": [ + "SharePage" + ], + "summary": "Create a Share Page", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: For Events, For Serving Opportunities
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Share Pages", + "operationId": "Create", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "info for the new Share Page", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Share Page successfully created" + }, + "400": { + "description": "Invalid. Something about the provided parameter values is not valid" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "For Events" + ] + }, + { + "Permissions": [ + "For Serving Opportunities" + ] + } + ] + } + } + }, + "/api/share-page/{sharePageId}": { + "get": { + "tags": [ + "SharePage" + ], + "summary": "Get an existing Share Page", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: For Events, For Serving Opportunities
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Share Page", + "operationId": "Get", + "parameters": [ + { + "name": "sharePageId", + "in": "path", + "description": "Share Page Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Share Page successfully retrieved" + }, + "400": { + "description": "Invalid. Something about the provided parameters is not valid" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "For Events" + ] + }, + { + "Permissions": [ + "For Serving Opportunities" + ] + } + ] + } + }, + "put": { + "tags": [ + "SharePage" + ], + "summary": "Update an existing Share Page", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: For Events, For Serving Opportunities
\r\n
\r\n**Data Access:**
\r\nWRITE Access to an individual Share Page", + "operationId": "Update", + "parameters": [ + { + "name": "sharePageId", + "in": "path", + "description": "Share Page Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "updates to apply to the existing Share Page", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Share Page successfully updated" + }, + "400": { + "description": "Invalid. Something about the provided parameters is not valid" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "For Events" + ] + }, + { + "Permissions": [ + "For Serving Opportunities" + ] + } + ] + } + } + }, + "/api/share-page/{sharePageType}": { + "get": { + "tags": [ + "SharePage" + ], + "summary": "Get Share Pages by Saddleback.Cm.Contracts.Models.SharePages.SharePageType", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: For Events, For Serving Opportunities
\r\n
\r\n**Data Access:**
\r\nREAD Access to Share Pages", + "operationId": "Get", + "parameters": [ + { + "name": "sharePageType", + "in": "path", + "description": "The Type of SharePages to retrieve - Unknown is not allowed", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_SharePageType" + } + }, + { + "name": "searchString", + "in": "query", + "description": "Search within SharePage titles", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Share Pages successfully retrieved" + }, + "400": { + "description": "Invalid. Something about the provided parameter values is not valid" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "For Events" + ] + }, + { + "Permissions": [ + "For Serving Opportunities" + ] + } + ] + } + } + }, + "/api/share-page/compare-results": { + "post": { + "tags": [ + "SharePage" + ], + "summary": "Compare results for pending changes to a given Share Page", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: For Events, For Serving Opportunities
\r\n
\r\n**Data Access:**
\r\nREAD Access to an individual Share Page", + "operationId": "CompareResults", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "filter updates for the Share Page", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageCompareResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageCompareResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageCompareResultsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SharePageCompareResultsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Share Page successfully retrieved" + }, + "400": { + "description": "Invalid. Something about the provided parameters is not valid" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + }, + "404": { + "description": "Not found" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "For Events" + ] + }, + { + "Permissions": [ + "For Serving Opportunities" + ] + } + ] + } + } + }, + "/api/share-page/image": { + "post": { + "tags": [ + "SharePage" + ], + "summary": "Upload image for use w/ Share Page", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: For Events, For Serving Opportunities
\r\n
\r\n**Data Access:**
\r\nN/A", + "operationId": "Image", + "parameters": [ + { + "name": "imageSizeType", + "in": "query", + "description": "Cannot be Saddleback.Cm.Common.Services.Images.ImageSizeType.Unknown", + "schema": { + "$ref": "#/components/schemas/Core_App_ImageSizeType" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "successfully uploaded the image", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Core_App_UploadImageResultViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_UploadImageResultViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_UploadImageResultViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "For Events" + ] + }, + { + "Permissions": [ + "For Serving Opportunities" + ] + } + ] + } + } + }, + "/api/share-page-public/{sharePageId}": { + "get": { + "tags": [ + "SharePagePublic" + ], + "summary": "Get Content for Share Page of given sharePageId", + "description": "**Data Access:**
\r\nREAD Access to an individual Share Page", + "operationId": "Get", + "parameters": [ + { + "name": "sharePageId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Share Page Content successfully retrieved" + }, + "400": { + "description": "Invalid. Something about the provided parameters is not valid" + }, + "404": { + "description": "Not found" + } + } + } + }, + "/api/speaker": { + "get": { + "tags": [ + "Speaker" + ], + "summary": "Get all speakers or by data source id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "personId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "Speaker" + ], + "summary": "Create a new speaker", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Speakers
\r\n", + "operationId": "CreateSpeaker", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Speakers" + ] + } + ] + } + } + }, + "/api/speaker/{id}": { + "get": { + "tags": [ + "Speaker" + ], + "summary": "Get a speaker by id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "Speaker" + ], + "summary": "Update the speaker", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Speakers
\r\n", + "operationId": "UpdateSpeaker", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_SpeakerViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Speakers" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Speaker" + ], + "summary": "Delete the speaker", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Speakers
\r\n", + "operationId": "DeleteSpeaker", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Speakers" + ] + } + ] + } + } + }, + "/api/venue/on-campus/{venueId}/subvenue": { + "get": { + "tags": [ + "SubVenue" + ], + "summary": "Get all sub-venues by venue Id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "GetAllSubVenueByVenueId", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "post": { + "tags": [ + "SubVenue" + ], + "summary": "Create a new sub-venues", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "CreateSubVenue", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/venue/off-campus/{venueId}/subvenue": { + "get": { + "tags": [ + "SubVenue" + ], + "summary": "Get all sub-venues by venue Id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "GetAllSubVenueByVenueId", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "post": { + "tags": [ + "SubVenue" + ], + "summary": "Create a new sub-venues", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "CreateSubVenue", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/venue/on-campus/{venueId}/subvenue/{subVenueId}": { + "get": { + "tags": [ + "SubVenue" + ], + "summary": "Get a sub-venue by id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "GetSubVenueById", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "put": { + "tags": [ + "SubVenue" + ], + "summary": "Update the sub-venues", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "UpdateSubVenue", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "delete": { + "tags": [ + "SubVenue" + ], + "summary": "Delete the on-campus sub-venues", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "DeleteSubVenue", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/venue/off-campus/{venueId}/subvenue/{subVenueId}": { + "get": { + "tags": [ + "SubVenue" + ], + "summary": "Get a sub-venue by id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "GetSubVenueById", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "put": { + "tags": [ + "SubVenue" + ], + "summary": "Update the sub-venues", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "UpdateSubVenue", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "delete": { + "tags": [ + "SubVenue" + ], + "summary": "Delete the on-campus sub-venues", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "DeleteSubVenue", + "parameters": [ + { + "name": "venueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/venue/subvenue": { + "get": { + "tags": [ + "SubVenue" + ], + "summary": "Get sub-venues by IDs", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nInternal systems access only", + "operationId": "GetByIds", + "parameters": [ + { + "name": "subVenueIds", + "in": "query", + "description": "Sub-Venue IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of sub-venues.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/tag": { + "get": { + "tags": [ + "Tag" + ], + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "deprecated": true + }, + "post": { + "tags": [ + "Tag" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Tags
\r\n", + "operationId": "Post", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Tags" + ] + } + ] + } + } + }, + "/api/tag/{id}": { + "get": { + "tags": [ + "Tag" + ], + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "put": { + "tags": [ + "Tag" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Tags
\r\n", + "operationId": "Put", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_TagViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Tags" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Tag" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Tags
\r\n", + "operationId": "Delete", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Tags" + ] + } + ] + } + } + }, + "/api/tag/id": { + "post": { + "tags": [ + "Tag" + ], + "operationId": "GetById", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/tag/category": { + "get": { + "tags": [ + "Tag" + ], + "operationId": "GetByCategoryId", + "parameters": [ + { + "name": "categoryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "category", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/tag-category": { + "get": { + "tags": [ + "TagCategory" + ], + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/tag-category/{id}": { + "get": { + "tags": [ + "TagCategory" + ], + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/tag-category/filter": { + "get": { + "tags": [ + "TagCategory" + ], + "operationId": "GetByCategoryName", + "parameters": [ + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/team": { + "get": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "churchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Teams
\r\n", + "operationId": "CreateTeam", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Teams" + ], + "ModelParameterName": [ + "viewModel" + ] + } + ] + } + } + }, + "/api/team/church-entity/{churchEntityId}": { + "get": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetTeamsByCampus", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/team/{id}": { + "get": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetTeam", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Teams
\r\n", + "operationId": "UpdateTeam", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Teams" + ], + "ModelParameterName": [ + "viewModel" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Teams
\r\n", + "operationId": "DeleteTeam", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Teams" + ] + } + ] + } + } + }, + "/api/team/my": { + "get": { + "tags": [ + "Team" + ], + "operationId": "GetMyTeams", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/team/{id}/members": { + "get": { + "tags": [ + "Team" + ], + "operationId": "GetTeamMembers", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "q", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sort", + "in": "query", + "schema": { + "type": "string", + "default": "lastName,ASC" + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 150 + } + }, + { + "name": "pageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Teams
\r\n", + "operationId": "AddTeamMembers", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Teams" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Team" + ], + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Teams
\r\n", + "operationId": "RemoveTeamMembers", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Teams" + ] + } + ] + } + } + }, + "/api/template/name": { + "get": { + "tags": [ + "Template" + ], + "summary": "Gets Template by name", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Manage Event Attendees
\r\n
\r\n**Data Access:**
\r\nREAD access to a single specified Template.\r\n\r\n**More Info:**
\r\nThis operation is presently restricted to callers with 'Internal System' resource scope,\r\nas it is presently only used by REST SDK for obtaining Templates in other Microservices.", + "operationId": "GetTemplateByName", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "Template Name", + "schema": { + "type": "string" + } + }, + { + "name": "keepRazorSyntax", + "in": "query", + "description": "Boolean flag indicating whether or not any Razor syntax in the Template (assuming it is HTML/Razor) needs to be translated into UI-friendly markers.
\r\nShould be True if the caller wishes to keep the Template as Razor (i.e. to use the template to construct and send an email message).
\r\nShould be False (or omitted as this is the default) to translate the Razor syntax into UI-friendly markers (i.e. to fetch the template for editing in the UI, using a tool like CKEditor or Unlayer).", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Template." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + } + ] + } + } + }, + "/api/template/type/{templateType}": { + "get": { + "tags": [ + "Template" + ], + "summary": "Gets Templates by type", + "description": "**Data Access:**
", + "operationId": "GetTemplatesByType", + "parameters": [ + { + "name": "templateType", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/Core_Model_TemplateType" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of Templates." + }, + "401": { + "description": "Not authorized." + } + } + } + }, + "/api/time-zone": { + "get": { + "tags": [ + "TimeZone" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAllTimeZones", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/touchpoint": { + "get": { + "tags": [ + "Touchpoint" + ], + "summary": "Get paged list of Touchpoints", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Manage Journeys
\r\n
\r\n**Data Access:**
\r\nREAD Access to Touchpoints", + "operationId": "Get", + "parameters": [ + { + "name": "searchString", + "in": "query", + "description": "Search within Touchpoint names", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Touchpoints successfully retrieved" + }, + "400": { + "description": "Invalid. Something about the provided parameter values is not valid" + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Manage Journeys" + ] + } + ] + } + } + }, + "/api/venue/on-campus": { + "get": { + "tags": [ + "Venue" + ], + "summary": "Get all on-campus venues", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAllOnCampus", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "Venue" + ], + "summary": "Create a new on-campus venue", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "CreateOnCampusVenue", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ], + "ModelParameterName": [ + "venueViewModel" + ] + } + ] + } + } + }, + "/api/venue/off-campus": { + "get": { + "tags": [ + "Venue" + ], + "summary": "Get all off-campus venues", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetAllOffCampus", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "Venue" + ], + "summary": "Create a new off-campus venue", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "CreateOffCampusVenue", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ], + "ModelParameterName": [ + "venueViewModel" + ] + } + ] + } + } + }, + "/api/venue/{id}": { + "get": { + "tags": [ + "Venue" + ], + "summary": "Get a on-campus venue by id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\nThis method returns correct HasAssociation property", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeAddress", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/venue": { + "get": { + "tags": [ + "Venue" + ], + "summary": "Get venues by IDs", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetByIds", + "parameters": [ + { + "name": "venueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "includeRelatedVenues", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "includeSubVenues", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "fillCampusAddress", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/venue/on-campus/{id}": { + "get": { + "tags": [ + "Venue" + ], + "summary": "Get a on-campus venue by id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\nThis method returns correct HasAssociation property", + "operationId": "GetOnCampusById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "Venue" + ], + "summary": "Update the on-campus venue", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "UpdateOnCampusVenue", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Venue" + ], + "summary": "Delete the on-campus venue", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "DeleteOnCampusVenue", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/venue/off-campus/{id}": { + "get": { + "tags": [ + "Venue" + ], + "summary": "Get a off-campus venue by id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\nThis method returns correct HasAssociation property", + "operationId": "GetOffCampusById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "Venue" + ], + "summary": "Update the on-campus venue", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "UpdateOffCampusVenue", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Venue" + ], + "summary": "Delete the off-campus venue", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "DeleteOffCampusVenue", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/venue/on-campus/churchentity/{churchEntityId}": { + "get": { + "tags": [ + "Venue" + ], + "summary": "Get a venues by church entity id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetOnCampusByChurchEntityId", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeSubVenues", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/venueaddress": { + "get": { + "tags": [ + "VenueAddress" + ], + "summary": "Get all venues addresses", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "GetAll", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "post": { + "tags": [ + "VenueAddress" + ], + "summary": "Create a new venue Address", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "CreateVenueAddress", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/venueaddress/{id}": { + "get": { + "tags": [ + "VenueAddress" + ], + "summary": "Get a venue address by id", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "put": { + "tags": [ + "VenueAddress" + ], + "summary": "Update the venue address", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "UpdateVenueAddress", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + }, + "delete": { + "tags": [ + "VenueAddress" + ], + "summary": "Delete the venue Address", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Venues
\r\n", + "operationId": "DeleteVenueAddress", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Venues" + ] + } + ] + } + } + }, + "/api/version": { + "get": { + "tags": [ + "Version" + ], + "operationId": "Get", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + } + }, + "components": { + "schemas": { + "Core_AgreementLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "version": { + "type": "integer", + "format": "int32" + }, + "active": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_AgreementViewModel": { + "required": [ + "content", + "name", + "title" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 256, + "type": "string" + }, + "version": { + "type": "integer", + "format": "int32" + }, + "title": { + "maxLength": 256, + "type": "string" + }, + "content": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "predecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_AnswerCustomFieldBulkDeletionRequestViewModel": { + "required": [ + "entityId", + "entityType" + ], + "type": "object", + "properties": { + "entityType": { + "type": "string" + }, + "entityId": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_AgeGroupStatisticsViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "total": { + "type": "number", + "format": "double" + } + }, + "additionalProperties": false + }, + "Core_App_AnnouncementCategoryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_AnnouncementViewModel": { + "required": [ + "body", + "title" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "categoryName": { + "type": "string", + "nullable": true + }, + "categoryDescription": { + "type": "string", + "nullable": true + }, + "body": { + "type": "string" + }, + "heroImage": { + "type": "string", + "nullable": true + }, + "callToAction": { + "type": "string", + "nullable": true + }, + "callToActionType": { + "$ref": "#/components/schemas/Core_Model_CallToActionType" + }, + "callToActionEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "callToActionEntityName": { + "type": "string", + "nullable": true + }, + "contentId": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ApplicationUser": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "personId": { + "type": "string", + "nullable": true + }, + "userName": { + "type": "string", + "nullable": true + }, + "emailConfirmed": { + "type": "boolean" + }, + "accessFailedCount": { + "type": "integer", + "format": "int32" + }, + "lockoutEnd": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isLockedOut": { + "type": "boolean" + }, + "mergeableItem": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + } + }, + "additionalProperties": false + }, + "Core_App_Assembly": { + "type": "object", + "properties": { + "definedTypes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true, + "readOnly": true + }, + "exportedTypes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true, + "readOnly": true + }, + "codeBase": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "entryPoint": { + "$ref": "#/components/schemas/Core_App_MethodInfo" + }, + "fullName": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "imageRuntimeVersion": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "isDynamic": { + "type": "boolean", + "readOnly": true + }, + "location": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "reflectionOnly": { + "type": "boolean", + "readOnly": true + }, + "isCollectible": { + "type": "boolean", + "readOnly": true + }, + "isFullyTrusted": { + "type": "boolean", + "readOnly": true + }, + "customAttributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeData" + }, + "nullable": true, + "readOnly": true + }, + "escapedCodeBase": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "manifestModule": { + "$ref": "#/components/schemas/Core_App_Module" + }, + "modules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_Module" + }, + "nullable": true, + "readOnly": true + }, + "globalAssemblyCache": { + "type": "boolean", + "readOnly": true, + "deprecated": true + }, + "hostContext": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "securityRuleSet": { + "$ref": "#/components/schemas/Core_App_SecurityRuleSet" + } + }, + "additionalProperties": false + }, + "Core_App_AuditLogNoteCreateViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "note": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_AuditLogNoteViewModel": { + "type": "object", + "properties": { + "note": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "createdBy": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_AuditLogViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "entityId": { + "type": "integer", + "format": "int32" + }, + "entityName": { + "type": "string", + "nullable": true + }, + "isEntityActive": { + "type": "boolean" + }, + "correlationId": { + "type": "integer", + "format": "int32" + }, + "source": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64" + }, + "createdBy": { + "type": "integer", + "format": "int32" + }, + "createdByFullName": { + "type": "string", + "nullable": true + }, + "categories": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "details": { + "type": "array", + "items": { }, + "nullable": true + }, + "notes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AuditLogNoteViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_Body": { + "required": [ + "content" + ], + "type": "object", + "properties": { + "content": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_App_CallingConventions": { + "enum": [ + "Standard", + "VarArgs", + "Any", + "HasThis", + "ExplicitThis" + ], + "type": "string" + }, + "Core_App_CampusServiceTemplateViewModel": { + "required": [ + "description", + "name" + ], + "type": "object", + "properties": { + "serviceTemplateId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "occurrenceIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "occurrences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel" + }, + "nullable": true + }, + "isPublished": { + "type": "boolean" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "connectionQuestions": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "nextStepQuestions": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "announcements": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "services": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "nullable": true + }, + "servicesToCreate": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_EventOccurrenceViewModel" + }, + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "type": "string", + "nullable": true + }, + "image": { + "type": "string", + "nullable": true + }, + "speakerIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "speakers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServiceSpeaker" + }, + "nullable": true + }, + "seriesId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "seriesName": { + "type": "string", + "nullable": true + }, + "seriesHeroImage": { + "type": "string", + "nullable": true + }, + "seriesDescription": { + "type": "string", + "nullable": true + }, + "seriesTagline": { + "type": "string", + "nullable": true + }, + "seriesPartNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "outline": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateOutline" + }, + "songIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "mediaId": { + "type": "string", + "nullable": true + }, + "mediaUrl": { + "type": "string", + "nullable": true + }, + "isExternalMedia": { + "type": "boolean" + }, + "serviceQuestions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + }, + "nullable": true + }, + "sortedServiceQuestions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_CampusStatisticsViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "total": { + "type": "number", + "format": "double" + }, + "byService": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ServiceStatisticsViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ClientRateLimitOptions": { + "type": "object", + "properties": { + "clientPolicyPrefix": { + "type": "string", + "nullable": true + }, + "generalRules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_RateLimitRule" + }, + "nullable": true + }, + "endpointWhitelist": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "clientIdHeader": { + "type": "string", + "nullable": true + }, + "clientWhitelist": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "realIpHeader": { + "type": "string", + "nullable": true + }, + "ipWhitelist": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "httpStatusCode": { + "type": "integer", + "format": "int32" + }, + "quotaExceededMessage": { + "type": "string", + "nullable": true + }, + "quotaExceededResponse": { + "$ref": "#/components/schemas/Core_App_QuotaExceededResponse" + }, + "rateLimitCounterPrefix": { + "type": "string", + "nullable": true + }, + "stackBlockedRequests": { + "type": "boolean" + }, + "enableEndpointRateLimiting": { + "type": "boolean" + }, + "disableRateLimitHeaders": { + "type": "boolean" + }, + "enableRegexRuleMatching": { + "type": "boolean" + }, + "requestBlockedBehaviorAsync": { + "$ref": "#/components/schemas/Core_Func_HttpContext_ClientRequestIdentity_RateLimitCounter_RateLimitRule_Task" + } + }, + "additionalProperties": false + }, + "Core_App_ConstructorInfo": { + "type": "object", + "properties": { + "memberType": { + "$ref": "#/components/schemas/Core_App_MemberTypes" + }, + "attributes": { + "$ref": "#/components/schemas/Core_App_MethodAttributes" + }, + "methodImplementationFlags": { + "$ref": "#/components/schemas/Core_App_MethodImplAttributes" + }, + "callingConvention": { + "$ref": "#/components/schemas/Core_App_CallingConventions" + }, + "isAbstract": { + "type": "boolean", + "readOnly": true + }, + "isConstructor": { + "type": "boolean", + "readOnly": true + }, + "isFinal": { + "type": "boolean", + "readOnly": true + }, + "isHideBySig": { + "type": "boolean", + "readOnly": true + }, + "isSpecialName": { + "type": "boolean", + "readOnly": true + }, + "isStatic": { + "type": "boolean", + "readOnly": true + }, + "isVirtual": { + "type": "boolean", + "readOnly": true + }, + "isAssembly": { + "type": "boolean", + "readOnly": true + }, + "isFamily": { + "type": "boolean", + "readOnly": true + }, + "isFamilyAndAssembly": { + "type": "boolean", + "readOnly": true + }, + "isFamilyOrAssembly": { + "type": "boolean", + "readOnly": true + }, + "isPrivate": { + "type": "boolean", + "readOnly": true + }, + "isPublic": { + "type": "boolean", + "readOnly": true + }, + "isConstructedGenericMethod": { + "type": "boolean", + "readOnly": true + }, + "isGenericMethod": { + "type": "boolean", + "readOnly": true + }, + "isGenericMethodDefinition": { + "type": "boolean", + "readOnly": true + }, + "containsGenericParameters": { + "type": "boolean", + "readOnly": true + }, + "methodHandle": { + "$ref": "#/components/schemas/Core_App_RuntimeMethodHandle" + }, + "isSecurityCritical": { + "type": "boolean", + "readOnly": true + }, + "isSecuritySafeCritical": { + "type": "boolean", + "readOnly": true + }, + "isSecurityTransparent": { + "type": "boolean", + "readOnly": true + }, + "name": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "declaringType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "reflectedType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "module": { + "$ref": "#/components/schemas/Core_App_Module" + }, + "customAttributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeData" + }, + "nullable": true, + "readOnly": true + }, + "isCollectible": { + "type": "boolean", + "readOnly": true + }, + "metadataToken": { + "type": "integer", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_CustomAttributeData": { + "type": "object", + "properties": { + "attributeType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "constructor": { + "$ref": "#/components/schemas/Core_App_ConstructorInfo" + }, + "constructorArguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeTypedArgument" + }, + "nullable": true, + "readOnly": true + }, + "namedArguments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeNamedArgument" + }, + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_CustomAttributeNamedArgument": { + "type": "object", + "properties": { + "memberInfo": { + "$ref": "#/components/schemas/Core_App_MemberInfo" + }, + "typedValue": { + "$ref": "#/components/schemas/Core_App_CustomAttributeTypedArgument" + }, + "memberName": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "isField": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_CustomAttributeTypedArgument": { + "type": "object", + "properties": { + "argumentType": { + "type": "string", + "nullable": true + }, + "value": { + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_DailyDevotionalContent": { + "type": "object", + "properties": { + "displayText": { + "type": "string", + "nullable": true + }, + "publishedDate": { + "type": "string", + "format": "date-time" + }, + "owner": { + "type": "string", + "nullable": true + }, + "author": { + "type": "string", + "nullable": true + }, + "day": { + "type": "string", + "nullable": true + }, + "year": { + "type": "string", + "nullable": true + }, + "citation": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "heroImage": { + "$ref": "#/components/schemas/Core_App_LinkContent" + }, + "plainTextBody": { + "type": "string", + "nullable": true + }, + "htmlBody": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "contentItemId": { + "type": "string", + "nullable": true + }, + "contentItemVersionId": { + "type": "string", + "nullable": true + }, + "contentType": { + "type": "string", + "nullable": true + }, + "isLatest": { + "type": "boolean" + }, + "isPublished": { + "type": "boolean" + }, + "modifiedDate": { + "type": "string", + "format": "date-time" + }, + "createdDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_App_DailyVerseContent": { + "type": "object", + "properties": { + "displayText": { + "type": "string", + "nullable": true + }, + "publishedDate": { + "type": "string", + "format": "date-time" + }, + "owner": { + "type": "string", + "nullable": true + }, + "author": { + "type": "string", + "nullable": true + }, + "day": { + "type": "string", + "nullable": true + }, + "year": { + "type": "string", + "nullable": true + }, + "citation": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "heroImage": { + "$ref": "#/components/schemas/Core_App_LinkContent" + }, + "plainTextBody": { + "type": "string", + "nullable": true + }, + "htmlBody": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "contentItemId": { + "type": "string", + "nullable": true + }, + "contentItemVersionId": { + "type": "string", + "nullable": true + }, + "contentType": { + "type": "string", + "nullable": true + }, + "isLatest": { + "type": "boolean" + }, + "isPublished": { + "type": "boolean" + }, + "modifiedDate": { + "type": "string", + "format": "date-time" + }, + "createdDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_App_DataExtractFormat": { + "enum": [ + "Unknown", + "Excel", + "CSV" + ], + "type": "string" + }, + "Core_App_DayOfWeek": { + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "type": "string" + }, + "Core_App_EmailVerificationFullfillmentViewModel": { + "type": "object", + "properties": { + "token": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_EmailVerificationRequestViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "description": "Person UNIQUE ID", + "format": "int32" + }, + "email": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_EngagementViewModel": { + "type": "object", + "properties": { + "categoryName": { + "type": "string", + "nullable": true + }, + "dateUtc": { + "type": "string", + "format": "date-time" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "touchpointId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "eventName": { + "type": "string", + "nullable": true + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ErrorType": { + "enum": [ + "None", + "RequestNotValid", + "RequestedEntityNotFound", + "UserNotAuthorized", + "Conflict", + "RuntimeException", + "NoContent" + ], + "type": "string" + }, + "Core_App_ErrorViewModel": { + "type": "object", + "properties": { + "message": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_EventOccurrenceViewModel": { + "required": [ + "actualStartDateTime", + "churchEntityId", + "scheduleId" + ], + "type": "object", + "properties": { + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "actualStartDateTime": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_App_FactStatisticsViewModel": { + "type": "object", + "properties": { + "dates": { + "$ref": "#/components/schemas/Core_App_WeekendFlashReportQueryDatesViewModel" + }, + "total": { + "type": "number", + "format": "double" + }, + "byCampus": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CampusStatisticsViewModel" + }, + "nullable": true + }, + "totalByAge": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AgeGroupStatisticsViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_FamilyAddressUpdateViewModel": { + "required": [ + "personIds" + ], + "type": "object", + "properties": { + "address": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + }, + "personIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Should be a collection of Person Unique IDs" + } + }, + "additionalProperties": false, + "description": "This view model is for the use case of updating all members of a family\r\nto have the same Primary Address" + }, + "Core_App_FamilyCampusUpdateViewModel": { + "required": [ + "personIds" + ], + "type": "object", + "properties": { + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "personIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Should be a collection of Person Unique IDs" + } + }, + "additionalProperties": false, + "description": "This view model is for the use case of updating all members of a family\r\nto have the same Home Campus" + }, + "Core_App_FeatureToggleRequestViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "enabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_FollowUpRuleCountViewModel": { + "type": "object", + "properties": { + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32" + }, + "ruleCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_FollowUpTaskBulkActionRequestViewModel": { + "type": "object", + "properties": { + "taskIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_FollowUpTaskCommentViewModel": { + "required": [ + "comment", + "taskId" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "taskId": { + "type": "integer", + "format": "int32" + }, + "comment": { + "type": "string" + }, + "author": { + "$ref": "#/components/schemas/Core_App_PersonSecurityLiteViewModel" + }, + "date": { + "type": "integer", + "format": "int64" + }, + "modified": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + }, + "Core_App_FollowUpTaskEscalationRequestViewModel": { + "type": "object", + "properties": { + "comment": { + "type": "string", + "nullable": true + }, + "taskIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_FollowUpTaskReassignmentRequestViewModel": { + "type": "object", + "properties": { + "assigneeId": { + "type": "integer", + "description": "Person Unique ID of the Person/User to which the referenced Tasks should be reassigned", + "format": "int32" + }, + "comment": { + "type": "string", + "nullable": true + }, + "taskIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_FollowUpTaskStatusUpdateRequestViewModel": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskStatus" + }, + "taskIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_GenderTypeCode": { + "enum": [ + "Unspecified", + "Male", + "Female" + ], + "type": "string" + }, + "Core_App_ICustomAttributeProvider": { + "type": "object", + "additionalProperties": false + }, + "Core_App_ImageSizeType": { + "enum": [ + "Unknown", + "Desktop", + "Mobile", + "Thumbnail" + ], + "type": "string" + }, + "Core_App_ImageViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "placementId": { + "type": "string", + "nullable": true + }, + "mimeType": { + "type": "string", + "nullable": true + }, + "aspectRatio": { + "type": "string", + "nullable": true + }, + "height": { + "type": "integer", + "format": "int32" + }, + "width": { + "type": "integer", + "format": "int32" + }, + "url": { + "type": "string", + "nullable": true + }, + "playlistId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_ImportFieldMappingViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "dataSourceId": { + "type": "integer", + "format": "int32" + }, + "dataSourceType": { + "$ref": "#/components/schemas/Core_Model_IntegrationDataSourceType" + }, + "mapping": { + "$ref": "#/components/schemas/Core_App_ImportMappingViewModel" + } + }, + "additionalProperties": false + }, + "Core_App_ImportMappingItemViewModel": { + "type": "object", + "properties": { + "cmField": { + "type": "string", + "nullable": true + }, + "externalField": { + "type": "string", + "nullable": true + }, + "cmMilestoneId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "restrictions": { + "$ref": "#/components/schemas/Core_Model_ImportFieldRestriction" + }, + "valueMap": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ImportMappingPreviewViewModel": { + "type": "object", + "properties": { + "filePreview": { + "type": "string", + "nullable": true + }, + "maxRecordsCount": { + "type": "integer", + "format": "int32" + }, + "mapping": { + "$ref": "#/components/schemas/Core_App_ImportMappingViewModel" + } + }, + "additionalProperties": false + }, + "Core_App_ImportMappingViewModel": { + "type": "object", + "properties": { + "sourceFieldsHaveNames": { + "type": "boolean" + }, + "map": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ImportMappingItemViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ImportRecordViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "importHistoryId": { + "type": "integer", + "format": "int32" + }, + "personStatus": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + }, + "personAction": { + "$ref": "#/components/schemas/Core_Model_ImportRecordAction" + }, + "personPerformerPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personActionStatus": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + }, + "milestoneStatus": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + }, + "milestoneAction": { + "$ref": "#/components/schemas/Core_Model_ImportRecordAction" + }, + "milestonePerformerPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "milestoneActionStatus": { + "$ref": "#/components/schemas/Core_Model_ImportRecordStatus" + }, + "details": { + "$ref": "#/components/schemas/Core_Model_ImportRecordDetails" + }, + "firstNameFilter": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_IndexOperation": { + "enum": [ + "Invalid", + "Insert", + "Update", + "Delete" + ], + "type": "string" + }, + "Core_App_IntegrationDataSourceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "processor": { + "type": "string", + "nullable": true + }, + "syncFeatures": { + "$ref": "#/components/schemas/Core_Model_SyncFeatures" + } + }, + "additionalProperties": false + }, + "Core_App_IpRateLimitOptions": { + "type": "object", + "properties": { + "ipPolicyPrefix": { + "type": "string", + "nullable": true + }, + "generalRules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_RateLimitRule" + }, + "nullable": true + }, + "endpointWhitelist": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "clientIdHeader": { + "type": "string", + "nullable": true + }, + "clientWhitelist": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "realIpHeader": { + "type": "string", + "nullable": true + }, + "ipWhitelist": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "httpStatusCode": { + "type": "integer", + "format": "int32" + }, + "quotaExceededMessage": { + "type": "string", + "nullable": true + }, + "quotaExceededResponse": { + "$ref": "#/components/schemas/Core_App_QuotaExceededResponse" + }, + "rateLimitCounterPrefix": { + "type": "string", + "nullable": true + }, + "stackBlockedRequests": { + "type": "boolean" + }, + "enableEndpointRateLimiting": { + "type": "boolean" + }, + "disableRateLimitHeaders": { + "type": "boolean" + }, + "enableRegexRuleMatching": { + "type": "boolean" + }, + "requestBlockedBehaviorAsync": { + "$ref": "#/components/schemas/Core_Func_HttpContext_ClientRequestIdentity_RateLimitCounter_RateLimitRule_Task" + } + }, + "additionalProperties": false + }, + "Core_App_IsoDayOfWeek": { + "enum": [ + "None", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "type": "string" + }, + "Core_App_LinkContent": { + "type": "object", + "properties": { + "url": { + "type": "string", + "nullable": true + }, + "text": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MediaViewModel": { + "required": [ + "title", + "url" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "maxLength": 256, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "descriptionLong": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string" + }, + "publishDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "trackNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "tags": { + "type": "string", + "nullable": true + }, + "playlist": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PlaylistViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MemberInfo": { + "type": "object", + "properties": { + "memberType": { + "$ref": "#/components/schemas/Core_App_MemberTypes" + }, + "name": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "declaringType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "reflectedType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "module": { + "$ref": "#/components/schemas/Core_App_Module" + }, + "customAttributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeData" + }, + "nullable": true, + "readOnly": true + }, + "isCollectible": { + "type": "boolean", + "readOnly": true + }, + "metadataToken": { + "type": "integer", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_MemberTypes": { + "enum": [ + "Constructor", + "Event", + "Field", + "Method", + "Property", + "TypeInfo", + "Custom", + "NestedType", + "All" + ], + "type": "string" + }, + "Core_App_MembershipStatusUpdateViewModel": { + "type": "object", + "properties": { + "newStatus": { + "type": "integer", + "format": "int32" + }, + "note": { + "type": "string", + "nullable": true + }, + "noteSensitive": { + "type": "boolean" + }, + "disengagementReason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MethodAttributes": { + "enum": [ + "ReuseSlot", + "PrivateScope, Private", + "PrivateScope, FamANDAssem", + "PrivateScope, Assembly", + "PrivateScope, Family", + "PrivateScope, FamORAssem", + "PrivateScope, Public", + "PrivateScope, MemberAccessMask", + "PrivateScope, UnmanagedExport", + "PrivateScope, Static", + "PrivateScope, Final", + "PrivateScope, Virtual", + "PrivateScope, HideBySig", + "PrivateScope, VtableLayoutMask", + "PrivateScope, CheckAccessOnOverride", + "PrivateScope, Abstract", + "PrivateScope, SpecialName", + "PrivateScope, RTSpecialName", + "PrivateScope, PinvokeImpl", + "PrivateScope, HasSecurity", + "PrivateScope, RequireSecObject", + "PrivateScope, ReservedMask" + ], + "type": "string" + }, + "Core_App_MethodImplAttributes": { + "enum": [ + "Managed", + "Native", + "OPTIL", + "CodeTypeMask", + "Unmanaged", + "NoInlining", + "ForwardRef", + "Synchronized", + "NoOptimization", + "PreserveSig", + "AggressiveInlining", + "AggressiveOptimization", + "InternalCall", + "MaxMethodImplVal" + ], + "type": "string" + }, + "Core_App_MethodInfo": { + "type": "object", + "properties": { + "memberType": { + "$ref": "#/components/schemas/Core_App_MemberTypes" + }, + "returnParameter": { + "$ref": "#/components/schemas/Core_App_ParameterInfo" + }, + "returnType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "returnTypeCustomAttributes": { + "$ref": "#/components/schemas/Core_App_ICustomAttributeProvider" + }, + "attributes": { + "$ref": "#/components/schemas/Core_App_MethodAttributes" + }, + "methodImplementationFlags": { + "$ref": "#/components/schemas/Core_App_MethodImplAttributes" + }, + "callingConvention": { + "$ref": "#/components/schemas/Core_App_CallingConventions" + }, + "isAbstract": { + "type": "boolean", + "readOnly": true + }, + "isConstructor": { + "type": "boolean", + "readOnly": true + }, + "isFinal": { + "type": "boolean", + "readOnly": true + }, + "isHideBySig": { + "type": "boolean", + "readOnly": true + }, + "isSpecialName": { + "type": "boolean", + "readOnly": true + }, + "isStatic": { + "type": "boolean", + "readOnly": true + }, + "isVirtual": { + "type": "boolean", + "readOnly": true + }, + "isAssembly": { + "type": "boolean", + "readOnly": true + }, + "isFamily": { + "type": "boolean", + "readOnly": true + }, + "isFamilyAndAssembly": { + "type": "boolean", + "readOnly": true + }, + "isFamilyOrAssembly": { + "type": "boolean", + "readOnly": true + }, + "isPrivate": { + "type": "boolean", + "readOnly": true + }, + "isPublic": { + "type": "boolean", + "readOnly": true + }, + "isConstructedGenericMethod": { + "type": "boolean", + "readOnly": true + }, + "isGenericMethod": { + "type": "boolean", + "readOnly": true + }, + "isGenericMethodDefinition": { + "type": "boolean", + "readOnly": true + }, + "containsGenericParameters": { + "type": "boolean", + "readOnly": true + }, + "methodHandle": { + "$ref": "#/components/schemas/Core_App_RuntimeMethodHandle" + }, + "isSecurityCritical": { + "type": "boolean", + "readOnly": true + }, + "isSecuritySafeCritical": { + "type": "boolean", + "readOnly": true + }, + "isSecurityTransparent": { + "type": "boolean", + "readOnly": true + }, + "name": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "declaringType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "reflectedType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "module": { + "$ref": "#/components/schemas/Core_App_Module" + }, + "customAttributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeData" + }, + "nullable": true, + "readOnly": true + }, + "isCollectible": { + "type": "boolean", + "readOnly": true + }, + "metadataToken": { + "type": "integer", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_MetricAgeGroupViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_App_MetricCategoryViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_App_MinistryCentralEmailViewModel": { + "required": [ + "body", + "ministryIds", + "replyEmail", + "senderName", + "subject" + ], + "type": "object", + "properties": { + "ministryIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + }, + "recipientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "senderName": { + "type": "string" + }, + "fromEmail": { + "type": "string", + "nullable": true + }, + "replyEmail": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "body": { + "type": "string" + }, + "bodyTemplateName": { + "type": "string", + "nullable": true + }, + "bodyMergeVars": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MinistryContactViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "fullName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "phoneNumber": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MinistryGroupDetailViewModel": { + "required": [ + "churchEntityId", + "ministryId", + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MinistryLeaderDetailedViewModel": { + "type": "object", + "properties": { + "leadershipPositions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryLeadershipPositionViewModel" + }, + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "phoneType": { + "$ref": "#/components/schemas/Core_Model_PhoneType" + }, + "publicEmail": { + "type": "string", + "nullable": true + }, + "publicPhone": { + "type": "string", + "nullable": true + }, + "publicPhoneType": { + "$ref": "#/components/schemas/Core_Model_PhoneType" + } + }, + "additionalProperties": false + }, + "Core_App_MinistryLeadershipPositionViewModel": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "leadershipPositions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MinistryLocationBulkUpdateViewModel": { + "type": "object", + "properties": { + "isAcceptingNewMembers": { + "type": "boolean", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + } + }, + "additionalProperties": false + }, + "Core_App_MinistryLocationStatisticsViewModel": { + "type": "object", + "properties": { + "membersCount": { + "type": "integer", + "format": "int32" + }, + "notContactedMembersCount": { + "type": "integer", + "format": "int32" + }, + "firstContactMembersCount": { + "type": "integer", + "format": "int32" + }, + "secondContactMembersCount": { + "type": "integer", + "format": "int32" + }, + "pendingMembersCount": { + "type": "integer", + "format": "int32" + }, + "ineligibleMembersCount": { + "type": "integer", + "format": "int32" + }, + "activeMembersCount": { + "type": "integer", + "format": "int32" + }, + "inactiveMembersCount": { + "type": "integer", + "format": "int32" + }, + "inTrainingMembersCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_MinistryLocationViewModel": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "ministryAbbreviation": { + "type": "string", + "description": "Ministry Abbreviation (short name indentifying the ministry used in SMS message prefixes and such)", + "nullable": true + }, + "parentMinistryStatus": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "churchEntityAbbreviation": { + "type": "string", + "description": "Campus Abbreviation (short name indentifying the campus used in SMS message prefixes and such)", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "isAcceptingNewMembers": { + "type": "boolean" + }, + "membershipMetrics": { + "$ref": "#/components/schemas/Core_Model_MinistryMembershipMetrics" + }, + "settings": { + "$ref": "#/components/schemas/Core_MinistrySettingsViewModel" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "inactiveDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sendInterestedToLeader": { + "type": "boolean" + }, + "sendInterestedToColeader": { + "type": "boolean" + }, + "sendInterestedToStaffConnector": { + "type": "boolean" + }, + "leader": { + "$ref": "#/components/schemas/Core_MinistryLeaderViewModel" + }, + "coLeaders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLeaderViewModel" + }, + "nullable": true + }, + "staffConnectors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLeaderViewModel" + }, + "nullable": true + }, + "hasMembersWithValidEmail": { + "type": "boolean", + "nullable": true + }, + "socialMedia": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistrySocialMediaViewModel" + }, + "nullable": true + }, + "ministryContacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryContactViewModel" + }, + "nullable": true + }, + "alternateWebsite": { + "$ref": "#/components/schemas/Core_MinistryAlternateWebsiteViewModel" + }, + "personsToRemoveFromMinistry": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MinistryLocationWebSettingsViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "alternateWebsite": { + "$ref": "#/components/schemas/Core_MinistryAlternateWebsiteViewModel" + }, + "contacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryContactViewModel" + }, + "nullable": true + }, + "meetingTimes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistryScheduleViewModel" + }, + "nullable": true + }, + "socialMedia": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MinistrySocialMediaViewModel" + }, + "nullable": true + }, + "adSliderId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "blogId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "blueHornetSegmentId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "wufooFormId1": { + "type": "string", + "nullable": true + }, + "wufooFormId2": { + "type": "string", + "nullable": true + }, + "relatedStoryTags": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MinistryMemberDetailedViewModel": { + "type": "object", + "properties": { + "ministryCategory": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "dateAdded": { + "type": "integer", + "format": "int64" + }, + "sourceId": { + "type": "integer", + "format": "int32" + }, + "source": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatus" + }, + "statusName": { + "type": "string", + "nullable": true + }, + "statusChanged": { + "type": "integer", + "format": "int64" + }, + "daysInStatus": { + "type": "integer", + "format": "int32" + }, + "isMember": { + "type": "boolean" + }, + "becameMember": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "daysAsMember": { + "type": "integer", + "format": "int32" + }, + "groupDateAdded": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Core_PersonViewModel" + }, + "contactPreferences": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + }, + "smsEligibility": { + "$ref": "#/components/schemas/Core_App_SmsEligibilityViewModel" + }, + "leadershipPositions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "eligibility": { + "$ref": "#/components/schemas/Core_EligibilityInfoViewModel" + }, + "hasPublicContacts": { + "type": "boolean", + "nullable": true + }, + "publicEmail": { + "type": "string", + "nullable": true + }, + "publicPhone": { + "type": "string", + "nullable": true + }, + "isServingOpportunityVolunteer": { + "type": "boolean", + "nullable": true + }, + "lastServeDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "ministryMemberServeHours": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_MinistryScheduleViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "dayOfWeek": { + "$ref": "#/components/schemas/Core_App_DayOfWeek" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "location": { + "type": "string", + "nullable": true + }, + "isService": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_MinistrySocialMediaViewModel": { + "type": "object", + "properties": { + "platformId": { + "type": "integer", + "format": "int32" + }, + "platform": { + "type": "string", + "nullable": true + }, + "handle": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MismatchViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "refPersonId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_Module": { + "type": "object", + "properties": { + "assembly": { + "$ref": "#/components/schemas/Core_App_Assembly" + }, + "fullyQualifiedName": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "name": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "mdStreamVersion": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "moduleVersionId": { + "type": "string", + "format": "uuid", + "readOnly": true + }, + "scopeName": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "moduleHandle": { + "$ref": "#/components/schemas/Core_App_ModuleHandle" + }, + "customAttributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeData" + }, + "nullable": true, + "readOnly": true + }, + "metadataToken": { + "type": "integer", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_ModuleHandle": { + "type": "object", + "properties": { + "mdStreamVersion": { + "type": "integer", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_MultipleMinistryEmailRequestViewModel": { + "required": [ + "body", + "replyEmail", + "senderName", + "subject" + ], + "type": "object", + "properties": { + "excludedPersonIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "ministries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MinistryLocationIds" + }, + "nullable": true + }, + "recipientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "senderName": { + "type": "string" + }, + "fromEmail": { + "type": "string", + "nullable": true + }, + "replyEmail": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "body": { + "type": "string" + }, + "bodyTemplateName": { + "type": "string", + "nullable": true + }, + "bodyMergeVars": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_MyMinistryWithLocationViewModel": { + "type": "object", + "properties": { + "canLogServingHours": { + "type": "boolean" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "categoryName": { + "type": "string", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean", + "nullable": true + }, + "isAcceptingNewMembers": { + "type": "boolean", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "inactiveDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "mastheadImage": { + "type": "string", + "nullable": true + }, + "thumbnailImage": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "string", + "nullable": true + }, + "contactFullName": { + "type": "string", + "nullable": true + }, + "contactPhone": { + "type": "string", + "nullable": true + }, + "contactEmail": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_NamedEntityViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_NullableDateTimeRange": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "end": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_Operation": { + "enum": [ + "Unknown", + "Reindex", + "Delete", + "Delete_Reindex" + ], + "type": "string" + }, + "Core_App_ParameterAttributes": { + "enum": [ + "None", + "In", + "Out", + "Lcid", + "Retval", + "Optional", + "HasDefault", + "HasFieldMarshal", + "Reserved3", + "Reserved4", + "ReservedMask" + ], + "type": "string" + }, + "Core_App_ParameterInfo": { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/components/schemas/Core_App_ParameterAttributes" + }, + "member": { + "$ref": "#/components/schemas/Core_App_MemberInfo" + }, + "name": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "parameterType": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "position": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "isIn": { + "type": "boolean", + "readOnly": true + }, + "isLcid": { + "type": "boolean", + "readOnly": true + }, + "isOptional": { + "type": "boolean", + "readOnly": true + }, + "isOut": { + "type": "boolean", + "readOnly": true + }, + "isRetval": { + "type": "boolean", + "readOnly": true + }, + "defaultValue": { + "nullable": true, + "readOnly": true + }, + "rawDefaultValue": { + "nullable": true, + "readOnly": true + }, + "hasDefaultValue": { + "type": "boolean", + "readOnly": true + }, + "customAttributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CustomAttributeData" + }, + "nullable": true, + "readOnly": true + }, + "metadataToken": { + "type": "integer", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_PermissionNodeViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isSensitive": { + "type": "boolean" + }, + "isLeaf": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "readonly": { + "type": "boolean" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PermissionNodeViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_PermissionViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_PersonConnectionMinistryInfoViewModel": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "ministryCategory": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "dateAddedToMinistry": { + "type": "string", + "description": "The Date the \"Reference\" Person was added to the Ministry", + "format": "date-time" + }, + "dateBecameMinistryMember": { + "type": "string", + "description": "The Date the \"Reference\" Person became a Member of the Ministry\r\n(i.e. either joining the Ministry as a Member, or transitioning from an Interested status to a Member status)", + "format": "date-time", + "nullable": true + }, + "ministryMemberStatus": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatus" + }, + "ministryMemberStatusType": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatusType" + } + }, + "additionalProperties": false + }, + "Core_App_PersonConnectionViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "fullName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "maritalStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maritalStatus": { + "type": "string", + "nullable": true + }, + "membershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "membershipStatus": { + "type": "string", + "nullable": true + }, + "relation": { + "type": "string", + "nullable": true + }, + "relationshipType": { + "type": "string", + "nullable": true + }, + "connectionType": { + "type": "string", + "nullable": true + }, + "age": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isAdult": { + "type": "boolean", + "nullable": true + }, + "isStudent": { + "type": "boolean", + "nullable": true + }, + "isChild": { + "type": "boolean", + "nullable": true + }, + "profilePictureUrl": { + "type": "string", + "description": "Should be set to Avatar URL if Person has an Avatar image set, or NULL otherwise", + "nullable": true + }, + "isAddressMatch": { + "type": "boolean", + "description": "Flag indicating whether Primary Address matches that of some \"reference\" Person", + "nullable": true + }, + "ministries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonConnectionMinistryInfoViewModel" + }, + "description": "For Ministry Leader Connections, this is the list of Ministry Locations led by the related Person\r\nwith information about the Reference Person's Membership in each.", + "nullable": true + }, + "isAttended": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_PersonFacebookViewModel": { + "required": [ + "fbAppId", + "fbEmail", + "fbFirstName", + "fbId", + "fbLastName" + ], + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "fbFirstName": { + "type": "string" + }, + "fbLastName": { + "type": "string" + }, + "fbEmail": { + "type": "string" + }, + "fbId": { + "type": "integer", + "format": "int64" + }, + "fbAppId": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + }, + "Core_App_PersonGivingViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "lastGivingDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "fullName": { + "type": "string", + "nullable": true + }, + "relationType": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_PersonMinistryServingHoursViewModel": { + "required": [ + "churchEntityId", + "ministryId", + "personId", + "serveDate", + "serveHours", + "timeZone" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "serveHours": { + "type": "string", + "format": "date-span" + }, + "serveDate": { + "type": "string", + "format": "date-time" + }, + "timeZone": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_App_PersonPermissionViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "scope": { + "$ref": "#/components/schemas/Core_Model_SecurityScope" + }, + "scopeHashCode": { + "type": "integer", + "format": "int32", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_PersonRelationshipViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "inferred": { + "type": "boolean", + "description": "Flag indicating whether the Relationhip was created from explicit data, or infered from other Retionships." + }, + "invalidReason": { + "type": "string", + "description": "Explains why a (proposed) relationship might not be valid", + "nullable": true + }, + "isAddressMatch": { + "type": "boolean", + "description": "Flag indicating whether Primary Address matches that of some \"reference\" Person" + }, + "personBirthdate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "personDeceasedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "personFullName": { + "type": "string", + "nullable": true + }, + "personGender": { + "type": "string", + "nullable": true + }, + "personId": { + "type": "integer", + "description": "Unique ID of the reference Person", + "format": "int32" + }, + "personMembershipStatus": { + "type": "string", + "nullable": true + }, + "relation": { + "type": "string", + "description": "Friendly and gender-specific (if gender of relative is available) relationship description", + "nullable": true + }, + "relationType": { + "$ref": "#/components/schemas/Core_Model_PersonRelationType" + }, + "relativeAge": { + "type": "integer", + "description": "Calculated Age from Birth Date (if BirthDate is populated)", + "format": "int32", + "nullable": true + }, + "relativeBirthdate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "relativeDeceasedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "relativeFullName": { + "type": "string", + "nullable": true + }, + "relativeGender": { + "type": "string", + "nullable": true + }, + "relativeId": { + "type": "integer", + "description": "Unique ID of the related person", + "format": "int32" + }, + "relativeMembershipStatus": { + "type": "string", + "nullable": true + }, + "relativeProfilePhotoUrl": { + "type": "string", + "nullable": true + }, + "relativeProfilePictureUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_PersonSecurityLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Corresponds to Saddleback.Cm.Contracts.Models.People.Person.UniqueId (visible unique identifier)", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "fullName": { + "type": "string", + "nullable": true + }, + "avatar": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "description": "User's Primary Email Address", + "nullable": true + }, + "publicEmail": { + "type": "string", + "description": "User's Public Email Address (if specified)", + "nullable": true + }, + "hasPublicContact": { + "type": "boolean", + "description": "Indicates if user has either a public email or public phone" + }, + "personChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personChurchEntity": { + "type": "string", + "nullable": true + }, + "personChurchEntityKnown": { + "type": "boolean" + }, + "disabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_PersonSecurityRoleViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "type": { + "$ref": "#/components/schemas/Core_Model_SecurityRoleType" + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PermissionViewModel" + }, + "nullable": true + }, + "scope": { + "$ref": "#/components/schemas/Core_Model_SecurityScope" + }, + "scopeHashCode": { + "type": "integer", + "format": "int32", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_PersonSecurityViewModel": { + "type": "object", + "properties": { + "deceasedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "membershipStatus": { + "type": "string", + "nullable": true + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonPermissionViewModel" + }, + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityRoleViewModel" + }, + "nullable": true + }, + "teams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_TeamDetailedViewModel" + }, + "nullable": true + }, + "loginDisableDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "loginDisabledBy": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "disabledByName": { + "type": "string", + "nullable": true + }, + "ministryNames": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "description": "Used for displaying ministries in scopes", + "nullable": true + }, + "servingOpportunityNames": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "description": "Used for displaying serving opportunities in scopes", + "nullable": true + }, + "connectionFormNames": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "description": "Used for displaying connection form in scopes", + "nullable": true + }, + "noteCategoryNames": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "description": "Used for displaying note categories in scopes", + "nullable": true + }, + "eventNames": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "description": "Used for displaying event scopes", + "nullable": true + }, + "allNoteCategories": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "nullable": true + }, + "id": { + "type": "integer", + "description": "Corresponds to Saddleback.Cm.Contracts.Models.People.Person.UniqueId (visible unique identifier)", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "fullName": { + "type": "string", + "nullable": true + }, + "avatar": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "description": "User's Primary Email Address", + "nullable": true + }, + "publicEmail": { + "type": "string", + "description": "User's Public Email Address (if specified)", + "nullable": true + }, + "hasPublicContact": { + "type": "boolean", + "description": "Indicates if user has either a public email or public phone" + }, + "personChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personChurchEntity": { + "type": "string", + "nullable": true + }, + "personChurchEntityKnown": { + "type": "boolean" + }, + "disabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_PlaylistViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "subTitle": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "active": { + "type": "boolean" + }, + "featured": { + "type": "boolean" + }, + "ordinal": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "media": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + }, + "nullable": true + }, + "image": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ImageViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_PodcastViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "frequency": { + "type": "string", + "nullable": true + }, + "media": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_MediaViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "status": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "detail": { + "type": "string", + "nullable": true + }, + "instance": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": { } + }, + "Core_App_QuickViewMinistryLocationViewModel": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "isAcceptingNewMembers": { + "type": "boolean" + }, + "ministryCategoryId": { + "type": "integer", + "format": "int32" + }, + "ministryCategoryName": { + "type": "string", + "nullable": true + }, + "ministryTags": { + "type": "string", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "inactiveDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "activeMembers": { + "type": "integer", + "format": "int32" + }, + "interestedMembers": { + "type": "integer", + "format": "int32" + }, + "leaderName": { + "type": "string", + "nullable": true + }, + "leaderEmail": { + "type": "string", + "nullable": true + }, + "leaderPublicEmail": { + "type": "string", + "nullable": true + }, + "staffConnectorName": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "locationServeHours": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_QuickViewMinistryLocationsViewModel": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "locations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_QuickViewMinistryLocationViewModel" + }, + "nullable": true + }, + "locationsServeHours": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_QuotaExceededResponse": { + "type": "object", + "properties": { + "contentType": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "statusCode": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_RateLimitRule": { + "type": "object", + "properties": { + "endpoint": { + "type": "string", + "nullable": true + }, + "period": { + "type": "string", + "nullable": true + }, + "periodTimespan": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "limit": { + "type": "number", + "format": "double" + }, + "quotaExceededResponse": { + "$ref": "#/components/schemas/Core_App_QuotaExceededResponse" + }, + "monitorMode": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_RecommendedMinistryToggleViewModel": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "isRecommended": { + "type": "boolean" + }, + "recommendationOrder": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardEntryIntegrationViewModel": { + "type": "object", + "properties": { + "cardId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntrySectionIntegrationViewModel" + }, + "nullable": true + }, + "selectedEvent": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardEntrySearchResultsViewModel": { + "type": "object", + "properties": { + "currentWeekCount": { + "type": "integer", + "format": "int32" + }, + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardEntrySectionIntegrationViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "subFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardEntrySectionViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "subtitle": { + "type": "string", + "nullable": true + }, + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryValueViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardEntryValueViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "responseCardEntryId": { + "type": "integer", + "format": "int32" + }, + "responseCardSectionId": { + "type": "integer", + "format": "int32" + }, + "responseCardFieldId": { + "type": "integer", + "format": "int32" + }, + "fieldLabel": { + "type": "string", + "nullable": true + }, + "fieldType": { + "type": "string", + "nullable": true + }, + "fieldSortOrder": { + "type": "integer", + "format": "int32" + }, + "fieldInstructions": { + "type": "string", + "nullable": true + }, + "fieldIsRequired": { + "type": "boolean" + }, + "fieldIsSensitive": { + "type": "boolean" + }, + "responseCardSubFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "subFieldLabel": { + "type": "string", + "nullable": true + }, + "subFieldSortOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "subFieldIsRequired": { + "type": "boolean", + "nullable": true + }, + "textValue": { + "type": "string", + "nullable": true + }, + "numericValue": { + "type": "number", + "format": "double", + "nullable": true + }, + "dateTimeValue": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntryValueViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardEntryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "responseCardId": { + "type": "integer", + "format": "int32" + }, + "responseCardName": { + "type": "string", + "nullable": true + }, + "responseCardVersion": { + "type": "integer", + "format": "int32" + }, + "responseCardInactiveDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "localeId": { + "type": "integer", + "format": "int32" + }, + "localeLCID": { + "type": "string", + "nullable": true + }, + "localeName": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "occurrenceStartTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string", + "nullable": true + }, + "occurrenceTimeZone": { + "type": "string", + "nullable": true + }, + "occurrenceDateTime": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "dataEntryNotes": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "createdBy": { + "$ref": "#/components/schemas/Core_App_NamedEntityViewModel" + }, + "modifyDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "modifiedBy": { + "$ref": "#/components/schemas/Core_App_NamedEntityViewModel" + }, + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ResponseCardEntrySectionViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardFieldFollowUpRuleCountViewModel": { + "type": "object", + "properties": { + "fieldId": { + "type": "integer", + "format": "int32" + }, + "fieldPredecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "fieldLabel": { + "type": "string", + "nullable": true + }, + "fieldType": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "subFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "subFieldPredecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "subFieldLabel": { + "type": "string", + "nullable": true + }, + "sectionTitle": { + "type": "string", + "nullable": true + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "ruleCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardFollowUpRulesViewModel": { + "type": "object", + "properties": { + "template": { + "$ref": "#/components/schemas/Core_App_FollowUpRuleCountViewModel" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ResponseCardFieldFollowUpRuleCountViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ResponseCardViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "localeId": { + "maximum": 4, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "localeLCID": { + "type": "string", + "nullable": true + }, + "localeName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "version": { + "type": "integer", + "format": "int32" + }, + "predecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "active": { + "type": "boolean" + }, + "modifyDate": { + "type": "integer", + "format": "int64" + }, + "published": { + "type": "boolean" + }, + "inactiveDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ResponseCardSection" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_RpcRestContainer": { + "type": "object", + "properties": { + "body": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_RuntimeMethodHandle": { + "type": "object", + "properties": { + "value": { + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_ScheduleVenueMetricsViewModel": { + "type": "object", + "properties": { + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "metrics": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ScheduleVenueMetricViewModel" + }, + "nullable": true + }, + "description": "Map of venues ID to list of metrics", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_SearchResultsViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_SecurityRoleManagementViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "type": { + "$ref": "#/components/schemas/Core_Model_SecurityRoleType" + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PermissionNodeViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_SecurityRuleSet": { + "enum": [ + "None", + "Level1", + "Level2" + ], + "type": "string" + }, + "Core_App_SeriesSearchViewModel": { + "type": "object", + "properties": { + "query": { + "type": "string", + "nullable": true + }, + "isInUseFilter": { + "type": "boolean", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_SeriesViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 256, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "heroImage": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "tagline": { + "type": "string", + "nullable": true + }, + "serviceTemplateNames": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_SermonSearchResultViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "campusServiceTemplate": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_CampusServiceTemplateViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ServiceOutlinePersonViewModel": { + "type": "object", + "properties": { + "serviceTemplateId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "content": { + "type": "string", + "nullable": true + }, + "version": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_ServiceSpeakerViewModel": { + "required": [ + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "firstName": { + "maxLength": 100, + "type": "string" + }, + "lastName": { + "maxLength": 100, + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_App_ServiceStatisticsViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "dayOfWeek": { + "type": "integer", + "format": "int32" + }, + "startTime": { + "type": "string", + "nullable": true + }, + "total": { + "type": "number", + "format": "double" + }, + "byAge": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AgeGroupStatisticsViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ServiceTemplateOutlineViewModel": { + "type": "object", + "properties": { + "serviceTemplateId": { + "type": "integer", + "format": "int32" + }, + "content": { + "type": "string", + "nullable": true + }, + "category": { + "$ref": "#/components/schemas/Core_Model_ServiceOutlineCategory" + }, + "version": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_ServiceTemplateViewModel": { + "required": [ + "description", + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "connectionQuestions": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "nextStepQuestions": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "announcements": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "services": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "nullable": true + }, + "servicesToCreate": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_EventOccurrenceViewModel" + }, + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "type": "string", + "nullable": true + }, + "image": { + "type": "string", + "nullable": true + }, + "speakerIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "speakers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServiceSpeaker" + }, + "nullable": true + }, + "seriesId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "seriesName": { + "type": "string", + "nullable": true + }, + "seriesHeroImage": { + "type": "string", + "nullable": true + }, + "seriesDescription": { + "type": "string", + "nullable": true + }, + "seriesTagline": { + "type": "string", + "nullable": true + }, + "seriesPartNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "outline": { + "$ref": "#/components/schemas/Core_Model_ServiceTemplateOutline" + }, + "songIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "mediaId": { + "type": "string", + "nullable": true + }, + "mediaUrl": { + "type": "string", + "nullable": true + }, + "isExternalMedia": { + "type": "boolean" + }, + "serviceQuestions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + }, + "nullable": true + }, + "sortedServiceQuestions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Question" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_ServingOpportunityVolunteerBulkUpdateViewModel": { + "type": "object", + "properties": { + "scheduleType": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + } + }, + "additionalProperties": false + }, + "Core_App_SharePageCompareResultsViewModel": { + "type": "object", + "properties": { + "filterCategoryIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterDateTimeUtcRange": { + "$ref": "#/components/schemas/Core_App_NullableDateTimeRange" + }, + "filterEventIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterMinistryIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterTagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "sharePageType": { + "$ref": "#/components/schemas/Core_Model_SharePageType" + } + }, + "additionalProperties": false + }, + "Core_App_SharePageViewModel": { + "required": [ + "description", + "title" + ], + "type": "object", + "properties": { + "createDate": { + "type": "string", + "format": "date-time", + "nullable": true, + "readOnly": true + }, + "description": { + "type": "string" + }, + "filterCategoryIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterDateTimeUtcRange": { + "$ref": "#/components/schemas/Core_App_NullableDateTimeRange" + }, + "filterEventIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterMinistryIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterTagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "filterTimezone": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "imageUrl": { + "maxLength": 500, + "type": "string", + "nullable": true + }, + "mobileImageUrl": { + "maxLength": 500, + "type": "string", + "nullable": true + }, + "publishedDateTimeUtcRange": { + "$ref": "#/components/schemas/Core_App_NullableDateTimeRange" + }, + "publishedTimezone": { + "type": "string", + "nullable": true + }, + "sharePageType": { + "$ref": "#/components/schemas/Core_Model_SharePageType" + }, + "thumbnailImageUrl": { + "maxLength": 500, + "type": "string", + "nullable": true + }, + "title": { + "maxLength": 100, + "type": "string" + }, + "url": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_App_SmallGroupParticipantViewModel": { + "type": "object", + "properties": { + "participantId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personUniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "homePhone": { + "type": "string", + "nullable": true + }, + "workPhone": { + "type": "string", + "nullable": true + }, + "mobilePhone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "description": "View Model for M:Saddleback.Cm.Web.Controllers.People.PersonGroupsController.AcceptSmallGroupInvite(Saddleback.Cm.Web.ViewModels.People.SmallGroupParticipantViewModel)" + }, + "Core_App_SmallGroupViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "hostPersonUniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "smallGroupId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "name": { + "type": "string" + }, + "address": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "state": { + "type": "string", + "nullable": true + }, + "zipCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "campusName": { + "type": "string", + "nullable": true + }, + "language": { + "type": "string", + "nullable": true + }, + "visibility": { + "type": "string", + "nullable": true + }, + "meetingDay": { + "type": "string", + "description": "Should be a valid day of week name (in English) e.g. Sunday, Monday, etc.", + "nullable": true + }, + "meetingTime": { + "type": "string", + "description": "Should be a valid time of day string (e.g. 2:30 PM etc.)", + "nullable": true + }, + "groupType": { + "type": "string", + "nullable": true + }, + "parsedMeetingTime": { + "type": "string", + "format": "date-span", + "nullable": true, + "readOnly": true + }, + "parsedMeetingDay": { + "$ref": "#/components/schemas/Core_App_IsoDayOfWeek" + } + }, + "additionalProperties": false + }, + "Core_App_SmsEligibilityViewModel": { + "type": "object", + "properties": { + "hasConsented": { + "type": "boolean" + }, + "hasMobilePhones": { + "type": "boolean" + }, + "hasOptedOut": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_App_SongViewModel": { + "required": [ + "link", + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "artist": { + "type": "string", + "nullable": true + }, + "lyrics": { + "type": "string", + "nullable": true + }, + "link": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false + }, + "Core_App_SortDirection": { + "enum": [ + "Ascending", + "Descending" + ], + "type": "string" + }, + "Core_App_Sorting": { + "type": "object", + "properties": { + "sortColumn": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/Core_App_SortDirection" + } + }, + "additionalProperties": false + }, + "Core_App_SpeakerViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "organization": { + "type": "string", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Core_PersonViewModel" + } + }, + "additionalProperties": false + }, + "Core_App_SubscriberSegmentUpdateViewModel": { + "type": "object", + "properties": { + "email": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "segmentIdsToAdd": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "segmentIdsToDelete": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_SubscriberSegmentViewModel": { + "type": "object", + "properties": { + "email": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "segmentIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_TeamDetailedViewModel": { + "required": [ + "churchEntityId", + "name" + ], + "type": "object", + "properties": { + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "memberCount": { + "type": "integer", + "format": "int32" + }, + "dateAdded": { + "type": "integer", + "format": "int64", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_TeamTaskReassignmentViewModel": { + "type": "object", + "properties": { + "comment": { + "type": "string", + "nullable": true + }, + "taskIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "teamId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_UploadImageResultViewModel": { + "type": "object", + "properties": { + "contentType": { + "type": "string", + "nullable": true + }, + "error": { + "$ref": "#/components/schemas/Core_App_ErrorViewModel" + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "height": { + "type": "integer", + "format": "int32" + }, + "isUploaded": { + "type": "boolean" + }, + "url": { + "type": "string", + "nullable": true + }, + "width": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_App_UserListViewModel": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "format": "int32" + }, + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_PersonSecurityViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_WebMinistrySignUpViewModel": { + "required": [ + "churchEntityId", + "ministryId" + ], + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "sourceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "pattern": "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:|\\\\)+)\\])", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_WebMinistryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "categoryName": { + "type": "string", + "nullable": true + }, + "imageUrl": { + "type": "string", + "nullable": true + }, + "companionAppImageUrl": { + "type": "string", + "nullable": true + }, + "thumbnailUrl": { + "type": "string", + "nullable": true + }, + "customHtml": { + "type": "string", + "nullable": true + }, + "alternateWebsite": { + "$ref": "#/components/schemas/Core_MinistryAlternateWebsiteViewModel" + }, + "relatedMinistries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLiteViewModel" + }, + "nullable": true + }, + "servingOpportunities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityViewModel" + }, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_TagViewModel" + }, + "nullable": true + }, + "locations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MinistryLocation" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_WebServingOpportunitySignUpViewModel": { + "required": [ + "servingOpportunityId" + ], + "type": "object", + "properties": { + "occurrenceDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "sourceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + }, + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "pattern": "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:|\\\\)+)\\])", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_App_WeekendFlashReportQueryDatesViewModel": { + "type": "object", + "properties": { + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time" + }, + "rangeType": { + "$ref": "#/components/schemas/Core_Model_WeekendFlashReportRangeType" + }, + "serviceCategory": { + "type": "string", + "nullable": true + }, + "timeZone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ApplicationSettingsViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "churchName": { + "type": "string", + "nullable": true + }, + "enforceMembershipStatusRules": { + "type": "boolean" + }, + "logoImage": { + "type": "string", + "nullable": true + }, + "logoImageUrl": { + "type": "string", + "nullable": true + }, + "defaultSendInterestedToLeader": { + "type": "boolean" + }, + "defaultSendInterestedToColeader": { + "type": "boolean" + }, + "defaultSendInterestedToStaffConnector": { + "type": "boolean" + }, + "tenantUrl": { + "type": "string", + "nullable": true + }, + "weekdayRuleDayOfWeek": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "weekdayRuleStartTime": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_BulkDeleteFormEntryRequest": { + "type": "object", + "properties": { + "formEntryIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_BulkUpdateEventOccurrenceAssociationRequestViewModel": { + "required": [ + "eventId", + "formEntryIds", + "occurrence" + ], + "type": "object", + "properties": { + "formEntryIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrence": { + "$ref": "#/components/schemas/Core_PublicOccurrenceViewModelWithScheduleId_Core_V2" + } + }, + "additionalProperties": false + }, + "Core_ChurchEntityViewModel": { + "required": [ + "abbreviation" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "parentEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "churchEntityRegionId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "dateStarted": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "inactiveDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "countryCode": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "extension": { + "maxLength": 4, + "minLength": 0, + "pattern": "\\d*", + "type": "string", + "nullable": true + }, + "displayPhoneNumber": { + "type": "string", + "nullable": true + }, + "officeCountryCode": { + "type": "string", + "nullable": true + }, + "officePhone": { + "type": "string", + "nullable": true + }, + "officeExtension": { + "maxLength": 4, + "minLength": 0, + "pattern": "\\d*", + "type": "string", + "nullable": true + }, + "displayOfficePhoneNumber": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "websiteUrl": { + "type": "string", + "nullable": true + }, + "latitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "officeAddress1": { + "type": "string", + "nullable": true + }, + "officeAddress2": { + "type": "string", + "nullable": true + }, + "officeCity": { + "type": "string", + "nullable": true + }, + "officeRegion": { + "type": "string", + "nullable": true + }, + "officePostalCode": { + "type": "string", + "nullable": true + }, + "officeCountry": { + "type": "string", + "nullable": true + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "abbreviation": { + "maxLength": 3, + "minLength": 0, + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_CommunicationTemplateAttachmentViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "emailTemplateId": { + "type": "integer", + "format": "int32" + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "url": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_CommunicationTemplateDetailViewModel": { + "required": [ + "churchEntityId", + "name" + ], + "type": "object", + "properties": { + "emailSubject": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + }, + "emailBodyContent": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + }, + "emailBodyLayout": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + }, + "sms": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + }, + "emailAttachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CommunicationTemplateAttachmentViewModel" + }, + "nullable": true + }, + "tempEmailAttachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CommunicationTemplateTempAttachmentDto" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "emailBody": { + "type": "string", + "nullable": true + }, + "emailSubjectContent": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string" + }, + "smsBody": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "isEmail": { + "type": "boolean" + }, + "isSMS": { + "type": "boolean" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "thumbnailImageUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormContributorsViewModel": { + "type": "object", + "properties": { + "personContributors": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "teamContributors": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormEntryDateViewModel": { + "type": "object", + "properties": { + "entryDateTime": { + "type": "string", + "format": "date-time" + }, + "entryTimeZone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormEntryLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "connectionFormTemplateId": { + "type": "integer", + "format": "int32" + }, + "connectionFormTemplateChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "eventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "entryDateTime": { + "type": "string", + "format": "date-time" + }, + "entryTimeZone": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "$ref": "#/components/schemas/Core_NamedEntityViewModel" + }, + "modifiedBy": { + "$ref": "#/components/schemas/Core_NamedEntityViewModel" + }, + "personalInfo": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPersonalInfoViewModel" + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormEntryPersonalInfoViewModel": { + "type": "object", + "properties": { + "connectionFormEntryId": { + "type": "integer", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "homePhone": { + "type": "string", + "nullable": true + }, + "cellPhone": { + "type": "string", + "nullable": true + }, + "workPhone": { + "type": "string", + "nullable": true + }, + "formattedHomePhone": { + "$ref": "#/components/schemas/Core_PhoneNumberViewModel" + }, + "formattedCellPhone": { + "$ref": "#/components/schemas/Core_PhoneNumberViewModel" + }, + "formattedWorkPhone": { + "$ref": "#/components/schemas/Core_PhoneNumberViewModel" + }, + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormEntryPublicCreateRequestViewModel": { + "required": [ + "connectionFormTemplateId" + ], + "type": "object", + "properties": { + "connectionFormTemplateId": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "personalInfo": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPublicPersonalInformationCreateRequestViewModel" + }, + "eventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrence": { + "$ref": "#/components/schemas/Core_PublicOccurrenceRequestViewModel_Core" + }, + "entryTimeZone": { + "type": "string", + "nullable": true + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerLiteViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormEntryPublicPersonalInformationCreateRequestViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "maxLength": 100, + "type": "string", + "nullable": true + }, + "lastName": { + "maxLength": 100, + "type": "string", + "nullable": true + }, + "email": { + "maxLength": 256, + "pattern": "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:|\\\\)+)\\])", + "type": "string", + "nullable": true + }, + "homePhone": { + "maxLength": 33, + "type": "string", + "format": "tel", + "nullable": true + }, + "cellPhone": { + "maxLength": 33, + "type": "string", + "format": "tel", + "nullable": true + }, + "workPhone": { + "maxLength": 33, + "type": "string", + "format": "tel", + "nullable": true + }, + "gender": { + "$ref": "#/components/schemas/Core_Model_Gender" + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "address1": { + "maxLength": 100, + "type": "string", + "nullable": true + }, + "address2": { + "maxLength": 100, + "type": "string", + "nullable": true + }, + "city": { + "maxLength": 50, + "type": "string", + "nullable": true + }, + "region": { + "maxLength": 50, + "type": "string", + "nullable": true + }, + "postalCode": { + "maxLength": 16, + "type": "string", + "nullable": true + }, + "country": { + "maxLength": 30, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormEntryRequestViewModel": { + "required": [ + "connectionFormTemplateId" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "connectionFormTemplateId": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "eventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrence": { + "$ref": "#/components/schemas/Core_PublicOccurrenceViewModelWithScheduleId_Core_V2" + }, + "entryTimeZone": { + "type": "string", + "nullable": true + }, + "personalInfo": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPersonalInfoViewModel" + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormEntryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "connectionFormTemplateId": { + "type": "integer", + "format": "int32" + }, + "formTemplateName": { + "type": "string", + "nullable": true + }, + "formTemplateType": { + "$ref": "#/components/schemas/Core_Model_ConnectionFormType" + }, + "formTemplateChurchEntityName": { + "type": "string", + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "eventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "eventName": { + "type": "string", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "entryDateTime": { + "type": "string", + "format": "date-time" + }, + "entryTimeZone": { + "type": "string", + "nullable": true + }, + "eventDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "eventTimeZone": { + "type": "string", + "nullable": true + }, + "coreMilestones": { + "$ref": "#/components/schemas/Core_CoreMilestonesViewModel" + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + }, + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Core_PersonDetailsLiteViewModel" + }, + "occurrence": { + "$ref": "#/components/schemas/Core_PublicOccurrenceViewModelWithScheduleId_Core_V2" + }, + "creatorName": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "personalInfo": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryPersonalInfoViewModel" + }, + "form": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormFieldFollowUpRuleCountViewModel": { + "type": "object", + "properties": { + "choices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionAnswerChoiceViewModel" + }, + "nullable": true + }, + "questionId": { + "type": "integer", + "format": "int32" + }, + "questionType": { + "$ref": "#/components/schemas/Core_Model_QuestionType" + }, + "ruleCount": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormOwnerViewModel": { + "type": "object", + "properties": { + "ownerPersonId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormTemplateContainerViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "connectionFormTemplateSectionId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateFieldViewModel" + }, + "nullable": true + }, + "isDeleted": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormTemplateFieldViewModel": { + "type": "object", + "properties": { + "connectionFormTemplateSectionId": { + "type": "integer", + "format": "int32" + }, + "connectionFormTemplateContainerId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "questionId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isRequired": { + "type": "boolean" + }, + "order": { + "type": "integer", + "format": "int32" + }, + "question": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + }, + "isDeleted": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormTemplateFollowUpRulesCount": { + "type": "object", + "properties": { + "template": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateLiteViewModel" + }, + "templateRuleCount": { + "type": "integer", + "format": "int32" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormFieldFollowUpRuleCountViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormTemplateLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/Core_Model_ConnectionFormType" + }, + "isActive": { + "type": "boolean" + }, + "published": { + "type": "boolean" + }, + "modifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "version": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormTemplateSectionViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "connectionFormTemplateId": { + "type": "integer", + "format": "int32" + }, + "order": { + "type": "integer", + "format": "int32" + }, + "containers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateContainerViewModel" + }, + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateFieldViewModel" + }, + "nullable": true + }, + "isDeleted": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormTemplateViewModel": { + "required": [ + "name", + "publicTitle" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 100, + "type": "string" + }, + "publicTitle": { + "maxLength": 256, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/Core_Model_ConnectionFormType" + }, + "isActive": { + "type": "boolean" + }, + "ownerPersonId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "published": { + "type": "boolean" + }, + "litePersonalPanel": { + "type": "boolean" + }, + "personalPanelRequiredFields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonalInformationPanelField" + }, + "nullable": true + }, + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateSectionViewModel" + }, + "nullable": true + }, + "personContributors": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "personContributorDetails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonSecuritySortaLiteViewModel" + }, + "nullable": true + }, + "teamContributors": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "modifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "ownerPerson": { + "$ref": "#/components/schemas/Core_PersonSecuritySortaLiteViewModel" + }, + "entryCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "lastEntryDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "version": { + "type": "integer", + "format": "int32" + }, + "tenantFormUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionFormTemplatesViewModel": { + "type": "object", + "properties": { + "forms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormTemplateViewModel" + }, + "nullable": true + }, + "statistics": { + "$ref": "#/components/schemas/Core_Dto_ConnectionFormStatistics" + } + }, + "additionalProperties": false + }, + "Core_ConnectionQuestionAnswerDetailViewModel": { + "required": [ + "answerSourceId", + "questionId" + ], + "type": "object", + "properties": { + "person": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + }, + "occurrence": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core_V2" + }, + "connectionFormEntry": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryLiteViewModel" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "questionId": { + "type": "integer", + "format": "int32" + }, + "answerSourceId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "answerCustomFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "questionCustomFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "booleanValue": { + "type": "boolean", + "nullable": true + }, + "dateTimeValue": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "numericValue": { + "type": "number", + "format": "double", + "nullable": true + }, + "textValue": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdBy": { + "$ref": "#/components/schemas/Core_NamedEntityViewModel" + }, + "modifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "modifiedBy": { + "$ref": "#/components/schemas/Core_NamedEntityViewModel" + } + }, + "additionalProperties": false + }, + "Core_ConnectionQuestionAnswerLiteViewModel": { + "required": [ + "questionId" + ], + "type": "object", + "properties": { + "questionId": { + "type": "integer", + "format": "int32" + }, + "booleanValue": { + "type": "boolean", + "nullable": true + }, + "dateTimeValue": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "numericValue": { + "type": "number", + "format": "double", + "nullable": true + }, + "selectedAnswerChoiceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "textValue": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionQuestionAnswerViewModel": { + "required": [ + "answerSourceId", + "questionId" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "questionId": { + "type": "integer", + "format": "int32" + }, + "answerSourceId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "answerCustomFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "questionCustomFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "booleanValue": { + "type": "boolean", + "nullable": true + }, + "dateTimeValue": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "numericValue": { + "type": "number", + "format": "double", + "nullable": true + }, + "textValue": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdBy": { + "$ref": "#/components/schemas/Core_NamedEntityViewModel" + }, + "modifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "modifiedBy": { + "$ref": "#/components/schemas/Core_NamedEntityViewModel" + } + }, + "additionalProperties": false + }, + "Core_ConnectionQuestionAnswersViewModel": { + "required": [ + "answers", + "isAnonymous" + ], + "type": "object", + "properties": { + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionAnswerViewModel" + } + }, + "isAnonymous": { + "type": "boolean" + }, + "person": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionQuestionDetailedViewModel": { + "required": [ + "name", + "questionTypeId", + "title" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string" + }, + "placeholder": { + "maxLength": 128, + "type": "string", + "nullable": true + }, + "questionTypeId": { + "type": "integer", + "format": "int32" + }, + "questionTypeName": { + "type": "string", + "nullable": true + }, + "questionClassification": { + "$ref": "#/components/schemas/Core_Model_QuestionClassification" + }, + "milestoneId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "milestoneName": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "published": { + "type": "boolean" + }, + "active": { + "type": "boolean" + }, + "questionSources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionSourceViewModel" + }, + "nullable": true + }, + "choices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionAnswerChoiceViewModel" + }, + "nullable": true + }, + "answerCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "defaultAutoReplyEmailContentTemplate": { + "$ref": "#/components/schemas/Core_TemplateViewModel" + } + }, + "additionalProperties": false + }, + "Core_ConnectionQuestionViewModel": { + "required": [ + "name", + "questionTypeId", + "title" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string" + }, + "placeholder": { + "maxLength": 128, + "type": "string", + "nullable": true + }, + "questionTypeId": { + "type": "integer", + "format": "int32" + }, + "questionTypeName": { + "type": "string", + "nullable": true + }, + "questionClassification": { + "$ref": "#/components/schemas/Core_Model_QuestionClassification" + }, + "milestoneId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "milestoneName": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "published": { + "type": "boolean" + }, + "active": { + "type": "boolean" + }, + "questionSources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionSourceViewModel" + }, + "nullable": true + }, + "choices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionAnswerChoiceViewModel" + }, + "nullable": true + }, + "answerCount": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ConnectionQuestionsSearchResultsViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionQuestionViewModel" + }, + "nullable": true + }, + "countsByMilestone": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_ConnectionQuestionMilestoneCountDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_CoreMilestonesViewModel": { + "type": "object", + "properties": { + "uniquePersonID": { + "type": "integer", + "format": "int32" + }, + "hasAcceptedChrist": { + "type": "boolean" + }, + "isBaptised": { + "type": "boolean" + }, + "hasAttendedClass101": { + "type": "boolean" + }, + "hasAttendedClass201": { + "type": "boolean" + }, + "hasAttendedClass301": { + "type": "boolean" + }, + "hasAttendedClass401": { + "type": "boolean" + }, + "hasSignedMembershipAgreement": { + "type": "boolean" + }, + "hasSignedMaturityCovenant": { + "type": "boolean" + }, + "hasSignedMinistryCovenant": { + "type": "boolean" + }, + "hasSignedMissionCovenant": { + "type": "boolean" + }, + "acceptedChristDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "baptismDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass101Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass201Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass301Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass401Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMembershipAgreementDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMaturityCovenantDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMinistryCovenantDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMissionCovenantDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "firstContactDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "congregationDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isInMinistry": { + "type": "boolean" + }, + "firstMinistryJoinDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isInSmallGroup": { + "type": "boolean" + }, + "firstSmallGroupJoinDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isActiveInMissions": { + "type": "boolean" + }, + "activeInMissionsDate": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_CustomFieldViewModel": { + "required": [ + "name", + "questionTypeId", + "title" + ], + "type": "object", + "properties": { + "isContainer": { + "type": "boolean" + }, + "customFields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_CustomFieldViewModel" + }, + "nullable": true + }, + "questionCustomFieldId": { + "type": "integer", + "format": "int32" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isRequired": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string" + }, + "placeholder": { + "maxLength": 128, + "type": "string", + "nullable": true + }, + "questionTypeId": { + "type": "integer", + "format": "int32" + }, + "questionTypeName": { + "type": "string", + "nullable": true + }, + "questionClassification": { + "$ref": "#/components/schemas/Core_Model_QuestionClassification" + }, + "milestoneId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "milestoneName": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "published": { + "type": "boolean" + }, + "active": { + "type": "boolean" + }, + "questionSources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionSourceViewModel" + }, + "nullable": true + }, + "choices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_QuestionAnswerChoiceViewModel" + }, + "nullable": true + }, + "answerCount": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_DataSubscriptionPayload_IndividualProfileSearchDocument": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "key": { + "type": "string", + "nullable": true + }, + "application": { + "type": "string", + "nullable": true + }, + "user": { + "type": "string", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/Core_Model_IndividualProfileSearchDocument" + } + }, + "additionalProperties": false + }, + "Core_DataSubscriptionPayload_PaymentSearchDocument": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "key": { + "type": "string", + "nullable": true + }, + "application": { + "type": "string", + "nullable": true + }, + "user": { + "type": "string", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/Core_Model_PaymentSearchDocument" + } + }, + "additionalProperties": false + }, + "Core_Dto_AddMinistryMemberResult": { + "type": "object", + "properties": { + "addedToMinistry": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Dto_AgeCategory": { + "enum": [ + "None", + "Adult", + "Student", + "Child", + "AdultOrStudent", + "ChildOrStudent" + ], + "type": "string" + }, + "Core_Dto_ConnectionFormStatistics": { + "type": "object", + "properties": { + "activeCount": { + "type": "integer", + "format": "int32" + }, + "inactiveCount": { + "type": "integer", + "format": "int32" + }, + "regularCount": { + "type": "integer", + "format": "int32" + }, + "worshipServiceCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Dto_ConnectionQuestionMilestoneCountDto": { + "type": "object", + "properties": { + "milestoneId": { + "type": "integer", + "format": "int32" + }, + "milestoneName": { + "type": "string", + "nullable": true + }, + "questionCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Dto_MinistryWithServingOpportunityStatistics": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "categoryName": { + "type": "string", + "nullable": true + }, + "servingOpportunitiesCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Dto_NotesCount": { + "type": "object", + "properties": { + "entityId": { + "type": "integer", + "format": "int32" + }, + "count": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Dto_NotificationPerson": { + "type": "object", + "properties": { + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "prefix": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "primaryEmail": { + "type": "string", + "nullable": true + }, + "cellPhone": { + "type": "string", + "nullable": true + }, + "isDeceased": { + "type": "boolean" + }, + "doNotContact": { + "type": "boolean", + "nullable": true + }, + "doNotEmail": { + "type": "boolean", + "nullable": true + }, + "doNotText": { + "type": "boolean", + "nullable": true + }, + "alternatePersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "alternateEmail": { + "type": "string", + "nullable": true + }, + "alternateCellPhone": { + "type": "string", + "nullable": true + }, + "gradeLevel": { + "$ref": "#/components/schemas/Core_Model_GradeLevel" + } + }, + "additionalProperties": false + }, + "Core_Dto_PersonAttendance": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "historicAttendeeIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Dto_PersonCheckInType": { + "enum": [ + "None", + "Attendee", + "Volunteer" + ], + "type": "string" + }, + "Core_Dto_PersonProfilePictureKeyValuePair": { + "type": "object", + "properties": { + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "personProfilePicture": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Dto_QuestionAutoReplyEmailContentLiteDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "defaultAutoReplyEmailContent": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Dto_ServingOpportunityWithInterestedStatus": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "isPublic": { + "type": "boolean" + }, + "eventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "hasInterestedVolunteers": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_EligibilityInfoViewModel": { + "type": "object", + "properties": { + "isEligible": { + "type": "boolean" + }, + "notEligible": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "missingMilestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + }, + "nullable": true + }, + "minAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_EmailViewModel": { + "required": [ + "body", + "replyEmail", + "senderName", + "subject" + ], + "type": "object", + "properties": { + "recipientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "senderName": { + "type": "string" + }, + "fromEmail": { + "type": "string", + "nullable": true + }, + "replyEmail": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "body": { + "type": "string" + }, + "bodyTemplateName": { + "type": "string", + "nullable": true + }, + "bodyMergeVars": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_FactLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "venueId": { + "type": "integer", + "format": "int32" + }, + "metricAgeGroupId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "metricAgeGroupName": { + "type": "string", + "nullable": true + }, + "metricCategoryId": { + "type": "integer", + "format": "int32" + }, + "metricCategoryName": { + "type": "string", + "nullable": true + }, + "metricName": { + "type": "string", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "occurrenceStartTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string", + "nullable": true + }, + "occurrenceTimeZone": { + "type": "string", + "nullable": true + }, + "value": { + "type": "number", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_FollowUpTaskActionResultViewModel": { + "type": "object", + "properties": { + "taskId": { + "type": "integer", + "format": "int32" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskActionStatus" + } + }, + "additionalProperties": false + }, + "Core_FollowUpTaskBasicViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "taskName": { + "type": "string", + "nullable": true + }, + "taskTemplateId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "received": { + "type": "string", + "format": "date-time" + }, + "due": { + "type": "string", + "format": "date-time" + }, + "closed": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskStatus" + }, + "highPriority": { + "type": "boolean" + }, + "assigneeId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "assignee": { + "type": "string", + "nullable": true + }, + "teamId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "team": { + "type": "string", + "nullable": true + }, + "teamChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "teamChurchEntityName": { + "type": "string", + "nullable": true + }, + "escalatesToId": { + "type": "integer", + "format": "int32" + }, + "escalatesTo": { + "type": "string", + "nullable": true + }, + "subjectMappings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskSubjectMappingViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_FollowUpTaskBulkActionResultViewModel": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskActionResultViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_FollowUpTaskCreationRequestViewModel": { + "required": [ + "subjectPerson", + "taskTemplateId" + ], + "type": "object", + "properties": { + "taskTemplateId": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "subjectPerson": { + "$ref": "#/components/schemas/Core_PersonBasicViewModel" + }, + "additionalSubjects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskSubjectMappingViewModel" + }, + "nullable": true + }, + "dependencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_FollowUpTaskSubjectMappingViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_FollowUpTaskLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "received": { + "type": "string", + "format": "date-time" + }, + "due": { + "type": "string", + "format": "date-time" + }, + "closed": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_FollowUpTaskStatus" + }, + "highPriority": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_FollowUpTaskSubjectMappingViewModel": { + "type": "object", + "properties": { + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_FollowUpTaskTemplateViewModel": { + "required": [ + "defaultSupervisor", + "defaultTimeLimit", + "taskName" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "taskName": { + "type": "string" + }, + "taskInstructions": { + "type": "string", + "nullable": true + }, + "defaultAssigneePerson": { + "$ref": "#/components/schemas/Core_PersonSecurityUltraLiteViewModel" + }, + "defaultAssigneeTeam": { + "$ref": "#/components/schemas/Core_TeamBasicViewModel" + }, + "defaultSupervisor": { + "$ref": "#/components/schemas/Core_PersonSecurityUltraLiteViewModel" + }, + "defaultTimeLimit": { + "type": "string", + "format": "date-span" + } + }, + "additionalProperties": false + }, + "Core_Func_HttpContext_ClientRequestIdentity_RateLimitCounter_RateLimitRule_Task": { + "type": "object", + "properties": { + "target": { + "nullable": true, + "readOnly": true + }, + "method": { + "$ref": "#/components/schemas/Core_App_MethodInfo" + } + }, + "additionalProperties": false + }, + "Core_MilestoneInboundViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 50, + "type": "string" + }, + "description": { + "maxLength": 100, + "type": "string", + "nullable": true + }, + "category": { + "$ref": "#/components/schemas/Core_Model_MilestoneCategory" + }, + "uiOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "allowablePersonRecordTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonRecordType" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MilestoneUsageStatsViewModel": { + "type": "object", + "properties": { + "numberOfPeopleWithMilestone": { + "type": "integer", + "format": "int32" + }, + "numberOfMinistryLocationsRequiringMilestone": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_MilestoneViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "category": { + "$ref": "#/components/schemas/Core_Model_MilestoneCategory" + }, + "uiOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "$ref": "#/components/schemas/Core_PersonSecurityUltraLiteViewModel" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "$ref": "#/components/schemas/Core_PersonSecurityUltraLiteViewModel" + }, + "inactivateDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "inactivatedBy": { + "$ref": "#/components/schemas/Core_PersonSecurityUltraLiteViewModel" + }, + "allowablePersonRecordTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonRecordType" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryAlternateWebsiteViewModel": { + "type": "object", + "properties": { + "url": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "image": { + "type": "string", + "nullable": true + }, + "imageUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryCategoryViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryCentralWebSettingsLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "customHtml": { + "type": "string", + "nullable": true + }, + "mastheadImage": { + "type": "string", + "nullable": true + }, + "mastheadImageUrl": { + "type": "string", + "nullable": true + }, + "appHeaderImage": { + "type": "string", + "nullable": true + }, + "appHeaderImageUrl": { + "type": "string", + "nullable": true + }, + "thumnailImage": { + "type": "string", + "nullable": true + }, + "thumnailImageUrl": { + "type": "string", + "nullable": true + }, + "adSliderId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "blogId": { + "type": "string", + "format": "uuid", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryCentralWebSettingsViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "customHtml": { + "type": "string", + "nullable": true + }, + "mastheadImage": { + "type": "string", + "nullable": true + }, + "mastheadImageUrl": { + "type": "string", + "nullable": true + }, + "appHeaderImage": { + "type": "string", + "nullable": true + }, + "appHeaderImageUrl": { + "type": "string", + "nullable": true + }, + "thumnailImage": { + "type": "string", + "nullable": true + }, + "thumnailImageUrl": { + "type": "string", + "nullable": true + }, + "relatedMinistries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLiteViewModel" + }, + "nullable": true + }, + "alternateWebsite": { + "$ref": "#/components/schemas/Core_MinistryAlternateWebsiteViewModel" + }, + "adSliderId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "blogId": { + "type": "string", + "format": "uuid", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryCommunicationTemplateViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "communicationTemplateId": { + "type": "integer", + "format": "int32" + }, + "ministryCommunicationType": { + "$ref": "#/components/schemas/Core_Model_MinistryCommunicationType" + }, + "senderDisplayName": { + "type": "string", + "nullable": true + }, + "senderEmailAddress": { + "type": "string", + "nullable": true + }, + "communicationTemplate": { + "$ref": "#/components/schemas/Core_CommunicationTemplateDetailViewModel" + } + }, + "additionalProperties": false + }, + "Core_MinistryGenderRequirement": { + "enum": [ + "MalesAndFemales", + "MalesOnly", + "FemalesOnly" + ], + "type": "string" + }, + "Core_MinistryGroupLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "memberCount": { + "type": "integer", + "format": "int32" + }, + "dateAdded": { + "type": "integer", + "format": "int64", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryLeaderViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "phoneType": { + "$ref": "#/components/schemas/Core_Model_PhoneType" + }, + "publicEmail": { + "type": "string", + "nullable": true + }, + "publicPhone": { + "type": "string", + "nullable": true + }, + "publicPhoneType": { + "$ref": "#/components/schemas/Core_Model_PhoneType" + } + }, + "additionalProperties": false + }, + "Core_MinistryLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "thumbnailUrl": { + "type": "string", + "nullable": true + }, + "mastheadUrl": { + "type": "string", + "nullable": true + }, + "isAcceptingNewMembers": { + "type": "boolean" + }, + "isRecommended": { + "type": "boolean" + }, + "recommendationOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ministryCategory": { + "$ref": "#/components/schemas/Core_MinistryCategoryViewModel" + }, + "mastheadImage": { + "type": "string", + "nullable": true + }, + "thumbnailImage": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryLocationGroupMemberViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "groupDateAdded": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isMinistryMember": { + "type": "boolean" + }, + "person": { + "$ref": "#/components/schemas/Core_PersonViewModel" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryLocationIdsViewModel": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MinistryLocationIds" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryLocationLiteViewModel": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "isAcceptingNewMembers": { + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "inactiveDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "thumbnailImage": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryMemberBulkUpdateViewModel": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatus" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryMemberViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "dateAdded": { + "type": "integer", + "format": "int64" + }, + "sourceId": { + "type": "integer", + "format": "int32" + }, + "source": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatus" + }, + "statusName": { + "type": "string", + "nullable": true + }, + "statusChanged": { + "type": "integer", + "format": "int64" + }, + "daysInStatus": { + "type": "integer", + "format": "int32" + }, + "isMember": { + "type": "boolean" + }, + "becameMember": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "daysAsMember": { + "type": "integer", + "format": "int32" + }, + "groupDateAdded": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Core_PersonViewModel" + }, + "contactPreferences": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + }, + "smsEligibility": { + "$ref": "#/components/schemas/Core_App_SmsEligibilityViewModel" + }, + "leadershipPositions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "eligibility": { + "$ref": "#/components/schemas/Core_EligibilityInfoViewModel" + }, + "hasPublicContacts": { + "type": "boolean", + "nullable": true + }, + "publicEmail": { + "type": "string", + "nullable": true + }, + "publicPhone": { + "type": "string", + "nullable": true + }, + "isServingOpportunityVolunteer": { + "type": "boolean", + "nullable": true + }, + "lastServeDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "ministryMemberServeHours": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_MinistrySettingsViewModel": { + "type": "object", + "properties": { + "minAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "gender": { + "$ref": "#/components/schemas/Core_MinistryGenderRequirement" + }, + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MilestoneViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MinistryViewModel": { + "required": [ + "abbreviation", + "description", + "name", + "shortDescription" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 50, + "minLength": 0, + "type": "string" + }, + "url": { + "maxLength": 50, + "minLength": 0, + "type": "string", + "nullable": true + }, + "shortDescription": { + "maxLength": 140, + "minLength": 0, + "type": "string" + }, + "description": { + "type": "string" + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "categoryName": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "sendInterestedToLeader": { + "type": "boolean" + }, + "sendInterestedToColeader": { + "type": "boolean" + }, + "sendInterestedToStaffConnector": { + "type": "boolean" + }, + "tagList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Tag" + }, + "nullable": true + }, + "locations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLocationLiteViewModel" + }, + "nullable": true + }, + "membershipMetrics": { + "$ref": "#/components/schemas/Core_Model_MinistryMembershipMetrics" + }, + "settings": { + "$ref": "#/components/schemas/Core_MinistrySettingsViewModel" + }, + "leaders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryLeaderViewModel" + }, + "nullable": true + }, + "ministryWebSettings": { + "$ref": "#/components/schemas/Core_MinistryCentralWebSettingsLiteViewModel" + }, + "hasMembersWithValidEmail": { + "type": "boolean" + }, + "numLocations": { + "type": "integer", + "format": "int32" + }, + "abbreviation": { + "maxLength": 10, + "minLength": 0, + "type": "string" + }, + "isRecommended": { + "type": "boolean" + }, + "recommendationOrder": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_AddressSearchDocument": { + "type": "object", + "properties": { + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "standardizedAddress": { + "type": "string", + "nullable": true + }, + "geoLocation": { + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "addressType": { + "type": "string", + "nullable": true + }, + "inactiveAsOf": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "addressExternalKeys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ExternalKey" + }, + "nullable": true + }, + "personAddress": { + "$ref": "#/components/schemas/Core_Model_PersonAddress" + } + }, + "additionalProperties": false + }, + "Core_Model_Address_SDK": { + "type": "object", + "properties": { + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "regionCode": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "countryAlpha2": { + "type": "string", + "nullable": true + }, + "countryAlpha3": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_AgeGroupStatistics": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/Core_Model_StatisticsValue" + }, + "difference": { + "$ref": "#/components/schemas/Core_Model_StatisticsValue" + } + }, + "additionalProperties": false + }, + "Core_Model_CallToActionType": { + "enum": [ + "Website", + "Ministry", + "Event" + ], + "type": "string" + }, + "Core_Model_CampusChanges": { + "type": "object", + "properties": { + "campusName": { + "type": "string", + "nullable": true + }, + "changeData": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Core_Model_StatisticsValue" + }, + "nullable": true + }, + "venueChanges": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_VenueChanges" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_CampusOccurrenceDto": { + "type": "object", + "properties": { + "occurrences": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "servicesToCreate": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_EventOccurrence" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_CategoryStatistics": { + "type": "object", + "properties": { + "categoryName": { + "type": "string", + "nullable": true + }, + "graphData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_GraphData" + }, + "nullable": true + }, + "campusAverages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CampusChanges" + }, + "nullable": true + }, + "ageGroupAverages": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_AgeGroupStatistics" + } + }, + "nullable": true + }, + "weekSumData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_NamedArray" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ChurchEntityRegion": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_Client": { + "required": [ + "idServerClientId" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "idServerClientId": { + "type": "string" + }, + "name": { + "type": "string", + "nullable": true + }, + "isWhitelisted": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_CommunicationTemplateAttachment": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "communicationTemplateId": { + "type": "integer", + "format": "int32" + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "url": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_CommunicationTemplateDetail": { + "type": "object", + "properties": { + "emailSubjectTemplate": { + "$ref": "#/components/schemas/Core_Model_Template" + }, + "emailBodyLayoutTemplate": { + "$ref": "#/components/schemas/Core_Model_Template" + }, + "emailBodyContentTemplate": { + "$ref": "#/components/schemas/Core_Model_Template" + }, + "smsTemplate": { + "$ref": "#/components/schemas/Core_Model_Template" + }, + "emailAttachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CommunicationTemplateAttachment" + }, + "nullable": true + }, + "tempEmailAttachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_CommunicationTemplateTempAttachmentDto" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "isEmail": { + "type": "boolean" + }, + "isSMS": { + "type": "boolean" + }, + "thumbnailImageUrl": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_CommunicationTemplateTempAttachmentDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ConnectionFormType": { + "enum": [ + "Regular", + "WorshipService" + ], + "type": "string" + }, + "Core_Model_Department": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "isUsed": { + "type": "boolean" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_EligibilityInfo": { + "type": "object", + "properties": { + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "isEligible": { + "type": "boolean" + }, + "notEligible": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "missingMilestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Milestone" + }, + "nullable": true + }, + "source": { + "$ref": "#/components/schemas/Core_Model_IPersonRequirements" + } + }, + "additionalProperties": false + }, + "Core_Model_EmailSearchDocument": { + "type": "object", + "properties": { + "emailAddress": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "emailExternalKeys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ExternalKey" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_EmailType": { + "enum": [ + "Ministry", + "MinistryLocation", + "ServingOpportunity" + ], + "type": "string" + }, + "Core_Model_Email_SDK": { + "type": "object", + "properties": { + "email": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_Endpoint": { + "required": [ + "path" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string" + }, + "isWhitelisted": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_EngagementZoomLevel": { + "enum": [ + "None" + ], + "type": "string" + }, + "Core_Model_EventOccurrence": { + "type": "object", + "properties": { + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "actualStartDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_EventRelativeDataClass": { + "type": "object", + "properties": { + "scheduleRelativeData": { + "$ref": "#/components/schemas/Core_Model_ScheduleRelativeData" + } + }, + "additionalProperties": false + }, + "Core_Model_EventReminderType": { + "enum": [ + "Common", + "InviteNotification", + "EventApproaching" + ], + "type": "string" + }, + "Core_Model_ExportHistory": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_ExportStatus" + }, + "statistics": { + "type": "string", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Core_Model_Person" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ExportStatus": { + "enum": [ + "Unknown", + "InProgress", + "Completed", + "Failed", + "Cancelled" + ], + "type": "string" + }, + "Core_Model_ExternalKey": { + "type": "object", + "properties": { + "systemId": { + "type": "integer", + "format": "int32" + }, + "keyValue": { + "type": "string", + "nullable": true + }, + "systemName": { + "type": "string", + "nullable": true + }, + "dateUpdated": { + "type": "string", + "format": "date-time" + }, + "versionNumber": { + "type": "integer", + "format": "int32" + }, + "keyValidation": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_FactStatisticsType": { + "enum": [ + "Unknown", + "YearToDateTotal", + "YearToDateAverages", + "MonthlyTotal", + "MonthlyAverages", + "WeeklySums", + "ToDateTotal" + ], + "type": "string" + }, + "Core_Model_FollowUpTaskActionStatus": { + "enum": [ + "TaskNotFound", + "UserNotAuthorized", + "NoOp", + "Successful" + ], + "type": "string" + }, + "Core_Model_FollowUpTaskDueDateBucket": { + "enum": [ + "DueToday", + "Upcoming", + "PastDue" + ], + "type": "string" + }, + "Core_Model_FollowUpTaskQueryType": { + "enum": [ + "Unknown", + "MyFollowUpsInProgress", + "MyFollowUpsCompleted", + "MyFollowUpsUnclaimed", + "MyFollowUpsEscalated", + "SupervisorOverviewUnclaimed", + "SupervisorOverviewByAssignee", + "AllFollowUpsUnclaimed", + "AllFollowUpsByAssignee" + ], + "type": "string" + }, + "Core_Model_FollowUpTaskStatus": { + "enum": [ + "Open", + "Blocked", + "Successful", + "Unsuccessful", + "Canceled" + ], + "type": "string" + }, + "Core_Model_Gender": { + "enum": [ + "Unspecified", + "Male", + "Female" + ], + "type": "string" + }, + "Core_Model_GradeLevel": { + "enum": [ + "None", + "PreK", + "Kindergarten", + "First", + "Second", + "Third", + "Fourth", + "Fifth", + "Sixth", + "Seventh", + "Eighth", + "Ninth", + "Tenth", + "Eleventh", + "Twelfth", + "Invalid" + ], + "type": "string" + }, + "Core_Model_GraphData": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "total": { + "$ref": "#/components/schemas/Core_Model_StatisticsValue" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_StatisticsValue" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_IPersonRequirements": { + "type": "object", + "properties": { + "minAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Milestone" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ImportFieldRestriction": { + "enum": [ + "None", + "NotEmpty", + "Unique", + "Numeric" + ], + "type": "string" + }, + "Core_Model_ImportMilestone": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "dates": { + "type": "array", + "items": { + "type": "string", + "format": "date-time" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ImportPerson": { + "type": "object", + "properties": { + "cmPersonId": { + "type": "integer", + "format": "int32" + }, + "cmPersonUniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "cmHouseholdId": { + "type": "integer", + "format": "int32" + }, + "cmPersonMapId": { + "type": "integer", + "format": "int32" + }, + "cmHouseholdMapId": { + "type": "integer", + "format": "int32" + }, + "cmChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "cmMilestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ImportMilestone" + }, + "nullable": true + }, + "rowNumber": { + "type": "integer", + "format": "int32" + }, + "error": { + "type": "string", + "nullable": true + }, + "sourceId": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "maritalStatus": { + "$ref": "#/components/schemas/Core_Model_MaritalStatus" + }, + "membershipStatus": { + "$ref": "#/components/schemas/Core_Model_MembershipStatus" + }, + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "homePhone": { + "type": "string", + "nullable": true + }, + "workPhone": { + "type": "string", + "nullable": true + }, + "cellPhone": { + "type": "string", + "nullable": true + }, + "notes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ImportPersonNote" + }, + "nullable": true + }, + "allergies": { + "type": "string", + "nullable": true + }, + "gradeLevel": { + "$ref": "#/components/schemas/Core_Model_GradeLevel" + }, + "churchEntityId": { + "type": "string", + "nullable": true + }, + "milestones": { + "$ref": "#/components/schemas/Core_Model_ImportPersonMilestones" + }, + "householdId": { + "type": "string", + "nullable": true + }, + "householdName": { + "type": "string", + "nullable": true + }, + "householdRelationship": { + "$ref": "#/components/schemas/Core_Model_PersonRelationType" + } + }, + "additionalProperties": false + }, + "Core_Model_ImportPersonMilestones": { + "type": "object", + "properties": { + "class101": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMembershipAgreement": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "firstContactDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "saddlebackKidsBaptismClass": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "class201": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMaturityCovenantCard": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "class301": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMinistryCovenant": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "completedSHAPEDiscoverySession": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "class401": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMissionCommitment": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "acceptedChrist": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "baptism": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "becameMember": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "dojCleared": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "fbiCleared": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "fingerprinted": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "dataCovenant": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "dataEntry": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "prayerMinistryCovenant": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sK_EmailToStaff": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sK_Interview": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sK_MegansLaw": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sK_NameBadge": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sK_Orientation": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cL_QuickStart": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT1": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT2_Empower": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT2_Tools": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT2_Character": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT2_Health": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT2_PEACE": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT2_Reconciliation": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT2_Skills": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lT5_Advanced": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "newHostGathering": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "childrensMembership": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ImportPersonNote": { + "type": "object", + "properties": { + "cmNoteId": { + "type": "integer", + "format": "int32" + }, + "cmNeedToUpdate": { + "type": "boolean" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "note": { + "type": "string", + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "noteType": { + "type": "string", + "nullable": true + }, + "editorIndividualFirstName": { + "type": "string", + "nullable": true + }, + "editorIndividualLastName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ImportRecordAction": { + "enum": [ + "Unknown", + "New", + "Update", + "Skip" + ], + "type": "string" + }, + "Core_Model_ImportRecordDetails": { + "type": "object", + "properties": { + "parsed": { + "$ref": "#/components/schemas/Core_Model_ImportPerson" + }, + "matched": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ImportPerson" + }, + "nullable": true + }, + "destination": { + "$ref": "#/components/schemas/Core_Model_ImportPerson" + }, + "errorText": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ImportRecordStatus": { + "enum": [ + "Unknown", + "New", + "Unchanged", + "Changed", + "Error" + ], + "type": "string" + }, + "Core_Model_IndividualNameSearchDocument": { + "type": "object", + "properties": { + "firstName": { + "type": "string", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "firstNamePhonetic": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "lastNamePhonetic": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "nameExternalKeys": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_IndividualProfileSearchDocument": { + "type": "object", + "properties": { + "organizationId": { + "type": "integer", + "format": "int32" + }, + "userAccountId": { + "type": "integer", + "format": "int32" + }, + "masterProfileId": { + "type": "integer", + "format": "int32" + }, + "birthDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isDeceased": { + "type": "boolean" + }, + "deceasedAsOf": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "searchTag": { + "type": "string", + "nullable": true + }, + "dateCreated": { + "type": "string", + "format": "date-time" + }, + "isArchived": { + "type": "boolean" + }, + "siteId": { + "type": "integer", + "format": "int32" + }, + "names": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_IndividualNameSearchDocument" + }, + "nullable": true + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_AddressSearchDocument" + }, + "nullable": true + }, + "emailAddresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_EmailSearchDocument" + }, + "nullable": true + }, + "phoneNumbers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PhoneSearchDocument" + }, + "nullable": true + }, + "noteDetails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_NoteSearchDocument" + }, + "nullable": true + }, + "display": { + "$ref": "#/components/schemas/Core_Model_IndividualSearchItem" + }, + "primaryAddress": { + "$ref": "#/components/schemas/Core_Model_AddressSearchDocument" + }, + "primaryName": { + "$ref": "#/components/schemas/Core_Model_IndividualNameSearchDocument" + }, + "gender": { + "$ref": "#/components/schemas/Core_App_GenderTypeCode" + }, + "profileExternalKeys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ExternalKey" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_IndividualSearchItem": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "address": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_IntegrationDataSourceType": { + "enum": [ + "Unknown", + "CSV", + "XLS" + ], + "type": "string" + }, + "Core_Model_IpAddress": { + "required": [ + "address" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "address": { + "type": "string" + }, + "isWhitelisted": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_MaritalStatus": { + "enum": [ + "Single", + "Married", + "Divorced", + "Widowed" + ], + "type": "string" + }, + "Core_Model_MatchingClassification": { + "enum": [ + "Self", + "Best", + "Good", + "Average", + "Bad", + "Undefined" + ], + "type": "string" + }, + "Core_Model_MembershipStatus": { + "enum": [ + "Unknown", + "NonMember", + "Member", + "DisengagedMember", + "MembershipReview", + "Pending" + ], + "type": "string" + }, + "Core_Model_MergeActionType": { + "enum": [ + "ManualFields", + "ManualList", + "AutoList", + "ManualWholeList" + ], + "type": "string" + }, + "Core_Model_MergeDto": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "target": { + "$ref": "#/components/schemas/Core_Model_MergeObjectDto" + }, + "sources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MergeObjectDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_MergeGroupDto": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/Core_Model_MergeGroupType" + }, + "action": { + "$ref": "#/components/schemas/Core_Model_MergeActionType" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_MergeGroupType": { + "enum": [ + "Person", + "Email", + "Phone", + "Address", + "Occupation", + "Milestone", + "Note", + "User", + "Membership", + "Doc", + "Relationship", + "RcEntry", + "PersonDupe", + "Speaker", + "MinistryContact", + "MinistryMember", + "ServingOpportunityVolunteer", + "ServingOpportunityContact", + "NotificationRecipient", + "NotificationPreferences", + "PersonNote", + "IntegrationPersonDataSourceMap", + "PersonPreference", + "FlowWorkItemAssignee", + "FlowWorkItemSupervisor", + "FlowConfigurationAssignee", + "FlowConfigurationSupervisor", + "ImportHistory", + "ImportRecordPersonPerformer", + "ImportRecordHouseholdPerformer", + "ImportRecordMilestonePerformer", + "ExportHistory", + "PrayerRequest", + "SecurityData", + "Giving", + "SmallGroups", + "Facebook", + "Credentials", + "Teams", + "Tasks_AsAssignee", + "TaskTemplates", + "Tasks_AsSubject", + "ConnectionQuestionAnswers", + "EventContact", + "EventAttendee", + "EventHistoricAttendee", + "EventAttendeeOccurrence", + "MinistryGroup", + "AttendeeCheckIn", + "VolunteerCheckIn", + "PinnedNote", + "PromotionHistory", + "ConnectionFormOwner", + "ConnectionFormEntryPerson", + "ConnectionFormContributorUpdate", + "ConnectionFormContributorDelete", + "ServingHours" + ], + "type": "string" + }, + "Core_Model_MergeItemDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/Core_Model_MergeItemType" + }, + "name": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_MergeItemType": { + "enum": [ + "Common", + "Image" + ], + "type": "string" + }, + "Core_Model_MergeObjectDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "alternateId": { + "type": "integer", + "format": "int32" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MergeGroupDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_Milestone": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "category": { + "$ref": "#/components/schemas/Core_Model_MilestoneCategory" + }, + "uiOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "inactiveDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "inactivatedBy": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "inactivatedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "allowablePersonRecordTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonRecordType" + }, + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_MilestoneCategory": { + "enum": [ + "Undefined", + "Personal", + "Discipleship", + "Security" + ], + "type": "string" + }, + "Core_Model_MinistryCommunicationType": { + "enum": [ + "Unknown", + "InterestedInMinistryEmail", + "MinistryMembershipEmail" + ], + "type": "string" + }, + "Core_Model_MinistryDeactivationValidationResult": { + "type": "object", + "properties": { + "activeMinistryLocations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_MinistryLocationDeactivationValidationResult" + }, + "nullable": true + }, + "numberOfMinistryLocationsToDeactivate": { + "type": "integer", + "format": "int32" + }, + "numberOfServingOpportunitiesToDeactivate": { + "type": "integer", + "format": "int32" + }, + "inactivationAllowed": { + "type": "boolean", + "readOnly": true + }, + "errorType": { + "$ref": "#/components/schemas/Core_App_ErrorType" + }, + "isValid": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_Model_MinistryLocation": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "abbreviation": { + "type": "string", + "nullable": true + }, + "parentMinistryStatus": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "churchEntityAbbreviation": { + "type": "string", + "nullable": true + }, + "churchEntityUrl": { + "type": "string", + "nullable": true + }, + "churchEntityCountry": { + "type": "string", + "nullable": true + }, + "shortDescription": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "purposeStatement": { + "type": "string", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "isAcceptingNewMembers": { + "type": "boolean" + }, + "sendInterestedToLeader": { + "type": "boolean" + }, + "sendInterestedToColeader": { + "type": "boolean" + }, + "sendInterestedToStaffConnector": { + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryStatus" + }, + "inactiveDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_MinistryLocationDeactivationValidationResult": { + "type": "object", + "properties": { + "ministryLocation": { + "$ref": "#/components/schemas/Core_Model_MinistryLocation" + }, + "hasNotEmptyInterestedQueue": { + "type": "boolean" + }, + "activeServingOpportunities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Dto_ServingOpportunityWithInterestedStatus" + }, + "nullable": true + }, + "numberOfServingOpportunitiesToDeactivate": { + "type": "integer", + "format": "int32" + }, + "inactivationAllowed": { + "type": "boolean", + "readOnly": true + }, + "errorType": { + "$ref": "#/components/schemas/Core_App_ErrorType" + }, + "isValid": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_Model_MinistryLocationIds": { + "type": "object", + "properties": { + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_MinistryMemberStatus": { + "enum": [ + "NotContacted", + "FirstContact", + "SecondContact", + "Pending", + "Ineligible", + "Active", + "Inactive", + "InTraining", + "Unknown" + ], + "type": "string" + }, + "Core_Model_MinistryMemberStatusHistory": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "ministryMemberId": { + "type": "integer", + "format": "int32" + }, + "memberFirstName": { + "type": "string", + "nullable": true + }, + "memberLastName": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatus" + }, + "isAddition": { + "type": "boolean" + }, + "isDeletion": { + "type": "boolean" + }, + "createdBy": { + "type": "integer", + "format": "int32" + }, + "createdByName": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_MinistryMemberStatusType": { + "enum": [ + "Interested", + "Member" + ], + "type": "string" + }, + "Core_Model_MinistryMembershipMetrics": { + "type": "object", + "properties": { + "notContacted": { + "type": "integer", + "format": "int32" + }, + "firstContact": { + "type": "integer", + "format": "int32" + }, + "secondContact": { + "type": "integer", + "format": "int32" + }, + "pending": { + "type": "integer", + "format": "int32" + }, + "ineligible": { + "type": "integer", + "format": "int32" + }, + "active": { + "type": "integer", + "format": "int32" + }, + "inactive": { + "type": "integer", + "format": "int32" + }, + "inTraining": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_MinistryScope": { + "type": "object", + "properties": { + "regions": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "churchEntities": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "nullable": true + }, + "servingOpportunities": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "extractedChurchEntities": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_MinistryStatus": { + "enum": [ + "Pending", + "Active", + "Inactive" + ], + "type": "string" + }, + "Core_Model_NamedArray": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "total": { + "type": "number", + "format": "double" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_NamedValue" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_NamedEntity": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_NamedValue": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "value": { + "type": "number", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_NoteSearchDocument": { + "type": "object", + "properties": { + "note": { + "type": "string", + "nullable": true + }, + "noteDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "noteExternalKeys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ExternalKey" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_NotificationChannelType": { + "enum": [ + "All", + "Email", + "Sms", + "App", + "Push" + ], + "type": "string" + }, + "Core_Model_NotificationLabelType": { + "enum": [ + "None", + "Favorite" + ], + "type": "string" + }, + "Core_Model_NotificationSourceType": { + "enum": [ + "Unknown", + "FlowWorkItemAssigned", + "FlowWorkItemReassigned", + "FlowWorkItemCommented", + "FlowWorkItemOverdue", + "FlowWorkItemBlocked", + "MinistryMemberInterested", + "MinistryMemberStatusChanged", + "MinistryMemberNoteCreated", + "MinistryMember", + "DeliveryResult", + "ServingOpportunityVolunteer", + "ServingOpportunityVolunteerInterested", + "DebugEmail", + "VerificationEmail", + "AddedToMinistryAsLeader", + "WorkflowCommunication", + "ReminderNotification", + "EventAttendee", + "WorkflowTaskEscalated", + "WorkflowTaskCommented", + "WorkflowTaskReassigned", + "WorkflowTaskBlocked", + "WorkflowTasksPastDueDigest", + "WorkflowTasksDueTodayDigest", + "WorkflowTasksNewlyCreatedOrAssignedDigest", + "MemberEngagementStartOfService", + "MemberEngagementDailyVerse", + "MemberEngagementMilestoneAchieved", + "MemberEngagementCustomPastorMessage", + "InviteAndNotifyMinistry", + "SystemCommunication", + "MinistryMemberSms", + "SmsConsentRequest", + "EventCheckInVolunteer", + "GivingCommunication", + "EventContact", + "EventCheckInAttendee", + "ServingOpportunityVolunteerSms", + "ServingOpportunityVolunteerUnscheduled", + "MemberEngagementDailyDevotional", + "MyFollowUpsManualCommunication" + ], + "type": "string" + }, + "Core_Model_NotificationSourceTypeCategory": { + "enum": [ + "Discipleship", + "Events", + "Ministry", + "System", + "Workflow", + "MemberEngagement", + "Giving" + ], + "type": "string" + }, + "Core_Model_NotificationStatusType": { + "enum": [ + "Unprocessed", + "Pending", + "Running", + "Succeeded", + "Failed", + "Skipped" + ], + "type": "string" + }, + "Core_Model_OccurrenceStatus": { + "enum": [ + "Active", + "Canceled", + "Removed" + ], + "type": "string" + }, + "Core_Model_PaymentSearchDocument": { + "type": "object", + "properties": { + "batchId": { + "type": "integer", + "format": "int32" + }, + "paymentMethodType": { + "type": "integer", + "format": "int32" + }, + "paymentMethodTypeName": { + "type": "string", + "nullable": true + }, + "paymentStatusType": { + "$ref": "#/components/schemas/Core_Model_PaymentStatusType" + }, + "amountDouble": { + "type": "number", + "format": "double" + }, + "amount": { + "type": "string", + "nullable": true + }, + "netAmountDouble": { + "type": "number", + "format": "double" + }, + "netAmount": { + "type": "string", + "nullable": true + }, + "individual": { + "$ref": "#/components/schemas/Core_Model_IndividualProfileSearchDocument" + }, + "paymentDateDate": { + "type": "string", + "format": "date-time" + }, + "paymentDate": { + "type": "string", + "nullable": true + }, + "depositDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "currencyType": { + "type": "integer", + "format": "int32" + }, + "currencyTypeName": { + "type": "string", + "nullable": true + }, + "sourceCurrencyAmount": { + "type": "number", + "format": "double" + }, + "paymentType": { + "type": "integer", + "format": "int32" + }, + "isArchived": { + "type": "boolean" + }, + "paymentSiteId": { + "type": "integer", + "format": "int32" + }, + "settledAmount": { + "type": "number", + "format": "double" + }, + "isIndividual": { + "type": "boolean" + }, + "bankAccountId": { + "type": "integer", + "format": "int32" + }, + "paymentMethodDisplayLine": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_PaymentStatusType": { + "enum": [ + "None", + "ToBeSettled", + "ToBeDeposited", + "Deposited", + "Refunded", + "Voided", + "Chargeback", + "ToBeRefunded", + "Error" + ], + "type": "string" + }, + "Core_Model_Person": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "uniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "maritalStatus": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "membershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "disengagementReason": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deceasedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "gradeLevel": { + "$ref": "#/components/schemas/Core_Model_GradeLevel" + }, + "allergies": { + "type": "string", + "nullable": true + }, + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "homePhone": { + "type": "string", + "nullable": true + }, + "cellPhone": { + "type": "string", + "nullable": true + }, + "workPhone": { + "type": "string", + "nullable": true + }, + "primaryPhoneType": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonMilestone" + }, + "nullable": true + }, + "departmentId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentName": { + "type": "string", + "nullable": true + }, + "departmentChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentChurchEntityName": { + "type": "string", + "nullable": true + }, + "preferredServiceEventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isUser": { + "type": "boolean" + }, + "profilePictureUrl": { + "type": "string", + "nullable": true + }, + "profilePhotoUrl": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonAddress": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "mergeableItem": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonBase": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "uniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "previousUniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "deceasedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isDeceased": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_Model_PersonBasic": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "emailVerifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isEmailVerified": { + "type": "boolean" + }, + "avatar": { + "$ref": "#/components/schemas/Core_Model_PersonProfilePicture" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "uniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "previousUniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "deceasedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isDeceased": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_Model_PersonContactPreference": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "preferredMethod": { + "type": "string", + "nullable": true + }, + "doNotMail": { + "type": "boolean" + }, + "doNotPhone": { + "type": "boolean" + }, + "doNotText": { + "type": "boolean" + }, + "doNotEmail": { + "type": "boolean" + }, + "doNotContact": { + "type": "boolean" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonDocument": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "filename": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "fileTitle": { + "type": "string", + "nullable": true + }, + "deleteDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "mergeableItem": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonEmail": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string", + "nullable": true + }, + "isPublic": { + "type": "boolean" + }, + "mergeableItem": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonMilestone": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "milestoneId": { + "type": "integer", + "format": "int32" + }, + "milestoneOrder": { + "type": "integer", + "format": "int32" + }, + "milestone": { + "type": "string", + "nullable": true + }, + "milestoneCategory": { + "$ref": "#/components/schemas/Core_Model_MilestoneCategory" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "location": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "document": { + "$ref": "#/components/schemas/Core_Model_PersonDocument" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonDocument" + }, + "nullable": true + }, + "mergeableItem": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonPhone": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "phoneTypeId": { + "type": "integer", + "format": "int32" + }, + "phoneNumber": { + "type": "string", + "nullable": true + }, + "isPublic": { + "type": "boolean" + }, + "mergeableItem": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonProfilePicture": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "pictureType": { + "$ref": "#/components/schemas/Core_Model_PersonProfilePictureType" + }, + "picture": { + "type": "string", + "format": "byte", + "nullable": true + }, + "mimeType": { + "type": "string", + "nullable": true + }, + "mergeableItem": { + "$ref": "#/components/schemas/Core_Model_MergeItemDto" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonProfilePictureType": { + "enum": [ + "Photo", + "Avatar" + ], + "type": "string" + }, + "Core_Model_PersonRecordType": { + "enum": [ + "Adult", + "Student", + "Child" + ], + "type": "string" + }, + "Core_Model_PersonRelationType": { + "enum": [ + "Unknown", + "Parent", + "Child", + "Sibling", + "Spouse", + "Other", + "StepParent", + "FormerSpouse", + "StepChild", + "StepSibling", + "Grandparent", + "StepGrandparent", + "Grandchild", + "StepGrandchild", + "ParentsSibling", + "SiblingsChild", + "SeparatedSpouse", + "Cousin", + "Neighbor", + "Friend", + "CoWorker", + "SmallGroupLeader", + "MinistryLeader", + "FosterParent", + "FosterChild" + ], + "type": "string" + }, + "Core_Model_PersonRelationship": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "inferred": { + "type": "boolean" + }, + "personBirthdate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "personDeceasedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "personFirstName": { + "type": "string", + "nullable": true + }, + "personGender": { + "type": "string", + "nullable": true + }, + "personGradeLevel": { + "$ref": "#/components/schemas/Core_Model_GradeLevel" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personLastName": { + "type": "string", + "nullable": true + }, + "personMaritalStatus": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personMembershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personNickName": { + "type": "string", + "nullable": true + }, + "personPrefix": { + "type": "string", + "nullable": true + }, + "personRelationId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "personSuffix": { + "type": "string", + "nullable": true + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "reciprocalRelationId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "relativeBirthdate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "relativeDeceasedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "relativeFirstName": { + "type": "string", + "nullable": true + }, + "relativeGender": { + "type": "string", + "nullable": true + }, + "relativeGradeLevel": { + "$ref": "#/components/schemas/Core_Model_GradeLevel" + }, + "relativeId": { + "type": "integer", + "format": "int32" + }, + "relativeLastName": { + "type": "string", + "nullable": true + }, + "relativeMaritalStatus": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "relativeMembershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "relativeNickName": { + "type": "string", + "nullable": true + }, + "relativePrefix": { + "type": "string", + "nullable": true + }, + "relativeProfilePhotoUrl": { + "type": "string", + "nullable": true + }, + "relativeProfilePictureUrl": { + "type": "string", + "nullable": true + }, + "relativeSuffix": { + "type": "string", + "nullable": true + }, + "relativeUniqueId": { + "type": "integer", + "format": "int32" + }, + "invalidReason": { + "type": "string", + "nullable": true + }, + "isAddressMatch": { + "type": "boolean" + }, + "personAge": { + "type": "integer", + "format": "int32", + "nullable": true, + "readOnly": true + }, + "relativeAge": { + "type": "integer", + "format": "int32", + "nullable": true, + "readOnly": true + }, + "personMaritalStatusDescription": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "relativeMaritalStatusDescription": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_PersonSecurityLite": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "uniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "fullName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_PersonUserPreference": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "localeId": { + "type": "integer", + "format": "int32" + }, + "localeLCID": { + "type": "string", + "nullable": true + }, + "timeZoneId": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_Person_SDK": { + "type": "object", + "properties": { + "profilePictureUrl": { + "type": "string", + "nullable": true + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Address_SDK" + }, + "nullable": true + }, + "phones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PhoneNumber_SDK" + }, + "nullable": true + }, + "emails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Email_SDK" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "maritalStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maritalStatus": { + "type": "string", + "nullable": true + }, + "membershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "membershipStatus": { + "type": "string", + "nullable": true + }, + "deceasedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "gradeLevel": { + "type": "string", + "nullable": true + }, + "allergies": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_PersonalInformationPanelField": { + "enum": [ + "Unknown", + "FirstName", + "LastName", + "Email", + "SinglePhoneNumberWithSpecifiedType", + "Gender", + "Campus", + "Address1", + "Address2", + "City", + "Region", + "PostalCode", + "Country", + "HomePhone", + "MobilePhone", + "WorkPhone" + ], + "type": "string" + }, + "Core_Model_PhoneNumber_SDK": { + "type": "object", + "properties": { + "phoneType": { + "type": "string", + "nullable": true + }, + "phoneNumber": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_PhoneSearchDocument": { + "type": "object", + "properties": { + "phoneNumber": { + "type": "string", + "nullable": true + }, + "phoneType": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "phoneExternalKeys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ExternalKey" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_PhoneType": { + "enum": [ + "Unknown", + "Home", + "Work", + "Cell", + "Other" + ], + "type": "string" + }, + "Core_Model_PublishType": { + "enum": [ + "NotPublished", + "PublishedPrivate", + "PublishedPublic" + ], + "type": "string" + }, + "Core_Model_Question": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "placeholder": { + "type": "string", + "nullable": true + }, + "questionTypeId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "questionType": { + "$ref": "#/components/schemas/Core_Model_QuestionType" + }, + "questionClassificationId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "questionClassification": { + "$ref": "#/components/schemas/Core_Model_QuestionClassification" + }, + "milestoneId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "milestoneName": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "published": { + "type": "boolean" + }, + "choices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_QuestionAnswerChoice" + }, + "nullable": true + }, + "questionSources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_QuestionSource" + }, + "nullable": true + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifiedBy": { + "type": "string", + "nullable": true + }, + "inactiveDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "inactivatedBy": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "numAnswers": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "defaultAutoReplyEmailContentSpotTemplateId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_QuestionAnswerChoice": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "questionId": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_QuestionClassification": { + "enum": [ + "Invalid", + "Custom", + "Foundation", + "General" + ], + "type": "string" + }, + "Core_Model_QuestionSource": { + "type": "object", + "properties": { + "questionId": { + "type": "integer", + "format": "int32" + }, + "answerSourceId": { + "type": "integer", + "format": "int32" + }, + "answerSource": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_QuestionType": { + "enum": [ + "SingleLineText", + "ParagraphText", + "Checkbox", + "Date", + "MultipleChoice", + "DropDown" + ], + "type": "string" + }, + "Core_Model_RateLimitRule": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "endpointId": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "period": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int64" + }, + "callLimit": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "isGeneral": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_Model_Region": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ReminderData": { + "type": "object", + "properties": { + "emailData": { + "$ref": "#/components/schemas/Core_Model_ReminderEmailData" + }, + "eventData": { + "$ref": "#/components/schemas/Core_Model_ReminderEventData" + } + }, + "additionalProperties": false + }, + "Core_Model_ReminderEmailData": { + "type": "object", + "properties": { + "emailTemplateId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "emailTemplateName": { + "type": "string", + "nullable": true + }, + "senderId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "senderName": { + "type": "string", + "nullable": true + }, + "replyEmail": { + "type": "string", + "nullable": true + }, + "subject": { + "type": "string", + "nullable": true + }, + "htmlBody": { + "type": "string", + "nullable": true + }, + "bodyTemplateName": { + "type": "string", + "nullable": true + }, + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "ccToSender": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ReminderEventData": { + "type": "object", + "properties": { + "eventId": { + "type": "integer", + "format": "int32" + }, + "type": { + "$ref": "#/components/schemas/Core_Model_EventReminderType" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_ReminderInterval": { + "enum": [ + "Unknown", + "Minutes", + "Hours", + "Days", + "Weeks" + ], + "type": "string" + }, + "Core_Model_ResponseCardField": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "responseCardId": { + "type": "integer", + "format": "int32" + }, + "responseCardSectionId": { + "type": "integer", + "format": "int32" + }, + "predecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "fieldType": { + "type": "string", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "labelPublic": { + "type": "string", + "nullable": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "isRequired": { + "type": "boolean" + }, + "isSensitive": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "subFields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ResponseCardSubField" + }, + "nullable": true + }, + "choices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ResponseCardFieldChoice" + }, + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ResponseCardFieldChoice": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "parentFieldId": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string", + "nullable": true + }, + "labelPublic": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ResponseCardSection": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "responseCardId": { + "type": "integer", + "format": "int32" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "titlePublic": { + "type": "string", + "nullable": true + }, + "subtitle": { + "type": "string", + "nullable": true + }, + "subtitlePublic": { + "type": "string", + "nullable": true + }, + "icon": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ResponseCardField" + }, + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ResponseCardSubField": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "parentFieldId": { + "type": "integer", + "format": "int32" + }, + "predecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "labelPublic": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isRequired": { + "type": "boolean" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ScheduleRelativeData": { + "type": "object", + "properties": { + "startTimeOffset": { + "$ref": "#/components/schemas/Core_Model_TimeOffset" + }, + "durationOffset": { + "$ref": "#/components/schemas/Core_Model_TimeOffset" + } + }, + "additionalProperties": false + }, + "Core_Model_ScheduleSearchType": { + "enum": [ + "None", + "Recurring", + "OneTime", + "Closed", + "Active" + ], + "type": "string" + }, + "Core_Model_SecurityRoleType": { + "enum": [ + "Common", + "System", + "Special" + ], + "type": "string" + }, + "Core_Model_SecurityScope": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "notAssignedChurchEntities": { + "type": "boolean" + }, + "regions": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "churchEntities": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "nullable": true + }, + "ministries": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Core_Model_MinistryScope" + }, + "nullable": true + }, + "events": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "connectionForms": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "noteCategories": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "nullable": true + }, + "extractedChurchEntities": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_ServiceOutlineCategory": { + "enum": [ + "WorshipService" + ], + "type": "string" + }, + "Core_Model_ServiceOutlinePerson": { + "type": "object", + "properties": { + "serviceTemplateId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "content": { + "type": "string", + "nullable": true + }, + "version": { + "type": "integer", + "format": "int32" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ServiceSpeaker": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "createdBy": { + "type": "string", + "nullable": true + }, + "modifiedBy": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ServiceTemplateOutline": { + "type": "object", + "properties": { + "serviceTemplateId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "category": { + "$ref": "#/components/schemas/Core_Model_ServiceOutlineCategory" + }, + "categoryId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "categoryName": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "content": { + "type": "string", + "nullable": true + }, + "version": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_ServiceTemplateType": { + "enum": [ + "GeneralTemplate", + "CampusTemplate" + ], + "type": "string" + }, + "Core_Model_ServingOpportunityCommunicationTemplate": { + "type": "object", + "properties": { + "communicationTemplate": { + "$ref": "#/components/schemas/Core_Model_CommunicationTemplateDetail" + }, + "communicationTemplateId": { + "type": "integer", + "format": "int32" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "senderDisplayName": { + "type": "string", + "nullable": true + }, + "senderEmailAddress": { + "type": "string", + "nullable": true + }, + "servingOpportunityCommunicationType": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityCommunicationType" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ServingOpportunityCommunicationType": { + "enum": [ + "Unknown", + "UnscheduledEmailConfirmation", + "ScheduledEmailConfirmation" + ], + "type": "string" + }, + "Core_Model_ServingOpportunityRequirements": { + "enum": [ + "None", + "Age", + "Gender", + "Milestones", + "All" + ], + "type": "string" + }, + "Core_Model_ServingOpportunityScheduleCommitmentType": { + "enum": [ + "AllOccurrences", + "SingleOccurrence" + ], + "type": "string" + }, + "Core_Model_ServingOpportunitySettingsDto": { + "type": "object", + "properties": { + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_Milestone" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "quantityNeeded": { + "type": "integer", + "format": "int32" + }, + "minAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "virtualUrl": { + "type": "string", + "nullable": true + }, + "disabledCommunicationTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityCommunicationType" + }, + "nullable": true + }, + "disabledCommunicationTypeIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "eventRelativeData": { + "$ref": "#/components/schemas/Core_Model_EventRelativeDataClass" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ServingOpportunityStatistics": { + "type": "object", + "properties": { + "capacity": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "duration": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "publishType": { + "$ref": "#/components/schemas/Core_Model_PublishType" + }, + "startTime": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "total": { + "type": "integer", + "format": "int32" + }, + "volunteerCommitted": { + "type": "integer", + "format": "int32" + }, + "volunteerInterested": { + "type": "integer", + "format": "int32" + }, + "filledSlots": { + "type": "integer", + "format": "int32", + "readOnly": true, + "deprecated": true + }, + "openSlots": { + "type": "integer", + "format": "int32", + "readOnly": true, + "deprecated": true + } + }, + "additionalProperties": false + }, + "Core_Model_ServingOpportunityStatus": { + "enum": [ + "PendingApproval", + "Open", + "Closed" + ], + "type": "string" + }, + "Core_Model_ServingOpportunityVolunteerOccurrence": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityVolunteerId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceTimeZone": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "exclusions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerOccurrenceExclusion" + }, + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ServingOpportunityVolunteerOccurrenceExclusion": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityVolunteerOccurrenceId": { + "type": "integer", + "format": "int32" + }, + "excludedOccurrenceId": { + "type": "integer", + "format": "int32" + }, + "excludedOccurrenceDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_ServingOpportunityVolunteerScheduleType": { + "enum": [ + "Unscheduled", + "Scheduled" + ], + "type": "string" + }, + "Core_Model_ServingOpportunityVolunteerStatus": { + "enum": [ + "Interested", + "Committed" + ], + "type": "string" + }, + "Core_Model_SharePageType": { + "enum": [ + "Unknown", + "Event", + "ServingOpportunity" + ], + "type": "string" + }, + "Core_Model_StandardErrorResponse": { + "type": "object", + "properties": { + "message": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_StatisticsValue": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "noData": { + "type": "boolean" + }, + "value": { + "type": "number", + "format": "double", + "nullable": true + }, + "difference": { + "type": "number", + "format": "double", + "nullable": true + }, + "percentage": { + "type": "number", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_SyncFeatures": { + "enum": [ + "None", + "ImportEnabled", + "DataSyncEnabled" + ], + "type": "string" + }, + "Core_Model_Tag": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "integer", + "format": "int32" + }, + "slug": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_Template": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "type": { + "$ref": "#/components/schemas/Core_Model_TemplateType" + }, + "format": { + "$ref": "#/components/schemas/Core_Model_TemplateFormat" + }, + "isRazor": { + "type": "boolean" + }, + "name": { + "type": "string", + "nullable": true + }, + "templateValue": { + "type": "string", + "nullable": true + }, + "isSystem": { + "type": "boolean" + }, + "designData": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Core_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_Model_TemplateFormat": { + "enum": [ + "Unknown", + "PlainText", + "Html", + "PrinterLabel" + ], + "type": "string" + }, + "Core_Model_TemplateType": { + "enum": [ + "Unknown", + "ContentSpot", + "Layout", + "CompleteDocument", + "Base" + ], + "type": "string" + }, + "Core_Model_TimeOffset": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + }, + "hours": { + "type": "integer", + "format": "int32" + }, + "minutes": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_Model_UserPassword": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "oldPassword": { + "type": "string", + "nullable": true + }, + "newPassword": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_VenueChanges": { + "type": "object", + "properties": { + "venueName": { + "type": "string", + "nullable": true + }, + "changeData": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Core_Model_StatisticsValue" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_WebHeader": { + "type": "object", + "properties": { + "value": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_Model_WeekendFlashReportRangeType": { + "enum": [ + "Regular", + "ServiceCategory" + ], + "type": "string" + }, + "Core_MyPersonServingOpportunityDataViewModel": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "myPersonServingOpportunities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MyPersonServingOpportunityViewModel" + }, + "nullable": true + }, + "signedUpForAllIdList": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "signedUpAsinterestedIdList": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "signedUpForSpecificOccurrencesList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerOccurrence" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_MyPersonServingOpportunityViewModel": { + "required": [ + "churchEntityId", + "ministryId", + "volunteerSettings" + ], + "type": "object", + "properties": { + "privateId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean", + "nullable": true, + "readOnly": true + }, + "communicationTemplates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityCommunicationTemplate" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 250, + "minLength": 0, + "type": "string", + "nullable": true + }, + "eventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "eventName": { + "type": "string", + "nullable": true + }, + "eventUrl": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "shortDescription": { + "maxLength": 140, + "minLength": 0, + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityStatus" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ministry": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + }, + "venue": { + "$ref": "#/components/schemas/Core_VenueViewModel" + }, + "venueData": { + "$ref": "#/components/schemas/Core_VenueDataViewModel" + }, + "venueId": { + "type": "integer", + "format": "int32", + "nullable": true, + "deprecated": true + }, + "contacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityContactViewModel" + }, + "nullable": true + }, + "tagList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_TagViewModel" + }, + "nullable": true + }, + "schedule": { + "$ref": "#/components/schemas/Core_ScheduleViewModel_Core" + }, + "settings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunitySettingsViewModel" + }, + "nullable": true + }, + "occurrence": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + }, + "statistics": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityStatistics" + }, + "isClosedBySchedule": { + "type": "boolean" + }, + "isDraft": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean", + "deprecated": true + }, + "isRecurring": { + "type": "boolean", + "nullable": true + }, + "isSelfCheckInEnabled": { + "type": "boolean" + }, + "verse": { + "type": "string", + "nullable": true + }, + "churchEntityAbbreviation": { + "type": "string", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "volunteerSettings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerSettingsViewModel" + } + }, + "publishType": { + "$ref": "#/components/schemas/Core_Model_PublishType" + }, + "publishTypeId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "publishedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "publishedChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tenantUrl": { + "type": "string", + "nullable": true + }, + "webHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "thumbnail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "eligibility": { + "$ref": "#/components/schemas/Core_EligibilityInfoViewModel" + } + }, + "additionalProperties": false + }, + "Core_NamedEntityViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_NewMinistryMembersViewModel": { + "type": "object", + "properties": { + "personIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_MinistryMemberStatus" + }, + "sourceId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_NoteCategoryInboundViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 100, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_NoteCategoryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "inactivateDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "inactivatedBy": { + "type": "string", + "nullable": true + }, + "isSystem": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_NoteReminderScheduleViewModel": { + "type": "object", + "properties": { + "occurrencesCount": { + "maximum": 10000, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "custom": { + "type": "boolean" + }, + "sequences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ScheduleSequenceViewModel_Core_V2" + }, + "nullable": true + }, + "startDayOfWeek": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_NoteReminderViewModel": { + "required": [ + "noteDirectLink", + "reminderDate" + ], + "type": "object", + "properties": { + "schedule": { + "$ref": "#/components/schemas/Core_NoteReminderScheduleViewModel" + }, + "reminderDate": { + "type": "string" + }, + "noteDirectLink": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "interval": { + "$ref": "#/components/schemas/Core_Model_ReminderInterval" + }, + "before": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "enabled": { + "type": "boolean" + }, + "processed": { + "type": "boolean" + }, + "reminderData": { + "$ref": "#/components/schemas/Core_Model_ReminderData" + } + }, + "additionalProperties": false + }, + "Core_NoteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32" + }, + "purpose": { + "type": "string", + "nullable": true + }, + "subject": { + "type": "string", + "nullable": true + }, + "noteText": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "isPinned": { + "type": "boolean", + "nullable": true + }, + "createdBy": { + "type": "integer", + "format": "int32" + }, + "createdByName": { + "type": "string", + "nullable": true + }, + "createdByEmail": { + "type": "string", + "nullable": true + }, + "createdByAvatar": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64" + }, + "modifiedBy": { + "type": "integer", + "format": "int32" + }, + "modifiedByName": { + "type": "string", + "nullable": true + }, + "modifiedByEmail": { + "type": "string", + "nullable": true + }, + "modifiedByAvatar": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "integer", + "format": "int64" + }, + "ministryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ministry": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntity": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "categoryName": { + "type": "string", + "nullable": true + }, + "taskName": { + "type": "string", + "nullable": true + }, + "reminderId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_NotificationRecipientViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "pushNotificationRegistrationId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "channel": { + "$ref": "#/components/schemas/Core_Model_NotificationChannelType" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_NotificationStatusType" + }, + "error": { + "type": "string", + "nullable": true + }, + "isViewed": { + "type": "boolean" + }, + "retryCount": { + "type": "integer", + "format": "int32" + }, + "person": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + }, + "mergeVariableReplacements": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_NotificationResultViewModel": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "list": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NotificationViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_NotificationSenderContactViewModel": { + "type": "object", + "properties": { + "senderIdentifier": { + "type": "string", + "nullable": true + }, + "senderName": { + "type": "string", + "nullable": true + }, + "replyIdentifier": { + "type": "string", + "nullable": true + }, + "reportPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ccToSender": { + "type": "boolean" + }, + "person": { + "$ref": "#/components/schemas/Core_PersonLiteViewModel" + } + }, + "additionalProperties": false + }, + "Core_NotificationViewModel": { + "required": [ + "body", + "sourceId", + "summary" + ], + "type": "object", + "properties": { + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceId": { + "type": "integer", + "format": "int32" + }, + "sourceId2": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceId3": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "groupId": { + "type": "string", + "nullable": true + }, + "sourceType": { + "$ref": "#/components/schemas/Core_Model_NotificationSourceType" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "label": { + "$ref": "#/components/schemas/Core_Model_NotificationLabelType" + }, + "payload": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NotificationRecipientViewModel" + }, + "nullable": true + }, + "senderContact": { + "$ref": "#/components/schemas/Core_NotificationSenderContactViewModel" + }, + "allFailed": { + "type": "boolean" + }, + "allSkipped": { + "type": "boolean" + }, + "category": { + "$ref": "#/components/schemas/Core_Model_NotificationSourceTypeCategory" + } + }, + "additionalProperties": false + }, + "Core_OccurrenceViewModel": { + "required": [ + "duration", + "startTime" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "scheduleSequenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string" + }, + "duration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "startDateTime": { + "type": "string", + "format": "date-time" + }, + "endDateTime": { + "type": "string", + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_OccurrenceStatus" + }, + "newDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "newStartTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string", + "nullable": true + }, + "newDuration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string", + "nullable": true + }, + "actualDate": { + "type": "string", + "format": "date-time" + }, + "actualStartDateTime": { + "type": "string", + "format": "date-time" + }, + "actualDuration": { + "type": "string", + "nullable": true + }, + "isOverloaded": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_OccurrenceViewModel_Core": { + "required": [ + "duration", + "startTime" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "scheduleSequenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string" + }, + "duration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "startDateTime": { + "type": "string", + "format": "date-time" + }, + "endDateTime": { + "type": "string", + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_OccurrenceStatus" + }, + "newDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "newStartTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string", + "nullable": true + }, + "newDuration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string", + "nullable": true + }, + "actualDate": { + "type": "string", + "format": "date-time" + }, + "actualStartDateTime": { + "type": "string", + "format": "date-time" + }, + "actualDuration": { + "type": "string", + "nullable": true + }, + "isOverloaded": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_OccurrenceViewModel_Core_V2": { + "required": [ + "date", + "duration", + "startTime" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "scheduleSequenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_OccurrenceStatus" + }, + "newDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "newStartTime": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "newDuration": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "isOverloaded": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_PersonAddressViewModel": { + "required": [ + "address1", + "city", + "countryAlpha3" + ], + "type": "object", + "properties": { + "address1": { + "type": "string" + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string" + }, + "region": { + "type": "string", + "nullable": true + }, + "regionCode": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "countryAlpha2": { + "type": "string", + "nullable": true + }, + "countryAlpha3": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_PersonAgreementDetailViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "agreement": { + "$ref": "#/components/schemas/Core_AgreementViewModel" + }, + "agreeDate": { + "type": "string", + "format": "date-time" + }, + "revokeDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isRevoked": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_PersonAgreementLiteViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "agreement": { + "$ref": "#/components/schemas/Core_AgreementLiteViewModel" + }, + "agreeDate": { + "type": "string", + "format": "date-time" + }, + "revokeDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isRevoked": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_PersonAgreementRequestViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "agreementId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_PersonAndMilestoneIdsViewModel": { + "type": "object", + "properties": { + "personIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "milestoneIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonBasicViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "emailVerifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isEmailVerified": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_PersonByIdRequestViewModel": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "resolvePreviouslyMergedRecords": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_PersonContactPreferenceDtoViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "isDeceased": { + "type": "boolean" + }, + "doNotMail": { + "type": "boolean", + "nullable": true + }, + "doNotText": { + "type": "boolean", + "nullable": true + }, + "doNotEmail": { + "type": "boolean", + "nullable": true + }, + "doNotContact": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonContactPreferenceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "preferredMethod": { + "type": "string", + "nullable": true + }, + "doNotMail": { + "type": "boolean" + }, + "doNotPhone": { + "type": "boolean" + }, + "doNotText": { + "type": "boolean" + }, + "doNotEmail": { + "type": "boolean" + }, + "doNotContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_PersonDetailsLiteViewModel": { + "required": [ + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + }, + "nullable": true + }, + "age": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allergies": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "contactPreferences": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + }, + "deceasedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "departmentChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentChurchEntityName": { + "type": "string", + "nullable": true + }, + "departmentId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentName": { + "type": "string", + "nullable": true + }, + "disengagementReason": { + "type": "string", + "nullable": true + }, + "emails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + }, + "nullable": true + }, + "emergencyContacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmergencyContactViewModel" + }, + "nullable": true + }, + "firstContact": { + "$ref": "#/components/schemas/Core_PersonMilestoneDateLiteViewModel" + }, + "firstName": { + "type": "string" + }, + "fullName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "gradeLevel": { + "$ref": "#/components/schemas/Core_Model_GradeLevel" + }, + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isAdult": { + "type": "boolean", + "nullable": true + }, + "isChild": { + "type": "boolean", + "nullable": true + }, + "isStudent": { + "type": "boolean", + "nullable": true + }, + "lastName": { + "type": "string" + }, + "maritalStatus": { + "type": "string", + "nullable": true + }, + "maritalStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "membershipStatus": { + "type": "string", + "nullable": true + }, + "membershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + }, + "nullable": true + }, + "modifiedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "occupations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + }, + "nullable": true + }, + "phones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + }, + "nullable": true + }, + "preferredServiceEventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "profilePhotoUrl": { + "type": "string", + "nullable": true + }, + "profilePictureUrl": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonDocumentViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "filename": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "fileTitle": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonEmailViewModel": { + "required": [ + "email" + ], + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_PersonEmergencyContactViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "emergencyContactId": { + "type": "integer", + "format": "int32" + }, + "isPrimary": { + "type": "boolean" + }, + "emergencyContactMembershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "emergencyContactMembershipStatus": { + "type": "string", + "nullable": true + }, + "emergencyContactBirthDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "emergencyContactAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "emergencyContactRelationshipName": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + }, + "emergencyContactPerson": { + "$ref": "#/components/schemas/Core_Model_PersonBasic" + }, + "emergencyContactEmails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonEmail" + }, + "nullable": true + }, + "emergencyContactPhones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_PersonPhone" + }, + "nullable": true + }, + "emergencyContactRelationship": { + "$ref": "#/components/schemas/Core_Model_PersonRelationship" + }, + "emergencyContactPreference": { + "$ref": "#/components/schemas/Core_Model_PersonContactPreference" + } + }, + "additionalProperties": false + }, + "Core_PersonLiteViewModel": { + "required": [ + "email", + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "pattern": "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:|\\\\)+)\\])", + "type": "string" + }, + "emailVerifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isEmailVerified": { + "type": "boolean" + }, + "sourceClientId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonMilestoneDateLiteViewModel": { + "type": "object", + "properties": { + "date": { + "type": "integer", + "format": "int64" + }, + "location": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonMilestoneDateViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "integer", + "format": "int64" + }, + "location": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "document": { + "$ref": "#/components/schemas/Core_PersonDocumentViewModel" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonDocumentViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonMilestoneViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "category": { + "$ref": "#/components/schemas/Core_Model_MilestoneCategory" + }, + "uiOrder": { + "type": "integer", + "format": "int32" + }, + "dates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonMilestoneDateViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonNoteSearchResultsViewModel": { + "type": "object", + "properties": { + "hasPinnedNotes": { + "type": "boolean" + }, + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_NoteViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonOccupationViewModel": { + "required": [ + "title" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "typeId": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "category": { + "type": "string", + "nullable": true + }, + "company": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string" + }, + "isPrimary": { + "type": "boolean" + }, + "isStaff": { + "type": "boolean" + }, + "departmentId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentName": { + "type": "string", + "nullable": true + }, + "departmentChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentChurchEntityName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonPhoneViewModel": { + "required": [ + "phoneNumber" + ], + "type": "object", + "properties": { + "phoneTypeId": { + "type": "integer", + "format": "int32" + }, + "phoneType": { + "type": "string", + "nullable": true + }, + "phoneNumber": { + "maxLength": 20, + "minLength": 0, + "type": "string", + "format": "tel" + }, + "isPublic": { + "type": "boolean" + }, + "displayPhoneNumber": { + "type": "string", + "nullable": true + }, + "countryCode": { + "type": "string", + "nullable": true + }, + "extension": { + "maxLength": 7, + "minLength": 0, + "pattern": "\\d*", + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_PersonPublicContactViewModel": { + "type": "object", + "properties": { + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonSecurityRoleLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "scope": { + "$ref": "#/components/schemas/Core_Model_SecurityScope" + } + }, + "additionalProperties": false + }, + "Core_PersonSecuritySortaLiteViewModel": { + "type": "object", + "properties": { + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "photoUrl": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "fullName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonSecurityUltraLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "fullName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonServingOpportunityEligibilityViewModel": { + "type": "object", + "properties": { + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "eligibilityInfo": { + "$ref": "#/components/schemas/Core_Model_EligibilityInfo" + }, + "settings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunitySettingsDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PersonViewModel": { + "required": [ + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonAddressViewModel" + }, + "nullable": true + }, + "age": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allergies": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "cellPhone": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "deceasedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "departmentChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentChurchEntityName": { + "type": "string", + "nullable": true + }, + "departmentId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentName": { + "type": "string", + "nullable": true + }, + "disengagementReason": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "emails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonEmailViewModel" + }, + "nullable": true + }, + "firstContact": { + "$ref": "#/components/schemas/Core_PersonMilestoneDateLiteViewModel" + }, + "firstName": { + "type": "string" + }, + "fullName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "gradeLevel": { + "$ref": "#/components/schemas/Core_Model_GradeLevel" + }, + "homePhone": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isAdult": { + "type": "boolean", + "nullable": true + }, + "isChild": { + "type": "boolean", + "nullable": true + }, + "isStudent": { + "type": "boolean", + "nullable": true + }, + "lastName": { + "type": "string" + }, + "maritalStatus": { + "type": "string", + "nullable": true + }, + "maritalStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "membershipStatus": { + "type": "string", + "nullable": true + }, + "membershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonMilestoneViewModel" + }, + "nullable": true + }, + "modifiedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "occupations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonOccupationViewModel" + }, + "nullable": true + }, + "phones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_PersonPhoneViewModel" + }, + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "preferredServiceEventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "primaryPhoneType": { + "type": "string", + "nullable": true + }, + "profilePhotoUrl": { + "type": "string", + "nullable": true + }, + "profilePictureUrl": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "workPhone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PhoneNumberViewModel": { + "type": "object", + "properties": { + "countryCode": { + "type": "string", + "nullable": true + }, + "displayPhoneNumber": { + "type": "string", + "nullable": true + }, + "phoneNumberURI": { + "type": "string", + "nullable": true + }, + "extension": { + "type": "string", + "nullable": true + }, + "isValid": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false + }, + "Core_PublicContactsViewModel": { + "type": "object", + "properties": { + "emailId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "phoneId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PublicOccurrenceRequestViewModel_Core": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_PublicOccurrenceViewModelWithScheduleId_Core_V2": { + "type": "object", + "properties": { + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "localStartDateTime": { + "type": "string", + "format": "date-time" + }, + "localEndDateTime": { + "type": "string", + "format": "date-time" + }, + "utcStartDateTime": { + "type": "string", + "format": "date-time" + }, + "utcEndDateTime": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Core_QuestionAnswerChoiceViewModel": { + "required": [ + "label" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "questionId": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_QuestionReclassificationRequestViewModel": { + "type": "object", + "properties": { + "questionId": { + "type": "integer", + "format": "int32" + }, + "newClassification": { + "$ref": "#/components/schemas/Core_Model_QuestionClassification" + } + }, + "additionalProperties": false + }, + "Core_QuestionSourceViewModel": { + "required": [ + "title" + ], + "type": "object", + "properties": { + "questionId": { + "type": "integer", + "format": "int32" + }, + "answerSourceId": { + "type": "integer", + "format": "int32" + }, + "answerSource": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_ResponseCardFieldChoiceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "parentFieldId": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string", + "nullable": true + }, + "labelPublic": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_ResponseCardFieldInfoViewModel": { + "type": "object", + "properties": { + "fieldId": { + "type": "integer", + "format": "int32" + }, + "fieldPredecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "fieldLabel": { + "type": "string", + "nullable": true + }, + "fieldType": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "subFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "subFieldPredecessorId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "subFieldLabel": { + "type": "string", + "nullable": true + }, + "sectionTitle": { + "type": "string", + "nullable": true + }, + "fieldChoices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ResponseCardFieldChoiceViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ScheduleSequenceViewModel_Core": { + "required": [ + "duration", + "startTime", + "timeZone" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "timeZone": { + "type": "string" + }, + "isRecurring": { + "type": "boolean" + }, + "recurrenceFrequencyId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "recurrenceFrequency": { + "type": "string", + "nullable": true + }, + "dayOfWeek": { + "type": "integer", + "format": "int32" + }, + "startTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string" + }, + "duration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string" + }, + "monthEnabled": { + "type": "array", + "items": { + "type": "boolean" + }, + "nullable": true + }, + "interval": { + "maximum": 100, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "canBeChanged": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ScheduleSequenceViewModel_Core_V2": { + "required": [ + "duration", + "startTime", + "timeZone" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "timeZone": { + "type": "string" + }, + "isRecurring": { + "type": "boolean" + }, + "recurrenceFrequencyId": { + "type": "integer", + "format": "int32" + }, + "recurrenceFrequency": { + "type": "string", + "nullable": true + }, + "dayOfWeek": { + "$ref": "#/components/schemas/Core_App_IsoDayOfWeek" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "monthEnabled": { + "type": "array", + "items": { + "type": "boolean" + }, + "nullable": true + }, + "interval": { + "maximum": 100, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "canBeChanged": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ScheduleVenueMetricViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "venueId": { + "type": "integer", + "format": "int32" + }, + "venueLocationName": { + "type": "string", + "nullable": true + }, + "metricCategoryId": { + "type": "integer", + "format": "int32" + }, + "metricCategory": { + "type": "string", + "nullable": true + }, + "metricAgeGroupId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "metricAgeGroup": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ScheduleViewModel_Core": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "scheduleEntityTypeId": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "occurrencesCount": { + "maximum": 10000, + "minimum": 2, + "type": "integer", + "format": "int32", + "nullable": true + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "custom": { + "type": "boolean" + }, + "startDayOfWeek": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sequences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ScheduleSequenceViewModel_Core" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_SearchResultsViewModel_AnnouncementViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_AnnouncementViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_SearchResultsViewModel_ConnectionFormEntryViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ConnectionFormEntryViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_SearchResultsViewModel_SeriesSearchViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_SeriesSearchViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_SearchResultsViewModel_SeriesViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_SeriesViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_SearchResultsViewModel_ServiceTemplateViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_ServiceTemplateViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_SearchResultsViewModel_SongViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_App_SongViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityContactViewModel": { + "type": "object", + "properties": { + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "emailOverride": { + "type": "string", + "nullable": true + }, + "phoneOverride": { + "type": "string", + "nullable": true + }, + "personFirstName": { + "type": "string", + "nullable": true + }, + "personLastName": { + "type": "string", + "nullable": true + }, + "personEmail": { + "type": "string", + "nullable": true + }, + "personPhoneNumber": { + "type": "string", + "nullable": true + }, + "personPhoneNumberType": { + "$ref": "#/components/schemas/Core_Model_PhoneType" + }, + "personPhoneNumberTypeName": { + "type": "string", + "nullable": true + }, + "personGender": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityOccurrenceCapacityViewModel": { + "required": [ + "capacity" + ], + "type": "object", + "properties": { + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "capacity": { + "maximum": 500, + "minimum": 1, + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityScheduleCommitmentRequestViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "commitmentType": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityScheduleCommitmentType" + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityScheduledVolunteersViewModel": { + "type": "object", + "properties": { + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "grandTotal": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "total": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "volunteers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunitySettingsViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "quantityNeeded": { + "type": "integer", + "format": "int32" + }, + "minAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAge": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "disabledCommunicationTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityCommunicationType" + }, + "nullable": true + }, + "milestoneIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "eventRelativeData": { + "$ref": "#/components/schemas/Core_Model_EventRelativeDataClass" + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityVenueViewModel": { + "type": "object", + "properties": { + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "isPrivate": { + "type": "boolean" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "venue": { + "$ref": "#/components/schemas/Core_VenueViewModel" + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityViewModel": { + "required": [ + "churchEntityId", + "ministryId", + "volunteerSettings" + ], + "type": "object", + "properties": { + "advertiseOnWeb": { + "type": "boolean", + "nullable": true, + "readOnly": true + }, + "communicationTemplates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityCommunicationTemplate" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 250, + "minLength": 0, + "type": "string", + "nullable": true + }, + "eventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "eventName": { + "type": "string", + "nullable": true + }, + "eventUrl": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "shortDescription": { + "maxLength": 140, + "minLength": 0, + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityStatus" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ministry": { + "$ref": "#/components/schemas/Core_MinistryViewModel" + }, + "venue": { + "$ref": "#/components/schemas/Core_VenueViewModel" + }, + "venueData": { + "$ref": "#/components/schemas/Core_VenueDataViewModel" + }, + "venueId": { + "type": "integer", + "format": "int32", + "nullable": true, + "deprecated": true + }, + "contacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityContactViewModel" + }, + "nullable": true + }, + "tagList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_TagViewModel" + }, + "nullable": true + }, + "schedule": { + "$ref": "#/components/schemas/Core_ScheduleViewModel_Core" + }, + "settings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunitySettingsViewModel" + }, + "nullable": true + }, + "occurrence": { + "$ref": "#/components/schemas/Core_OccurrenceViewModel_Core" + }, + "statistics": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityStatistics" + }, + "isClosedBySchedule": { + "type": "boolean" + }, + "isDraft": { + "type": "boolean" + }, + "isPublic": { + "type": "boolean", + "deprecated": true + }, + "isRecurring": { + "type": "boolean", + "nullable": true + }, + "isSelfCheckInEnabled": { + "type": "boolean" + }, + "verse": { + "type": "string", + "nullable": true + }, + "churchEntityAbbreviation": { + "type": "string", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "volunteerSettings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerSettingsViewModel" + } + }, + "publishType": { + "$ref": "#/components/schemas/Core_Model_PublishType" + }, + "publishTypeId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "publishedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "publishedChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tenantUrl": { + "type": "string", + "nullable": true + }, + "webHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "thumbnail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "eligibility": { + "$ref": "#/components/schemas/Core_EligibilityInfoViewModel" + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityVolunteerExcludedOccurrenceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "occurrenceDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityVolunteerScheduleCommitmentResponseViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "commitmentType": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityScheduleCommitmentType" + }, + "startDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "exclusions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVolunteerExcludedOccurrenceViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityVolunteerSettingsViewModel": { + "type": "object", + "properties": { + "signUpOptionId": { + "type": "integer", + "format": "int32" + }, + "signUpOptionName": { + "type": "string", + "nullable": true + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "signupAsAddToInterestedIfMissingRequirements": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_ServingOpportunityVolunteerViewModel": { + "required": [ + "personId", + "servingOpportunityId" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "commitmentType": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityScheduleCommitmentType" + }, + "status": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerStatus" + }, + "scheduleType": { + "$ref": "#/components/schemas/Core_Model_ServingOpportunityVolunteerScheduleType" + }, + "scheduleTypeId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "statusName": { + "type": "string", + "nullable": true + }, + "sourceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceName": { + "type": "string", + "nullable": true + }, + "servingOpportunitySettingsId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isMinistryMember": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + }, + "minutesServed": { + "type": "integer", + "format": "int32" + }, + "person": { + "$ref": "#/components/schemas/Core_PersonViewModel" + }, + "contactPreferences": { + "$ref": "#/components/schemas/Core_PersonContactPreferenceViewModel" + }, + "eligibility": { + "$ref": "#/components/schemas/Core_EligibilityInfoViewModel" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_MinistryGroupLiteViewModel" + }, + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDate": { + "type": "string", + "nullable": true + }, + "dateAdded": { + "type": "string", + "format": "date-time" + }, + "smsEligibility": { + "$ref": "#/components/schemas/Core_App_SmsEligibilityViewModel" + } + }, + "additionalProperties": false + }, + "Core_SmsViewModel": { + "required": [ + "message" + ], + "type": "object", + "properties": { + "recipientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "message": { + "maxLength": 160, + "type": "string" + } + }, + "additionalProperties": false + }, + "Core_SubVenueViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "venueId": { + "type": "integer", + "format": "int32" + }, + "subVenueTypeId": { + "type": "integer", + "format": "int32" + }, + "subVenueType": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_TagViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "categoryId": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "type": { + "type": "integer", + "format": "int32" + }, + "slug": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Core_TeamBasicViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_TemplateViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "type": { + "$ref": "#/components/schemas/Core_Model_TemplateType" + }, + "format": { + "$ref": "#/components/schemas/Core_Model_TemplateFormat" + }, + "name": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "isSystem": { + "type": "boolean" + }, + "isRazor": { + "type": "boolean" + }, + "designData": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_UpdateSearchIndexRequestViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "model": { + "type": "string", + "nullable": true + }, + "operation": { + "$ref": "#/components/schemas/Core_App_IndexOperation" + } + }, + "additionalProperties": false + }, + "Core_VenueAddressViewModel": { + "required": [ + "address1", + "city" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "address1": { + "type": "string" + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string" + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_VenueDataViewModel": { + "type": "object", + "properties": { + "virtualUrl": { + "type": "string", + "nullable": true + }, + "offCampusVenue": { + "$ref": "#/components/schemas/Core_ServingOpportunityVenueViewModel" + }, + "onCampusVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_ServingOpportunityVenueViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Core_VenueViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number", + "format": "double", + "nullable": true + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number", + "format": "double", + "nullable": true + }, + "venueAddressId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "hasAssociation": { + "type": "boolean", + "nullable": true + }, + "venueAddress": { + "$ref": "#/components/schemas/Core_VenueAddressViewModel" + }, + "venueCapacity": { + "type": "integer", + "format": "int32" + }, + "totalVenueCapacity": { + "type": "integer", + "format": "int32" + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Core_SubVenueViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + } + } + } +} diff --git a/test/spec/saddlebackEventApi.json b/test/spec/saddlebackEventApi.json new file mode 100644 index 000000000..9535eb234 --- /dev/null +++ b/test/spec/saddlebackEventApi.json @@ -0,0 +1,24726 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Event WebApp API", + "version": "all" + }, + "paths": { + "/api/accommodation/{id}": { + "get": { + "tags": [ + "Accommodation" + ], + "summary": "Gets accommodation by ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Read Event, Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nREAD Access to Accommodations.", + "operationId": "GetAccommodationById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Accommodation ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Accommodation." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + }, + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "Accommodation" + ], + "summary": "Updates Accommodation", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Accommodation.", + "operationId": "UpdateAccommodation", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Accommodation ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Accommodation Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Accommodation." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Accommodation" + ], + "summary": "Deletes Accommodation", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Accommodation.", + "operationId": "DeleteAccommodation", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Accommodation ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Accommodation was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "409": { + "description": "Accommodation is in use." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + } + }, + "/api/accommodation": { + "get": { + "tags": [ + "Accommodation" + ], + "summary": "Gets all Accommodations with pagination", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Read Event, Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nREAD Access to Accommodations.", + "operationId": "GetAllAccommodations", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Page size", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page number", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Accommodation list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + }, + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "Accommodation" + ], + "summary": "Creates Accommodation", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Accommodation.", + "operationId": "CreateAccommodation", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Accommodation Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Accommodation." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + } + }, + "/api/bootstrap": { + "get": { + "tags": [ + "Bootstrap" + ], + "operationId": "GetBootstrap", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/enumerations": { + "get": { + "tags": [ + "Bootstrap" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetEnumerations", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/event/{id}": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Event by ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:internal-systems, hc:event-get
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events or Internal access", + "operationId": "GetEvent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "date", + "in": "query", + "description": "Date used for Event 'current' state. If null, the current date is used.", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems", + "hc:event-get" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + }, + "put": { + "tags": [ + "Event" + ], + "summary": "Updates Event", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "UpdateEvent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Updated Event Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + }, + "/api/event/{id}/lite": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets 'Event Lite' data by ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEventLite", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/lite": { + "post": { + "tags": [ + "Event" + ], + "summary": "Gets 'Event Lite' data for multiple Events by IDs", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD access for lite information about multiple Events\r\n\r\n**More Information:**
\r\nMostly intended for use cross-service RPC/REST SDK.", + "operationId": "GetLiteInfoForMultipleEvents", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Event IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns requested Events.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/schedule": { + "post": { + "tags": [ + "Event" + ], + "summary": "Gets 'Event Lite' data for multiple Events by Schedule ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:internal-systems, hc:event-get
\r\n
\r\n**Data Access:**
\r\nInternal systems access.", + "operationId": "GetEventsByScheduleId", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Schedule IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems", + "hc:event-get" + ] + } + ] + } + } + }, + "/api/event": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets filtered Events", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.\r\n\r\nSort order can be [\"name\"],[\"asc\" | \"desc\"]", + "operationId": "GetFilteredEvents", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Events.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "Event" + ], + "summary": "Creates Event", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Create Free Event, Create Paid Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "CreateEvent", + "parameters": [ + { + "name": "sourceEventId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Event Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Free Event" + ] + }, + { + "Permissions": [ + "Create Paid Event" + ] + } + ] + } + } + }, + "/api/event/{id}/for-search": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Event for search by ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEventForSearch", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/ministry-location": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Event by Minsitry Location", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Ministry Location.", + "operationId": "GetEventsByMinistryLocation", + "parameters": [ + { + "name": "ministryId", + "in": "query", + "description": "Minsitry ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Church Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event list.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/contact": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets contacts by Event IDs", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nInternal access.", + "operationId": "GetEventContactsIds", + "parameters": [ + { + "name": "eventIds", + "in": "query", + "description": "Comma separated Event IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Contact IDs.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/{id}/occurrence": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Occurrence of Event for the specific date-time", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEventOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Local date-time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Occurrence.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + }, + "put": { + "tags": [ + "Event" + ], + "summary": "Update Event Occurrence", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "UpdateEventOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Occurrence to update", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Event Occurrence was updated successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + }, + "400": { + "description": "Invalid occurrence data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event or occurrence not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + }, + "/api/event/church-entity-occurrence": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Event Occurrences for the specific church entity ID and date-time", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nInternal access only.", + "operationId": "GetEventOccurrencesForChurchEntity", + "parameters": [ + { + "name": "churchEnityId", + "in": "query", + "description": "Church entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Local date-time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Occurrence list.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event not found." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/for-search": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Events for search", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEventsForSearch", + "parameters": [ + { + "name": "lastId", + "in": "query", + "description": "Last event Id. All returnded events will have IDs greater than lastId", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "limit", + "in": "query", + "description": "Max record count", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Events.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/occurrences": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets filtered Event Occurrences", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.\r\n\r\n\r\nSort order can be [\"name\" | \"occurrence\" | \"date\"],[\"asc\" | \"desc\"]", + "operationId": "GetFilteredOccurrences", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Events with occurrences.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventDateViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventDateViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventDateViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/flat-occurrences": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets flat list of filtered Event Occurrences", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:internal-systems, hc:event-get
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events or Internal systems\r\n\r\n\r\nSort order can be [\"name\" | \"occurrence\"],[\"asc\" | \"desc\"]", + "operationId": "GetFlatFilteredOccurrences", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns Events with occurrences.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems", + "hc:event-get" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/series": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Filtered Event Series list", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events\r\n\r\n**More Info:**
\r\nSort order can be [\"date\"],[\"asc\" | \"desc\"]", + "operationId": "GetFilteredEventSeries", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Events with occurrences.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/{eventId}/occurrences": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets Occurrences for Event", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEventOccurrences", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "Start date for occurrences", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endDate", + "in": "query", + "description": "End date for occurrences", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns occurrence list.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/closed": { + "get": { + "tags": [ + "Event" + ], + "summary": "Get closed events", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to events", + "operationId": "GetFilteredClosed", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns found events.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/statistics": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets filtered Event statistics", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetFilteredEventSatistics", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "computeDetails", + "in": "query", + "description": "true to compute 'by date' details", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns statistcis.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventStatisticsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventStatisticsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventStatisticsViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/{id}/cancel": { + "put": { + "tags": [ + "Event" + ], + "summary": "Cancels Event", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Cancel Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "CloseEvent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID to cancel", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "unpublishTenant", + "in": "query", + "description": "true to unpublish from tenant website", + "schema": { + "type": "boolean" + } + }, + { + "name": "date", + "in": "query", + "description": "Cancel date or null for current date-time", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Event was cancelled successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Cancel Event" + ] + } + ] + } + } + }, + "/api/event/{id}/cancel/{occurrenceId}": { + "put": { + "tags": [ + "Event" + ], + "summary": "Cancels Event Occurrence", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Cancel Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "CloseEventOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Event Occurrence was cancelled successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Cancel Event" + ] + } + ] + } + } + }, + "/api/event/{id}/cancel-occurrence": { + "put": { + "tags": [ + "Event" + ], + "summary": "Cancels Event Occurrence by date/time", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Cancel Event
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "CloseEventOccurrenceByDateTime", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "Occurrence date-time in local time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Event Occurrence was cancelled successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Cancel Event" + ] + } + ] + } + } + }, + "/api/event/{id}/accommodation": { + "put": { + "tags": [ + "Event" + ], + "summary": "Upsert Accommodation for event", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "UpsertAccommodations", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Accommodation IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Accommodations were updated successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + }, + "/api/event/{id}/occurrence/venue": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets venues and sub-venues for event occurrence", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetVenuesOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Venue occurrence data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event or occurrence not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + }, + "put": { + "tags": [ + "Event" + ], + "summary": "Upserts venues and sub-venues for event occurrence", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "UpsertVenuesOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceDateTime", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Venues and sub-venues data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Venues and sub-venues were updated successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event or occurrence not found." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + }, + "/api/event/published-status": { + "post": { + "tags": [ + "Event" + ], + "summary": "Gets publication statuses for events", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access only", + "operationId": "GetEventPublishedStatuses", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Event IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns publication statuses.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VenuesOccurrenceViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event or occurrence not found." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/{id}/publish": { + "put": { + "tags": [ + "Event" + ], + "summary": "Publish/unpublish Event", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "PublishEvent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Publish data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventPublishDto" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventPublishDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventPublishDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventPublishDto" + } + } + } + }, + "responses": { + "200": { + "description": "Operstion completed sucessfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventPublishViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventPublishViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventPublishViewModel" + } + } + } + }, + "400": { + "description": "Invalid model.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + }, + "/api/event/{id}/serving-opportunity/email": { + "post": { + "tags": [ + "Event" + ], + "summary": "Send an Email to Serving Opportunity Contacts for opportunities attached to the Event", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendEmailAttachedServingOpportunityContacts", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityIds", + "in": "query", + "description": "Comma separated Serving Opportunity IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/notification": { + "get": { + "tags": [ + "Event" + ], + "summary": "Retrieves last notification results for event", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to events.", + "operationId": "GetLastNotificationResultsForEvent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "NotificationChannel", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "isCheckIn", + "in": "query", + "description": "True to return results for event check-in", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns last notification results for ministry location", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_NotificationResultViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_NotificationResultViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_NotificationResultViewModel" + } + } + } + }, + "403": { + "description": "Not authorized. Must have the required Permissions.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "404": { + "description": "Event not found.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + } + } + } + }, + "/api/event/{id}/web-header": { + "get": { + "tags": [ + "Event" + ], + "summary": "Retrieves Event web header category image", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nNo restrictions", + "operationId": "GetWebHeaderUrl", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "URL to Event web header image", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "Event or Event web header image not found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "Event" + ], + "summary": "Upsert Event web header image for existing event", + "description": "**Data Access:**
\r\nUpdate Access to Events", + "operationId": "UploadEventWebHeaderImage", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Event web header image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + } + } + }, + "404": { + "description": "Event not found" + } + } + } + }, + "/api/event/web-header": { + "post": { + "tags": [ + "Event" + ], + "summary": "Upsert Event web header image for event to be created", + "description": "**Data Access:**
\r\nCreate Access to Events", + "operationId": "UploadEventWebHeaderImage", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Event web header image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + } + } + } + } + } + }, + "/api/event/{id}/companion-app-header": { + "get": { + "tags": [ + "Event" + ], + "summary": "Retrieves Event Companion App header category image", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nNo restrictions", + "operationId": "GetCompanionAppHeaderUrl", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "URL to Event companion app header image", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "Event or Event companion app header image not found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/event/companion-app-header": { + "post": { + "tags": [ + "Event" + ], + "summary": "Upsert Event companion app header image for event to be created", + "description": "**Data Access:**
\r\nCreate Access to Events", + "operationId": "UploadEventCompanionAppHeaderImage", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Event companion app header image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + } + } + } + } + } + }, + "/api/event/{id}/thumbnail": { + "get": { + "tags": [ + "Event" + ], + "summary": "Retrieves Event Thumbnail category image", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nNo restrictions", + "operationId": "GetThumbnailUrl", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "URL to Event thumbnail image", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "Event or Event thumbnail image not found" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/event/thumbnail": { + "post": { + "tags": [ + "Event" + ], + "summary": "Upsert Event thumbnail image for event to be created", + "description": "**Data Access:**
\r\nCreate Access to Events", + "operationId": "UploadEventThumbnailImage", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "URL and name of Event thumbnail image", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_WebHeader" + } + } + } + } + } + } + }, + "/api/v2/event/flat-occurrences": { + "get": { + "tags": [ + "Event" + ], + "summary": "Gets flat list of filtered Event Occurrences", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:internal-systems, hc:event-get
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Events or Internal systems\r\n\r\n\r\nSort order can be [\"name\" | \"occurrence\"],[\"asc\" | \"desc\"]", + "operationId": "GetFlatFilteredOccurrences", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Invalid parameters.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + }, + "200": { + "description": "Returns Events with occurrences.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceResponseViewModel_V2" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceResponseViewModel_V2" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventOccurrenceResponseViewModel_V2" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems", + "hc:event-get" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/{id}/attendee/{attendeeId}": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Gets attendee by ID", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to events attendee.", + "operationId": "GetAttendeeById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "attendeeId", + "in": "path", + "description": "Attendee ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Attendee.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "put": { + "tags": [ + "EventAttendee" + ], + "summary": "Updates Attendee", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "UpdateAttendee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "attendeeId", + "in": "path", + "description": "Attendee ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Attendee.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/attendee": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Gets filtered attendee occurrences with pagination", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to events attendee.", + "operationId": "GetFiltered", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Attended", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsRegistered", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "idOnly", + "in": "query", + "description": "True to return person IDs only without filtering and pagination", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "checkInValidation", + "in": "query", + "description": "True to return check-in status for 'now'", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Attendee or Person ID list.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrencesViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrencesViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrencesViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Adds Attendee to the Event", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "AddAttendee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Attendee.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + }, + "delete": { + "tags": [ + "EventAttendee" + ], + "summary": "Deletes historic Attendees from Event", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.\r\n\r\nEither occurrenceId or from parameters should be set", + "operationId": "DeleteHistoricAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Attendee was deleted successfully" + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/historic-attendee": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Gets filtered historic attendees with pagination", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to events attendee.", + "operationId": "GetHistoric", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "idOnly", + "in": "query", + "description": "True to return person IDs only without filtering and pagination", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Attendee Persons or Person IDs.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_EventHistoricPersonsViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_EventHistoricPersonsViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_EventHistoricPersonsViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/historic-attendee/person/{personId}": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Gets historic attendee ids by for a given person id", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
", + "operationId": "GetEventHistoricAttendeeIdsByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns List of found Event Historic Attendee Ids for the given Person ID.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/{id}/attendee/attendance": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Gets filtered attendance occurrences with pagination", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to events attendee.", + "operationId": "GetAttendance", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Attended", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Attendances.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendanceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendanceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendanceViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{eventId}/attendee/statistics": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Get Attendee statistic for specific Occurrence", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Read Event, Manage Event Attendees
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetOccurrenceStatistics", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "id", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "date", + "in": "query", + "description": "Occurrence date", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "startTime", + "in": "query", + "description": "Occurrence start time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully, returns statistics.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventOccurrenceStatistics" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventOccurrenceStatistics" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventOccurrenceStatistics" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + }, + { + "Permissions": [ + "Manage Event Attendees" + ] + } + ] + } + } + }, + "/api/event/{id}/person-attendance": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Check person attendance for an Event", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal systems access only", + "operationId": "CheckAttendance", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID. If null, check for historic attendance is performed", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma separated Person IDs to check", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Attendee.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/{id}/attendee-occurrence": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Adds Attendee to the Event Occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "AddAttendeeOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Attendee.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + }, + "delete": { + "tags": [ + "EventAttendee" + ], + "summary": "Deletes Attendee(s) from Event Occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.\r\n\r\nEither occurrenceId or from parameters should be set", + "operationId": "DeleteAttendeeOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "from", + "in": "query", + "description": "Date from which attendee should be removed", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Attendee was deleted successfully" + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/attendee-occurrence/{attendeeOccurrenceId}": { + "put": { + "tags": [ + "EventAttendee" + ], + "summary": "Updates Attendee Occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "UpdateAttendeeOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "attendeeOccurrenceId", + "in": "path", + "description": "Attendee occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Attendee occurrence.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/attendee-occurrence/{attendeeOccurrenceId}/attended/{attended}": { + "put": { + "tags": [ + "EventAttendee" + ], + "summary": "Set Attended/Unattended state for Attendee Occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SetAttendance", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "attendeeOccurrenceId", + "in": "path", + "description": "Attendee occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "attended", + "in": "path", + "description": "Attended flag. Null means 'not set'", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Attendee occurrence.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/attendee-occurrence/attended": { + "put": { + "tags": [ + "EventAttendee" + ], + "summary": "Set Attended/Unattended state for Attendees in Occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SetAttendance", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Attended", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsRegistered", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "attendance", + "in": "query", + "description": "Attended flag. Null means 'not set'", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Attendee occurrence." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/attendee-occurrence/person/{personId}/attended": { + "put": { + "tags": [ + "EventAttendee" + ], + "summary": "Set Attended/Unattended state for Attendee", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SetAttendance", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Contains attendance status and a list of occurrences", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_SetAttendanceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_SetAttendanceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_SetAttendanceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_SetAttendanceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Attendee occurrence." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{eventId}/attendee/cancel": { + "post": { + "tags": [ + "EventAttendee" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "CancelEventRegistration", + "parameters": [ + { + "name": "eventId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventRegistrationCancellationRequestViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventRegistrationCancellationRequestViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventRegistrationCancellationRequestViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventRegistrationCancellationRequestViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/event/{id}/attendee-occurrence/ministry": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Add Attendee(s) to host ministry as interested", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "AddAttendeesToMinistryAsInterested", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Attended", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsRegistered", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Interested ministry member bulk data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Attendee was added tgo ministry successfully", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AddMinistryMemberResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AddMinistryMemberResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AddMinistryMemberResult" + } + } + } + }, + "400": { + "description": "Invalid filter data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event or occurrence not found." + } + } + } + }, + "/api/event/{id}/attendee/ministry": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Add Historic Attendee(s) to host ministry as interested", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "AddAttendeesToMinistryAsInterested", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Interested ministry member bulk data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_InterestedMinistryMemberBulkViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Attendee was added tgo ministry successfully", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AddMinistryMemberResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AddMinistryMemberResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AddMinistryMemberResult" + } + } + } + }, + "400": { + "description": "Invalid filter data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event not found." + } + } + } + }, + "/api/event/email-variables": { + "get": { + "tags": [ + "EventAttendee" + ], + "summary": "Get email variables", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nNo specific access", + "operationId": "GetEmailVariables", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/event/{id}/email": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Send an Email to Event attendees", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Attended", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsRegistered", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/attendee/email": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Send an Email to Event historic attendees", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendEmailToHistoricAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/email": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Send an Email to Event contacts", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendEmail", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "Event IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Email Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EmailViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/sms": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Send an SMS to Event attendees", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Attended", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsRegistered", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/attendee/sms": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Send an SMS to Event attendees", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendSmsToHistoricAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/sms": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Send an SMS to Event contacts", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendSms", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "Event IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/attachment": { + "post": { + "tags": [ + "EventAttendee" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Event, Manage Event Attendees
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nUploads the file to cloud storage (Amazon S3) where it can be viewed/downloaded by unauthenticated callers\r\nwith the URL (intended usage is to embed the URL to the file in an email in lieu of actually \"attaching\" the file).", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Manage Event Attendees" + ] + } + ] + } + } + }, + "/api/event/{id}/check-in/occurrence": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Get current check-in occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "GetCheckInOccurrence", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/check-in/labels": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Get check-in label data (incl. name, order, etc.)", + "description": "**Data Access:**
\r\nNo special access required", + "operationId": "GetCheckInLabelsData", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/event/{id}/check-in": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets attendee check-in records", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to events attendee or Room leadership", + "operationId": "GetAttendeeCheckInRecords", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + } + }, + { + "name": "Gender", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAttendeeBirthday", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFirstTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsSecondTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "FillRoomStatistics", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "fillContactPersons", + "in": "query", + "description": "True to fill Contact person details", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Attendee check-in records.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInsViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInsViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInsViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Check-in attendee", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "CheckInAttendee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "force", + "in": "query", + "description": "True to override capacity requirements", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee check-in data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + }, + "responses": { + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns Attendee check-in data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + } + } + } + }, + "/api/event/check-in": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets attendee check-in records", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal access only", + "operationId": "GetLatestAttendanceCheckedInEvent", + "parameters": [ + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventLiteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventLiteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventLiteViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/{id}/check-out": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Check-out attendee", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "CheckOutAttendee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee check-in data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Attendee check-in data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + }, + "400": { + "description": "Invalid check-out data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/check-in/occurrence/{occurrenceId}": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Check-in attendees for occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "CheckInAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "Sub venue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Person IDs to check-in", + "schema": { + "type": "string" + } + }, + { + "name": "checkInTime", + "in": "query", + "description": "Check-in UTC date-time", + "schema": { + "type": "string" + } + }, + { + "name": "force", + "in": "query", + "description": "True to override capacity requirements", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Operation completed successfully." + } + } + } + }, + "/api/event/{id}/check-in/child": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Check-in child attendees for occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "CheckInChildAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "force", + "in": "query", + "description": "True to override capacity requirements", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "List of children to check-in", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + } + }, + "responses": { + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Operation completed successfully." + } + } + } + }, + "/api/event/{id}/check-out/occurrence/{occurrenceId}": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Check-out attendees for occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "CheckOutAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + } + }, + { + "name": "Gender", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAttendeeBirthday", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFirstTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsSecondTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "FillRoomStatistics", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee data to check-out", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeCheckOutViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeCheckOutViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeCheckOutViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeCheckOutViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "400": { + "description": "Invalid check-out data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/check-in/transfer": { + "put": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Transfer attendee to another sub-venue", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "TransferAttendee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "force", + "in": "query", + "description": "True to override capacity requirements", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee check-in data (with new sub venue)", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + }, + "responses": { + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns Attendee check-in data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + } + } + } + }, + "/api/event/{id}/check-in/bulk-transfer": { + "put": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Transfer attendees to another sub-venue", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "TransferAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + } + }, + { + "name": "Gender", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAttendeeBirthday", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFirstTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsSecondTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "FillRoomStatistics", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "force", + "in": "query", + "description": "True to override capacity requirements", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Attendee data for transfer", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeTransferViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeTransferViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeTransferViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_BulkAttendeeTransferViewModel" + } + } + } + }, + "responses": { + "400": { + "description": "Invalid transfer data." + }, + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns Attendee check-in data.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + } + } + } + } + }, + "/api/event/check-in/person-attendance": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Check person attendance for an Event check-in", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal systems access only", + "operationId": "CheckAttendance", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Event ID. If null, the validation is performed for all events for 'now'", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID. If Event ID is null, it contains reference occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "Sub Venue ID. Should be null if Event ID is null", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma separated Person IDs to check", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Attendee.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/check-in/guardian/{guardianPersonId}/child": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets checked in children", + "description": "**Authorization Policy:**
\r\nRequires Person Record Ownership
\r\n
\r\n**Data Access:**
\r\nRecord ownership only", + "operationId": "GetCheckedInChildren", + "parameters": [ + { + "name": "Id", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "GenerateQrCode", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Base64", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "PixelsPerModule", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Size", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "EmbedLogo", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ForegroundColor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "BackgroundColor", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "LogoPercentage", + "in": "query", + "schema": { + "maximum": 100, + "minimum": 0, + "type": "integer", + "format": "int32" + } + }, + { + "name": "Transparent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "guardianPersonId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code PNG file.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInEventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInEventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInEventViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiresPersonRecordOwners": [ + { + "RecordOwners": [ + "guardianPersonId" + ] + } + ] + } + } + }, + "/api/event/{id}/check-in/occurrence/{occurrenceId}/notes": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets notes count for attendees", + "description": "**Data Access:**
\r\nCheck-in Data Read", + "operationId": "GetAttendeeCheckInNoteCounts", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person Unique IDs to get note counts", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "List of person note counts.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Dto_PersonNotesCount" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Dto_PersonNotesCount" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Dto_PersonNotesCount" + } + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/api/event/{id}/check-in/occurrence/{occurrenceId}/sms": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Send an SMS to Event attendeee for specific occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nManagement Access to Attendees.", + "operationId": "SendSmsToAttendees", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + } + }, + { + "name": "Gender", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAttendeeBirthday", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFirstTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsSecondTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "FillRoomStatistics", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/check-in/occurrence/{occurrenceId}/guardian/sms": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Send an SMS to Event attendeee guardians for specific occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nManagement Access to Children.", + "operationId": "SendSmsToGuardians", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + } + }, + { + "name": "Gender", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAttendeeBirthday", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFirstTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsSecondTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "FillRoomStatistics", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + } + } + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/check-in/occurrence/{occurrenceId}/all/sms": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Send SMS to all persons involved in checked-in event occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nManagement Access to Attendees and Children.", + "operationId": "SendSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_CheckInSmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_CheckInSmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_CheckInSmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_CheckInSmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + } + } + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/check-in/occurrence/{occurrenceId}/filtered/sms": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Send SMS to filtered persons involved in checked-in event occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nManagement Access to Attendees and Children.", + "operationId": "SendFilteredSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + } + }, + { + "name": "Gender", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAttendeeBirthday", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFirstTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsSecondTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "FillRoomStatistics", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatuses" + } + } + } + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/check-in/attendee/{id}/qr-code/png": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets person QR Code PNG image", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Attendees", + "operationId": "GetAttendeeQrCodePng", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Attendee check in ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "base64", + "in": "query", + "description": "True to return base64 data", + "schema": { + "type": "boolean" + } + }, + { + "name": "pixelsPerModule", + "in": "query", + "description": "Module size in pixels", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code PNG file." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + } + } + }, + "/api/event/{id}/check-in/attendee/qr-code/png": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets person QR Code PNG image", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Attendees", + "operationId": "GetAttendeeQrCodePng", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "SubVenue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "base64", + "in": "query", + "description": "True to return base64 data", + "schema": { + "type": "boolean" + } + }, + { + "name": "pixelsPerModule", + "in": "query", + "description": "Module size in pixels", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code PNG file." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + } + } + }, + "/api/event/check-in/attendee/{id}/qr-code/svg": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets person QR Code SVG image", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Attendees", + "operationId": "GetAttendeeQrCodeSvg", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Attendee check in ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pixelsPerModule", + "in": "query", + "description": "Module size in pixels", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code SVG file." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + } + } + }, + "/api/event/{id}/check-in/attendee/qr-code/svg": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets person QR Code SVG image", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Attendees", + "operationId": "GetAttendeeQrCodeSvg", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "SubVenue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pixelsPerModule", + "in": "query", + "description": "Module size in pixels", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "QR Code SVG file." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + } + } + }, + "/api/event/check-in/qr-code": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Gets person by QR Code string", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Attendees", + "operationId": "GetAttendeeOrPersonIdByQrCode", + "parameters": [ + { + "name": "qrCode", + "in": "query", + "description": "QR Code string", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Person data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + }, + "400": { + "description": "Invalid QR code." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + }, + "409": { + "description": "Unsupported QR code." + } + } + } + }, + "/api/event/{id}/check-in/attendee/print-label": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Print event attendee label", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Attendees", + "operationId": "PrintAttendeeLabel", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "SubVenue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Label was sent to printer." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + } + } + }, + "/api/event/{id}/check-in/attendee/filtered/print-label": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Print event attendee labels (filtered)", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to Attendees", + "operationId": "PrintAttendeeLabels", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + } + }, + { + "name": "Gender", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsAttendeeBirthday", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsFirstTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsSecondTime", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "FillRoomStatistics", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Label was sent to printer." + }, + "400": { + "description": "Invalid Person data." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Person not found." + } + } + } + }, + "/api/event/{id}/occurrence/{occurrenceId}/check-in/export/preview": { + "get": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Get check-in attendee export preview", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Attendees.", + "operationId": "GetDataExportPreview", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueIds", + "in": "query", + "description": "Comma separated sub venue IDs, can be null", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "Record count to preview", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + } + } + }, + "400": { + "description": "Validation errors" + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/{id}/occurrence/{occurrenceId}/check-in/export/request": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Start check-in attendee export", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Attendees.", + "operationId": "RequestDataExport", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueIds", + "in": "query", + "description": "Comma separated sub venue IDs, can be null", + "schema": { + "type": "string" + } + }, + { + "name": "format", + "in": "query", + "description": "Export file format", + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractFormat" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors" + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/v2/event/{id}/mine/check-in": { + "post": { + "tags": [ + "EventAttendeeCheckIn" + ], + "summary": "Check-in attendee (current user)", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "CheckInAttendee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "description": "Attendee check-in data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Attendee check-in data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + } + } + } + }, + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/person/{personId}/note": { + "get": { + "tags": [ + "EventAttendeeNote" + ], + "summary": "Gets attendee notes by person ID", + "description": "**Data Access:**
\r\nREAD Access to events attendee.", + "operationId": "GetAttendeeNotes", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "path", + "description": "Person ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Attendee notes.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "EventAttendeeNote" + ], + "summary": "Add attendee note", + "description": "**Data Access:**
\r\nWRITE Access to events attendee.", + "operationId": "AddAttendeeNote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "path", + "description": "Person ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Note", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Event Attendee note.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/person/{personId}/note/{noteId}": { + "put": { + "tags": [ + "EventAttendeeNote" + ], + "summary": "Update attendee note", + "description": "**Data Access:**
\r\nWRITE Access to events attendee.", + "operationId": "UpdateAttendeeNote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "path", + "description": "Person ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "noteId", + "in": "path", + "description": "Note ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Note", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Event Attendee note.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_NoteViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "delete": { + "tags": [ + "EventAttendeeNote" + ], + "summary": "Delete attendee note", + "description": "**Data Access:**
\r\nWRITE Access to events attendee.", + "operationId": "RemoveAttendeeNote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "path", + "description": "Person ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "noteId", + "in": "path", + "description": "Note ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Event Attendee note deleted successfully." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/eventbrite/organizer/{churchEntityId}": { + "get": { + "tags": [ + "Eventbrite" + ], + "summary": "Gets Eventbrite Organizer by Church entity ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n
\r\n**Data Access:**
\r\nAccess to Management of Global Application Settings.", + "operationId": "GetEventbriteOrganizerByChurchEntityId", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "description": "Church entity ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns Eventbrite Organizer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Eventbrite" + ], + "summary": "Deletes Eventbrite Organizer", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n
\r\n**Data Access:**
\r\nAccess to Management of Global Application Settings.", + "operationId": "DeleteEventbriteOrganizer", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Church Entity ID", + "content": { + "application/json-patch+json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "text/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/*+json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "responses": { + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found" + }, + "200": { + "description": "Eventbrite Organizer was deleted successfully." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/event/eventbrite/organizer/church-entity": { + "get": { + "tags": [ + "Eventbrite" + ], + "summary": "Gets all Eventbrite Organizers", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n
\r\n**Data Access:**
\r\nAccess to Management of Global Application Settings.", + "operationId": "GetAllEventbriteOrganizers", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "403": { + "description": "Not authorized." + }, + "200": { + "description": "Returns Eventbrite Organizers.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/event/eventbrite/organizer": { + "post": { + "tags": [ + "Eventbrite" + ], + "summary": "Creates Eventbrite Organizer", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n
\r\n**Data Access:**
\r\nAccess to Management of Global Application Settings.", + "operationId": "CreateEventbriteOrganizer", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Eventbrite Organizer Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + } + }, + "responses": { + "403": { + "description": "Not authorized." + }, + "400": { + "description": "Invalid model." + }, + "200": { + "description": "Returns Eventbrite Organizer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "Eventbrite" + ], + "summary": "Updates Eventbrite Organizer", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Global Application Settings
\r\n
\r\n**Data Access:**
\r\nAccess to Management of Global Application Settings.", + "operationId": "UpdateEventbriteOrganizer", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Eventbrite Organizer Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + } + }, + "responses": { + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Not Found" + }, + "400": { + "description": "Invalid model." + }, + "200": { + "description": "Returns Eventbrite Organizer.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventbriteOrganizerViewModel" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Global Application Settings" + ] + } + ] + } + } + }, + "/api/event-category/{id}": { + "get": { + "tags": [ + "EventCategory" + ], + "summary": "Gets event category by ID", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD Access to event categories.", + "operationId": "GetEventCategoryById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "EventCategory ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event category." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "put": { + "tags": [ + "EventCategory" + ], + "summary": "Updates Event category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to event category.", + "operationId": "UpdateEventCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Event category data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns event category." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "EventCategory" + ], + "summary": "Deletes Event category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to event category.", + "operationId": "DeleteEventCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Event category was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "409": { + "description": "Event category is in use." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + } + }, + "/api/event-category": { + "get": { + "tags": [ + "EventCategory" + ], + "summary": "Gets all event categories with pagination", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD Access to event categories.", + "operationId": "GetAllEventCategories", + "parameters": [ + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "IncludeEventCount", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event category list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "EventCategory" + ], + "summary": "Creates Event category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to event category.", + "operationId": "CreateEventCategory", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Event category Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_EventCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns event category." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + } + }, + "/api/event/{id}/occurrence/{occurrenceId}/export/preview": { + "get": { + "tags": [ + "EventExportAttendee" + ], + "summary": "Get occurrence attendee export preview", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Attendees
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Attendees.", + "operationId": "GetDataExportPreview", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "limit", + "in": "query", + "description": "Record count to preview", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + } + } + }, + "400": { + "description": "Validation errors" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + } + ] + } + } + }, + "/api/event/{id}/occurrence/{occurrenceId}/export/request": { + "post": { + "tags": [ + "EventExportAttendee" + ], + "summary": "Start occurrence attendee export", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Attendees
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Attendees.", + "operationId": "RequestDataExport", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "format", + "in": "query", + "description": "Export file format", + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractFormat" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + } + ] + } + } + }, + "/api/event/{id}/export/preview": { + "get": { + "tags": [ + "EventExportAttendee" + ], + "summary": "Get historic attendee export preview", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Attendees
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Attendees.", + "operationId": "GetDataExportPreview", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "limit", + "in": "query", + "description": "Record count to preview", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractPreviewViewModel" + } + } + } + }, + "400": { + "description": "Validation errors" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + } + ] + } + } + }, + "/api/event/{id}/export/request": { + "post": { + "tags": [ + "EventExportAttendee" + ], + "summary": "Start historic attendee export", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Attendees
\r\n
\r\n**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nREAD Access to Attendees.", + "operationId": "RequestDataExport", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "format", + "in": "query", + "description": "Export file format", + "schema": { + "$ref": "#/components/schemas/Event_App_DataExtractFormat" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Attendees" + ] + } + ] + } + } + }, + "/api/event/{id}/ministry-invite": { + "get": { + "tags": [ + "EventMinistryInvite" + ], + "summary": "Gets event ministry invites by event ID", + "description": "**Data Access:**
\r\nREAD Access to events.", + "operationId": "GetMinistryInvitesByEventId", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeNames", + "in": "query", + "description": "(optional - defaults to false)when true the Ministry Names will be included in the response", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Ministry Invites." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event not found." + } + } + }, + "post": { + "tags": [ + "EventMinistryInvite" + ], + "summary": "Upserts event ministry invites for event", + "description": "**Data Access:**
\r\nWRITE Access to events.", + "operationId": "UpsertMinistryInvites", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "List of ministry invites", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns Event Ministry Invite." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event not found." + } + } + }, + "put": { + "tags": [ + "EventMinistryInvite" + ], + "summary": "Add new event ministry invites for event", + "description": "**Data Access:**
\r\nWRITE Access to events.", + "operationId": "AddMinistryInvites", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "List of ministry invites", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventMinistryInviteViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns Event Ministry Invite." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event not found." + } + } + }, + "delete": { + "tags": [ + "EventMinistryInvite" + ], + "summary": "Delete event ministry invites from event", + "description": "**Data Access:**
\r\nWRITE Access to events.", + "operationId": "DeleteMinistryInvites", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "inviteIds", + "in": "query", + "description": "List of ministry invite IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Ministry Invite." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Event not found." + } + } + } + }, + "/api/event-public/{id}": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets Event by ID", + "description": "**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEvent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "privateId", + "in": "query", + "description": "Private ID (necessary to set for private events)", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "ExpandOptions", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandLimit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event-public/{id}/worship-service": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets a Worship Service by Event ID", + "description": "**Data Access:**
\r\nAnonymous", + "operationId": "GetWorshipServiceEventById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ExpandOptions", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandLimit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Worship Service Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel" + } + } + } + }, + "404": { + "description": "Not found." + }, + "400": { + "description": "Bad Request." + } + } + } + }, + "/api/event-public/signup": { + "post": { + "tags": [ + "EventPublic" + ], + "summary": "Register an Event attendee", + "description": "**Data Access:**
\r\nAnonymous", + "operationId": "RegisterEventAttendee", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Person/Event data to register", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventAttendeeRegistrationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventAttendeeRegistrationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventAttendeeRegistrationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_EventAttendeeRegistrationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Events occurrence." + }, + "400": { + "description": "Invalid incoming data" + }, + "409": { + "description": "Problems with person adding/selecting." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event-public/occurrences": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets published Event Occurrences", + "description": "**Data Access:**
\r\nAnonymous\r\n\r\nSort order can be [\"name\" | \"occurrence\"],[\"asc\" | \"desc\"]", + "operationId": "GetFilteredOccurrences", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Events with occurrences." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event-public/{eventId}/occurrences": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets published Event Occurrences for event", + "description": "**Data Access:**
\r\nAnonymous", + "operationId": "GetEventOccurrences", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "Start date", + "schema": { + "type": "string" + } + }, + { + "name": "endDate", + "in": "query", + "description": "End date", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns occurrences.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event-public/worship-service-occurrences": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets the worship service occurrences for the specified church entity id and date range", + "description": "**Data Access:**
\r\nAnonymous", + "operationId": "GetWorshipServiceOccurrence", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endDate", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns occurrences." + } + } + } + }, + "/api/event-public/worship-service-occurrences-campuses": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets the worship service occurrences by church entity ids and date range", + "description": "**Data Access:**
\r\nAnonymous", + "operationId": "GetWorshipServiceOccurrenceByChurchEntityIds", + "parameters": [ + { + "name": "churchEntityIds", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "startDate", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endDate", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns occurrences." + } + } + } + }, + "/api/v2/event-public/{id}": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets Event by ID", + "description": "**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEvent", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "privateId", + "in": "query", + "description": "Private ID (necessary to set for private events)", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "ExpandOptions", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandLimit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Returns Event.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel_V2" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel_V2" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventDetailsViewModel_V2" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/v2/event-public/{eventId}/occurrences": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets published Event Occurrences for event", + "description": "**Data Access:**
\r\nAnonymous", + "operationId": "GetEventOccurrences", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "Start date", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "endDate", + "in": "query", + "description": "End date", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "privateId", + "in": "query", + "description": "Private ID (necessary to set for private events)", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "usePublicViewModel", + "in": "query", + "description": "Boolean flag indicating whether response is an array of Saddleback.Cm.Services.Sdk.Event.ViewModels.Schedules.V2.PublicRegistrationOccurrenceViewModel (if True)\r\nor Saddleback.Cm.Services.Sdk.Event.ViewModels.Schedules.V2.OccurrencesViewModel (if False or omitted).\r\n** TEMPORARY:** This should go away ASAP and we should _ALWAYS_ return an array of Saddleback.Cm.Services.Sdk.Event.ViewModels.Schedules.V2.PublicRegistrationOccurrenceViewModel.", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Returns occurrences.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PublicRegistrationOccurrenceViewModel_V2" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PublicRegistrationOccurrenceViewModel_V2" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PublicRegistrationOccurrenceViewModel_V2" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/v2/event-public/worship-service-occurrences": { + "get": { + "tags": [ + "EventPublic" + ], + "summary": "Gets the worship service occurrences for the specified church entity id and date range", + "description": "**Data Access:**
\r\nAnonymous", + "operationId": "GetWorshipServiceOccurrence", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "endDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "responses": { + "200": { + "description": "Returns occurrences." + } + } + } + }, + "/api/event/{id}/check-in-room": { + "get": { + "tags": [ + "EventRoomCheckIn" + ], + "summary": "Gets check-in room records", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to events volunteer or Room leadership", + "operationId": "GetCheckInRooms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "date", + "in": "query", + "description": "Occurrence Date", + "schema": { + "type": "string" + } + }, + { + "name": "startTime", + "in": "query", + "description": "Occurrence Start Time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns check-in room records.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomsViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/check-in-room/{roomId}": { + "get": { + "tags": [ + "EventRoomCheckIn" + ], + "summary": "Gets check-in room records", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to events volunteer or Room leadership", + "operationId": "GetVolunteerCheckInRecords", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "roomId", + "in": "path", + "description": "Room (SubVenue) ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns check-in room records.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Sub venue not found." + } + } + } + }, + "/api/event/{id}/check-in-room/open": { + "post": { + "tags": [ + "EventRoomCheckIn" + ], + "summary": "Open the room", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events volunteer or Room leadership", + "operationId": "OpenRoom", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Open room parameters", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_OpenRoomViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_OpenRoomViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_OpenRoomViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_OpenRoomViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns check-in room records.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/check-in-room/close": { + "post": { + "tags": [ + "EventRoomCheckIn" + ], + "summary": "Close the room", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events volunteer or Room leadership", + "operationId": "CloseRoom", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "roomId", + "in": "query", + "description": "Room (SubVenue) ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns check-in room records.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + } + } + } + }, + "400": { + "description": "Invalid parameters." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/search-fields": { + "get": { + "tags": [ + "EventSearch" + ], + "summary": "Gets a list of fields that can be used in event search queries", + "description": "**Data Access:**
\r\nNone really ... ElasticSearch metadata.", + "operationId": "GetSearchFields", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of field names" + } + } + } + }, + "/api/event/search": { + "get": { + "tags": [ + "EventSearch" + ], + "summary": "Search events", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to events", + "operationId": "Search", + "parameters": [ + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "maximum": 15768000000, + "minimum": 0, + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "StartTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EndTime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + } + }, + { + "name": "OccurrenceStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "MyEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPaid", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CanRegister", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "AdvertiseOnWeb", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "CampusEvent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Recurring", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsPrivate", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "EventFilterStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Dto_EventFilterStatus" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of found events" + }, + "400": { + "description": "Invalid filter parameters" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/event/{eventId}/attendee/search": { + "get": { + "tags": [ + "EventSearch" + ], + "summary": "Search event attendees", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Person Search
\r\n
\r\n**Data Access:**
\r\nSEARCH Access to persons", + "operationId": "Search", + "parameters": [ + { + "name": "eventId", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Attended", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsRegistered", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "HomeCampusIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "q", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Page size for pagination/load more.", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page number for pagination/load more.", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "sort", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of found event attendees" + }, + "400": { + "description": "Invalid filter parameters" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Person Search" + ] + } + ] + } + } + }, + "/api/event/person": { + "get": { + "tags": [ + "EventSearch" + ], + "summary": "Gets Person's My Events", + "description": "", + "operationId": "GetPersonEvents", + "parameters": [ + { + "name": "startDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "endDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of person's my events", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_MyPersonEventResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_MyPersonEventResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_MyPersonEventResultsViewModel" + } + } + } + }, + "401": { + "description": "Not authorized", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_MyPersonEventResultsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_MyPersonEventResultsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_MyPersonEventResultsViewModel" + } + } + } + } + } + } + }, + "/api/event-public": { + "get": { + "tags": [ + "EventSearchPublic" + ], + "summary": "List events grouped by date", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD Access to events", + "operationId": "GetEventList", + "parameters": [ + { + "name": "UseRawQuery", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupByDay", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExcludedCategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TagIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DayIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Date", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "TimeRanges", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "HostMinistryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "IncludeAllOccurrences", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "ExpandOptions", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandLimit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns list of found events" + }, + "400": { + "description": "Invalid filter parameters" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/v2/event-public": { + "get": { + "tags": [ + "EventSearchPublic" + ], + "summary": "List events grouped by date", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD Access to events", + "operationId": "GetEventList", + "parameters": [ + { + "name": "UseRawQuery", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "GroupByDay", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "EventTypes", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "CategoryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TagIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TagAndMode", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Days", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "HostMinistryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "HostMinistryIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "VenueIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IncludeRelatedMinistriesEvents", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IncludeAllOccurrences", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "IsVirtual", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "StartDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "EndDate", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "TimeRanges", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "TimeZones", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PublishedChurchEntityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DefaultTimeZone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandOptions", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ExpandLimit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Returns list of found events" + }, + "400": { + "description": "Invalid filter parameters" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/event/reassign-person": { + "post": { + "tags": [ + "EventUtils" + ], + "summary": "Reassign person in all tables of event microservice", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nTrusted (internal) application access to events.", + "operationId": "ReassignPerson", + "parameters": [ + { + "name": "oldPersonId", + "in": "query", + "description": "Old person unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "newPersonId", + "in": "query", + "description": "New person unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Person was reassigned successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/{id}/volunteer-check-in": { + "get": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Gets volunteer check-in records", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to events volunteer or Room leadership", + "operationId": "GetVolunteerCheckInRecords", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityId", + "in": "query", + "description": "Serving Opportunity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "query", + "in": "query", + "description": "Search query", + "schema": { + "type": "string" + } + }, + { + "name": "personId", + "in": "query", + "description": "Person ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "SubVenue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "date", + "in": "query", + "description": "Date-time in UCT", + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "Check in status", + "schema": { + "$ref": "#/components/schemas/Event_Model_VolunteerCheckInStatus" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Volunteer check-in records.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Check-in volunteer", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events volunteer or Room leadership", + "operationId": "CheckInVolunteer", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Volunteer check-in data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Volunteer check-in data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + } + }, + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/volunteer-check-in/attendance": { + "get": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Get person IDs for volunteer attendance for an Event check-in", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nInternal systems access only", + "operationId": "GetEventCheckInVolunteerPersonIds", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueIds", + "in": "query", + "description": "Sub Venue IDs. Can be null", + "schema": { + "type": "string" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Comma separated Person IDs to check", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Event Attendee.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventAttendeeViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/{id}/available-volunteer": { + "get": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Gets volunteers for occurrence check-in", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nREAD Access to events volunteer or Room leadership", + "operationId": "GetVolunteersToCheckIn", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ServingOpportunityIds", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "OccurrenceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SubVenueId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PersonId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "AllRelatedVolunteers", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Volunteer check-in records.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_ServingOpportunityVolunteerRoomInfoViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_ServingOpportunityVolunteerRoomInfoViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_ServingOpportunityVolunteerRoomInfoViewModel" + } + } + } + } + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/volunteer-check-out": { + "post": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Check-out volunteer", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events volunteer or Room leadership", + "operationId": "CheckOutVolunteer", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Volunteer check-in data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Volunteer check-in data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + } + }, + "400": { + "description": "Invalid check-out data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/volunteer-check-in/transfer": { + "put": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Transfer volunteer to another sub-venue", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events attendee or Room leadership", + "operationId": "TransferVolunteer", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Volunteer check-in data (with new sub venue)", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Volunteer check-in data.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_VolunteerCheckInViewModel" + } + } + } + }, + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/volunteer-check-in/occurrence/{occurrenceId}": { + "post": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Check-in volunteers for occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events volunteer or Room leadership", + "operationId": "CheckInVolunteers", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityId", + "in": "query", + "description": "Serving Opportunity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "Sub venue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Person IDs to check-in", + "schema": { + "type": "string" + } + }, + { + "name": "checkInTime", + "in": "query", + "description": "Check-in UTC date-time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "400": { + "description": "Invalid check-in data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/volunteer-check-out/occurrence/{occurrenceId}": { + "post": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Check-out volunteers for occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n\r\n**Data Access:**
\r\nWRITE Access to events volunteer or Room leadership", + "operationId": "CheckOutVolunteers", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "servingOpportunityId", + "in": "query", + "description": "Serving Opportunity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueId", + "in": "query", + "description": "Sub venue ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personIds", + "in": "query", + "description": "Person IDs to check-out", + "schema": { + "type": "string" + } + }, + { + "name": "checkOutTime", + "in": "query", + "description": "Check-in UTC date-time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation completed successfully." + }, + "400": { + "description": "Invalid check-out data." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/event/{id}/volunteer-check-in/occurrence/{occurrenceId}/sms": { + "post": { + "tags": [ + "EventVolunteerCheckIn" + ], + "summary": "Send an SMS to Event volunteer for specific occurrence", + "description": "**Inline Authorization Checks:**
\r\nScoped permission validation is applied\r\n \r\n**Data Access:**
\r\nWRITE Access to Attendees.", + "operationId": "SendSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "subVenueIds", + "in": "query", + "description": "SubVenue IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "SMS Body", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_SmsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Validation errors", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + } + } + }, + "/api/event/worship-service/occurrences": { + "get": { + "tags": [ + "EventWorshipService" + ], + "summary": "Gets instantiated Occurrences with assigned Worship Service Category", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEventOccurrences", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "Church Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "excludeChurchEntityId", + "in": "query", + "description": "Church Entity ID to exclude", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "Start date for occurrences", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endDate", + "in": "query", + "description": "End date for occurrences", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "worshipServiceCategoryId", + "in": "query", + "description": "Filter by specific worship service category", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "onlyActive", + "in": "query", + "description": "true to return only active occurrences", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns occurrence list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/worship-service/occurrence/{occurrenceId}": { + "get": { + "tags": [ + "EventWorshipService" + ], + "summary": "Gets Occurrence with Worship Service Category for a single Occurrence by ID", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetEventOccurrence", + "parameters": [ + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/event/worship-service/person/{personId}/most-commonly-attended": { + "get": { + "tags": [ + "EventWorshipService" + ], + "summary": "Gets most commonly attended service for person", + "description": "**Authorization Policy:**
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to people.", + "operationId": "GetMostCommonlyAttendedServices", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "PersonId", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_EventViewModel" + } + } + } + } + }, + "x-hc-security": { + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ] + } + ] + } + } + }, + "/api/event/worship-service/most-commonly-attended": { + "get": { + "tags": [ + "EventWorshipService" + ], + "summary": "Gets most commonly attended service for persons", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Personal Data
\r\n
\r\n**Data Access:**
\r\nREAD Access to people.", + "operationId": "GetMostCommonlyAttendedServices", + "parameters": [ + { + "name": "personIds", + "in": "query", + "description": "PersonIds", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventPersonViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventPersonViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventPersonViewModel" + } + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Personal Data" + ] + } + ] + } + } + }, + "/api/event/worship-service/category": { + "put": { + "tags": [ + "EventWorshipService" + ], + "summary": "Assigns Worship Service Category to specific Occurrence", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Update Event
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Events.", + "operationId": "AssignCategoryToOccurrence", + "parameters": [ + { + "name": "worshipServiceCategoryId", + "in": "query", + "description": "Worship Service Category ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Occurrence", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Completed successfully." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + }, + "get": { + "tags": [ + "EventWorshipService" + ], + "summary": "Get Worship Service Category for specific Occurrence", + "description": "**Authorization Policy:**
\r\nAllowed With Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to Events.", + "operationId": "GetCategoryForOccurrence", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Occurrence ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "date", + "in": "query", + "description": "Occurrence date", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "startTime", + "in": "query", + "description": "Occurrence start time", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + } + }, + "/api/export/event-attendee": { + "get": { + "tags": [ + "ExportDownload" + ], + "description": "**Authorization Policy:**
\r\nRequires DataExtractType: EventAttendee
\r\n", + "operationId": "DownloadEventAttendeeExport", + "parameters": [ + { + "name": "File", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Token", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresDataExtractTypes": [ + { + "DataExtractTypes": [ + "EventAttendee" + ] + } + ] + } + } + }, + "/api/export/event-attendee-check-in": { + "get": { + "tags": [ + "ExportDownload" + ], + "description": "**Authorization Policy:**
\r\nRequires DataExtractType: CheckInEventAttendee
\r\n", + "operationId": "DownloadEventAttendeeCheckInExport", + "parameters": [ + { + "name": "File", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Format", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Token", + "in": "query", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiresDataExtractTypes": [ + { + "DataExtractTypes": [ + "CheckInEventAttendee" + ] + } + ] + } + } + }, + "/api/infrastructure/has-church-entity-association": { + "get": { + "tags": [ + "Infrastructure" + ], + "summary": "Check if events or schedules have church entity association", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nOnly for trusted applications.", + "operationId": "HasChurchEntityAssociation", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "Church Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns result value." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/infrastructure/which-venues-are-associated": { + "get": { + "tags": [ + "Infrastructure" + ], + "summary": "Check if events have venue association", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nOnly for trusted applications.", + "operationId": "WhichVenuesAreAssociated", + "parameters": [ + { + "name": "venueIds", + "in": "query", + "description": "Comma separated Venue ID list", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns result list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/infrastructure/which-subvenues-are-associated": { + "get": { + "tags": [ + "Infrastructure" + ], + "summary": "Check if events have subvenue association", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nOnly for trusted applications.", + "operationId": "WhichSubVenuesAreAssociated", + "parameters": [ + { + "name": "subVenueIds", + "in": "query", + "description": "Comma separated SubVenue ID list", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns result list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/infrastructure/occurrence-venue": { + "put": { + "tags": [ + "Infrastructure" + ], + "summary": "Get enabled venues in events for occurrence IDs", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nOnly for trusted applications.", + "operationId": "GetVenueIdsForOccurrences", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Occurrences list", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceVenueViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceVenueViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceVenueViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceVenueViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns result list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/infrastructure/schedule/{scheduleId}/venue": { + "get": { + "tags": [ + "Infrastructure" + ], + "summary": "Get enabled venues for an Event by Schedule ID", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nOnly for trusted applications.\r\n\r\n**More Info:**
\r\nProvides similar information as M:Saddleback.Cm.WebApp.Event.Controllers.InfrastructureController.GetVenueIdsForOccurrences(System.Collections.Generic.IEnumerable{Saddleback.Cm.Services.Sdk.Event.ViewModels.OccurrenceVenueViewModel})\r\nbut without specific Occurrences.", + "operationId": "GetVenueIdsForSchedule", + "parameters": [ + { + "name": "scheduleId", + "in": "path", + "description": "Schedule ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "date", + "in": "query", + "description": "Optional: Date/Time for which to check enabled venues. Defaults to now if ommitted.\r\n**IMPORTANT:** This Date/Time is presumed to be in UTC.", + "schema": { + "type": "string" + } + }, + { + "name": "includePastVenues", + "in": "query", + "description": "Boolean: Whether or not to include Venues even if the basis date is past the end date of the event/venue association.\r\nOptional; defaults to false (meaning only include venue associations if the query date is inside the venue association's start and end date range).", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns result list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/occurrence/{id}": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets Occurrence by ID", + "description": "**Data Access:**
\r\nREAD of Occurrence data. No special access requirements.", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Occurrence not found." + } + } + } + }, + "/api/occurrence/{id}/valid-edit-range": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Get Occurrence valid date-time range for edited value", + "description": "**Data Access:**
\r\nNo special access", + "operationId": "GetValidEditRangeById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_DateRangeViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_DateRangeViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_DateRangeViewModel" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Occurrence not found." + } + } + } + }, + "/api/occurrence/date": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets Occurrence of schedule by local date time", + "description": "**Data Access:**
\r\nREAD of Occurrence data. No special access requirements.", + "operationId": "GetOccurrenceByDate", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Date-time in local time OR UTC (depends on utc parameter)", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Schedule not found." + } + } + } + }, + "/api/occurrence/next": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets next Occurrence of schedule for specific date (in local time)", + "description": "**Data Access:**
\r\nREAD of Occurrence data. No special access requirements.", + "operationId": "GetNextOccurrence", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Date-time in local time OR UTC (depends on utc parameter)", + "schema": { + "type": "string" + } + }, + { + "name": "utc", + "in": "query", + "description": "true to use date-time as UTC", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Schedule not found." + } + } + } + }, + "/api/occurrence/next-current-previous": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets next, current, and previous (most recent) Occurrences of schedule for specific date (in local time)", + "description": "**Data Access:**
\r\nREAD of Occurrence data. No special access requirements.", + "operationId": "GetNextCurrentPreviousOccurrences", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Date-time in local time OR UTC (depends on utc parameter)", + "schema": { + "type": "string" + } + }, + { + "name": "utc", + "in": "query", + "description": "true to use date-time as UTC", + "schema": { + "type": "boolean" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrencesViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrencesViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrencesViewModel" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Schedule not found." + } + } + } + }, + "/api/occurrence": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Search Occurrences", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD of Occurrence data. Anonymous access is allowed as there is no sensitive data access involved and this endpoint is used for certain integrations.", + "operationId": "SearchOccurrences", + "parameters": [ + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleEntityTypeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Schedule not found." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/v2/occurrence/{id}": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets Occurrence by ID", + "description": "**Data Access:**
\r\nNo special access", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + } + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Occurrence not found." + } + } + } + }, + "/api/v2/occurrence/date": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets Occurrence of schedule by local date time", + "description": "**Data Access:**
\r\nREAD of Occurrence data. No special access requirements.", + "operationId": "GetOccurrenceByDate", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Date-time in local time OR UTC (depends on utc parameter)", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Schedule not found." + } + } + } + }, + "/api/v2/occurrence/next": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets next Occurrence of schedule for specific date (in local time)", + "description": "**Data Access:**
\r\nREAD of Occurrence data. No special access requirements.", + "operationId": "GetNextOccurrence", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Date-time in local time OR UTC (depends on utc parameter)", + "schema": { + "type": "string" + } + }, + { + "name": "utc", + "in": "query", + "description": "true to use date-time as UTC", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Schedule not found." + } + } + } + }, + "/api/v2/occurrence/list": { + "post": { + "tags": [ + "Occurrence" + ], + "summary": "Gets Occurrences by ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:internal-systems, hc:schedule-get
\r\n
\r\n**Data Access:**
\r\nInternal or ScheduleGet scope access", + "operationId": "GetOccurrencesByIds", + "requestBody": { + "description": "Occurrence IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + } + } + }, + "400": { + "description": "Invalid model.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems", + "hc:schedule-get" + ] + } + ] + } + } + }, + "/api/v2/occurrence/schedule/{id}": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets Occurrences by Schedule and Date Range", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:internal-systems, hc:schedule-get
\r\n
\r\n**Data Access:**
\r\nInternal or ScheduleGet scope access", + "operationId": "GetOccurrencesBySchedule", + "parameters": [ + { + "name": "scheduleId", + "in": "path", + "description": "Schedule ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "startDate", + "in": "query", + "description": "Start Date", + "schema": { + "type": "string" + } + }, + { + "name": "endDate", + "in": "query", + "description": "End Date", + "schema": { + "type": "string" + } + }, + { + "name": "statuses", + "in": "query", + "description": "Occurrence Statuses", + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + } + } + }, + "400": { + "description": "Invalid model.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems", + "hc:schedule-get" + ] + } + ] + } + } + }, + "/api/v2/occurrence/getsert": { + "post": { + "tags": [ + "Occurrence" + ], + "summary": "Getsert Occurrence", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Scopes: hc:internal-systems, hc:schedule-get
\r\n
\r\n**Data Access:**
\r\nInternal or ScheduleGet scope access", + "operationId": "Getsert", + "requestBody": { + "description": "Occurrence", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + } + }, + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + } + } + }, + "400": { + "description": "Invalid model.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems", + "hc:schedule-get" + ] + } + ] + } + } + }, + "/api/v2/occurrence/next-current-previous": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Gets next, current, and previous (most recent) Occurrences of schedule for specific date (in local time)", + "description": "**Data Access:**
\r\nREAD of Occurrence data. No special access requirements.", + "operationId": "GetNextCurrentPreviousOccurrences", + "parameters": [ + { + "name": "scheduleId", + "in": "query", + "description": "Schedule ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateTime", + "in": "query", + "description": "Date-time in local time OR UTC (depends on utc parameter)", + "schema": { + "type": "string" + } + }, + { + "name": "utc", + "in": "query", + "description": "true to use date-time as UTC", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrencesViewModel_V2" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrencesViewModel_V2" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_OccurrencesViewModel_V2" + } + } + } + }, + "400": { + "description": "Invalid model.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + }, + "403": { + "description": "Not authorized.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + }, + "404": { + "description": "Schedule not found.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_ProblemDetails" + } + } + } + } + } + } + }, + "/api/v2/occurrence": { + "get": { + "tags": [ + "Occurrence" + ], + "summary": "Searches Occurrences", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**Data Access:**
\r\nREAD of Occurrence data. Anonymous access is allowed as there is no sensitive data access involved and this endpoint is used for certain integrations.", + "operationId": "SearchOccurrences", + "parameters": [ + { + "name": "DateRangeStart", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "DateRangeEnd", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ChurchEntityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleEntityTypeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "ScheduleId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Completed successfully.", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PublicOccurrenceViewModel_V2" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PublicOccurrenceViewModel_V2" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PublicOccurrenceViewModel_V2" + } + } + } + } + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + }, + "404": { + "description": "Schedule not found." + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/reminder/copy-by-schedule": { + "post": { + "tags": [ + "Reminder" + ], + "summary": "Copies reminders from sourceScheduleId to targetScheduleId", + "operationId": "CopyReminders", + "parameters": [ + { + "name": "sourceScheduleId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "targetScheduleId", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/reminder/{id}": { + "get": { + "tags": [ + "Reminder" + ], + "summary": "Gets reminder by ID", + "description": "**Data Access:**
\r\nREAD Access to Reminders.", + "operationId": "GetReminderById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Reminder ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Reminder." + }, + "403": { + "description": "Not authorized." + } + } + }, + "put": { + "tags": [ + "Reminder" + ], + "summary": "Updates Reminder", + "description": "**Data Access:**
\r\nWRITE Access to Reminder.", + "operationId": "UpdateReminder", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Reminder ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Reminder Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Reminder." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + } + }, + "delete": { + "tags": [ + "Reminder" + ], + "summary": "Deletes Reminder", + "description": "**Data Access:**
\r\nWRITE Access to Reminder.", + "operationId": "DeleteReminder", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Reminder ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Reminder was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "409": { + "description": "Reminder is in use." + } + } + } + }, + "/api/reminder": { + "get": { + "tags": [ + "Reminder" + ], + "summary": "Gets Reminders list by Reminder IDs", + "description": "**Data Access:**
\r\nREAD Access to Reminders.", + "operationId": "GetRemindersByIds", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "Reminder IDs", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Reminders." + }, + "403": { + "description": "Not authorized." + } + } + }, + "post": { + "tags": [ + "Reminder" + ], + "summary": "Creates Reminder", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With one of these Permissions: Create Person Notes, Update Person Notes, Update Event, Update Serving Opportunities
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Reminder.", + "operationId": "CreateReminder", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Reminder Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_ReminderViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Reminder." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Create Person Notes" + ] + }, + { + "Permissions": [ + "Update Person Notes" + ] + }, + { + "Permissions": [ + "Update Event" + ] + }, + { + "Permissions": [ + "Update Serving Opportunities" + ] + } + ] + } + } + }, + "/api/reminder/schedule/{scheduleId}": { + "get": { + "tags": [ + "Reminder" + ], + "summary": "Gets all Reminders for Schedule with pagination", + "description": "**Data Access:**
\r\nREAD Access to Reminders.", + "operationId": "GetRemindersByScheduleId", + "parameters": [ + { + "name": "scheduleId", + "in": "path", + "description": "Schedule ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Reminder list." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/reminder/occurrence/{occurrenceId}": { + "get": { + "tags": [ + "Reminder" + ], + "summary": "Gets all Reminders for Occurrence with pagination", + "description": "**Data Access:**
\r\nREAD Access to Reminders.", + "operationId": "GetRemindersByOccurrenceId", + "parameters": [ + { + "name": "occurrenceId", + "in": "path", + "description": "Occurrence ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeRecurring", + "in": "query", + "description": "Return recurring reminders too", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Reminder list." + }, + "403": { + "description": "Not authorized." + } + } + } + }, + "/api/reminder/email-variables": { + "get": { + "tags": [ + "Reminder" + ], + "summary": "Get email variables", + "description": "**Data Access:**
\r\nNo specific access", + "operationId": "GetEmailVariables", + "parameters": [ + { + "name": "scheduleEntityTypeId", + "in": "query", + "description": "Schedule Entity Type Id", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/reminder/attachment": { + "post": { + "tags": [ + "Reminder" + ], + "summary": "Upload a File for Email Attachment", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Update Serving Opportunities, Update Event
\r\n
\r\n**Data Access:**
\r\nUploads the file to cloud storage (Amazon S3) where it can be viewed/downloaded by unauthenticated callers\r\nwith the URL (intended usage is to embed the URL to the file in an email in lieu of actually \"attaching\" the file).", + "operationId": "UploadAttachment", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + } + } + }, + "encoding": { + "file": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "File is empty.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Serving Opportunities" + ] + }, + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + }, + "/api/room-category/{id}": { + "get": { + "tags": [ + "RoomCategory" + ], + "summary": "Gets room category by ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Read Event, Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nREAD Access to room categories.", + "operationId": "GetRoomCategoryById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Room category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Room category." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + }, + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + }, + "put": { + "tags": [ + "RoomCategory" + ], + "summary": "Updates Room category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to room category.", + "operationId": "UpdateRoomCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Room category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Room category data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Room category." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + }, + "delete": { + "tags": [ + "RoomCategory" + ], + "summary": "Deletes Room category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to room category.", + "operationId": "DeleteRoomCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Room category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Room category was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "409": { + "description": "Room category is in use." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + } + }, + "/api/room-category": { + "get": { + "tags": [ + "RoomCategory" + ], + "summary": "Gets all room categories with pagination", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Read Event, Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nREAD Access to room categories.", + "operationId": "GetAllRoomCategories", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Page size", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page number", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Room category list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Event" + ] + }, + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + }, + "post": { + "tags": [ + "RoomCategory" + ], + "summary": "Creates Room category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Event Settings
\r\n
\r\n**Data Access:**
\r\nWRITE Access to room category.", + "operationId": "CreateRoomCategory", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Room category Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_RoomCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Room category." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Event Settings" + ] + } + ] + } + } + }, + "/api/rpc": { + "post": { + "tags": [ + "Rpc" + ], + "summary": "Handle RPC request", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
", + "operationId": "Rpc", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "RPC command", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_RpcRestContainer" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_RpcRestContainer" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_App_RpcRestContainer" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_App_RpcRestContainer" + } + } + } + }, + "responses": { + "200": { + "description": "Returns RPC operation result." + }, + "400": { + "description": "Invalid RPC model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/schedule/reset-cache": { + "post": { + "tags": [ + "Schedule" + ], + "summary": "Clear Schedule cache on all App instances", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Access Developer Diagnostics
\r\n
\r\n**Data Access:**
\r\nReloads Schedule cache from database. No modifications to any persistent data.", + "operationId": "ResetScheduleCache", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Operation is completed successfully." + }, + "403": { + "description": "Not authorized. Must have the required Permissions." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Access Developer Diagnostics" + ] + } + ] + } + } + }, + "/api/version": { + "get": { + "tags": [ + "Version" + ], + "operationId": "Get", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/worship-service-category/{id}": { + "get": { + "tags": [ + "WorshipServiceCategory" + ], + "summary": "Gets Worship Service category by ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to Worship Service categories.", + "operationId": "GetWorshipServiceCategoryById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Worship Service Category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns WorshipServiceCategory." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + }, + "put": { + "tags": [ + "WorshipServiceCategory" + ], + "summary": "Updates Worship Service Category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Worship Service category.", + "operationId": "UpdateWorshipServiceCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Worship Service category data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Worship Service category." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + }, + "delete": { + "tags": [ + "WorshipServiceCategory" + ], + "summary": "Deletes Worship Service Category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Worship Service category.", + "operationId": "DeleteWorshipServiceCategory", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Event category ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Worship Service category was deleted successfully." + }, + "403": { + "description": "Not authorized." + }, + "409": { + "description": "Worship Service Category is in use." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + }, + "/api/worship-service-category": { + "get": { + "tags": [ + "WorshipServiceCategory" + ], + "summary": "Gets all Worship Service Categories with pagination", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Read Event
\r\n
\r\n**Data Access:**
\r\nREAD Access to Worship Service categories.", + "operationId": "GetAllWorshipServiceCategories", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Page size", + "schema": { + "type": "integer", + "format": "int32", + "default": 25 + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "Page number", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + }, + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns Worship Service category list." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Read Event" + ] + } + ] + } + }, + "post": { + "tags": [ + "WorshipServiceCategory" + ], + "summary": "Creates Worship Service Category", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Update Event
\r\n
\r\n**Data Access:**
\r\nWRITE Access to Worship Service category.", + "operationId": "CreateWorshipServiceCategory", + "parameters": [ + { + "name": "api-version", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Worship Service category Data", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Event_WorshipServiceCategoryViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Returns Worship Service category." + }, + "400": { + "description": "Invalid model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Update Event" + ] + } + ] + } + } + } + }, + "components": { + "schemas": { + "Event_AccommodationViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 50, + "minLength": 0, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "isUsed": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_AttendanceViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "actualDateTime": { + "type": "string", + "format": "date-time" + }, + "attended": { + "type": "boolean", + "nullable": true + }, + "past": { + "type": "boolean" + }, + "assigned": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_App_AttendeeCheckInViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_AttendeeCheckInStatus" + }, + "checkInTime": { + "type": "string", + "description": "Check in time in UTC", + "format": "date-time", + "nullable": true + }, + "checkOutTime": { + "type": "string", + "description": "Check out time in UTC", + "format": "date-time", + "nullable": true + }, + "guardianPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "contactPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "checkedInBy": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Event_PersonViewModel" + }, + "contactPerson": { + "$ref": "#/components/schemas/Event_PersonViewModel" + }, + "subVenue": { + "$ref": "#/components/schemas/Event_SubVenueViewModel" + }, + "checkOutQrCode": { + "type": "string", + "description": "Check out QR code BMP image", + "format": "byte", + "nullable": true + }, + "checkOutQrCodeBase64": { + "type": "string", + "description": "Check out QR code BMP image base64 string", + "nullable": true + }, + "coreMilestones": { + "$ref": "#/components/schemas/Event_CoreMilestonesViewModel" + }, + "checkInRoomId": { + "type": "integer", + "description": "Initial room ID for specific attendee check-in", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_AttendeeCheckInsViewModel": { + "type": "object", + "properties": { + "attendees": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + }, + "nullable": true + }, + "total": { + "type": "integer", + "format": "int32" + }, + "maleCount": { + "type": "integer", + "format": "int32" + }, + "femaleCount": { + "type": "integer", + "format": "int32" + }, + "roomStatistics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Dto_RoomStatistics" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_BulkAttendeeCheckOutViewModel": { + "type": "object", + "properties": { + "attendeePersonIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "checkOutDate": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_BulkAttendeeTransferViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32" + }, + "attendeePersonIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_CheckInEventViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "attendees": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_AttendeeCheckInViewModel" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryName": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "canRegister": { + "type": "boolean" + }, + "isPaid": { + "type": "boolean" + }, + "isSelfCheckInEnabled": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxCapacityUnpublish": { + "type": "boolean" + }, + "webHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "thumbnail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allowSingleOccurrenceRegistration": { + "type": "boolean" + }, + "recurring": { + "type": "boolean" + }, + "virtualUrl": { + "type": "string", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "registrationStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "registrationEndDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isRegistrationClosed": { + "type": "boolean" + }, + "publishedEmail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "publishedPhone": { + "maxLength": 33, + "minLength": 0, + "type": "string", + "nullable": true + }, + "privateId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "isPrivate": { + "type": "boolean" + }, + "eventContactIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "schedule": { + "$ref": "#/components/schemas/Event_ScheduleViewModel" + }, + "venues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueViewModel" + }, + "nullable": true + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventSubVenueViewModel" + }, + "nullable": true + }, + "accommodations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + }, + "nullable": true + }, + "publicationStatuses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventPublishViewModel" + }, + "nullable": true + }, + "publishedChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "worshipServiceCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "customRegistrationNotificationSettings": { + "$ref": "#/components/schemas/Event_EventCustomRegistrationNotificationSettingsViewModel" + }, + "allowGuestRegistration": { + "type": "boolean" + }, + "publishedContactName": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_CheckInRoomViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "description": "Room ID (Sub-venue should be a room or venue if no other rooms exist)", + "format": "int32" + }, + "isRoomForChildren": { + "type": "boolean" + }, + "noGradeRestriction": { + "type": "boolean" + }, + "overrideVolunteerRequirements": { + "type": "boolean" + }, + "openTime": { + "type": "string", + "description": "Open time in UTC", + "format": "date-time", + "nullable": true + }, + "closeTime": { + "type": "string", + "description": "Close time in UTC", + "format": "date-time", + "nullable": true + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "attendeeCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "volunteerCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isFull": { + "type": "boolean", + "nullable": true + }, + "roomCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "roomCategory": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_CheckInRoomsViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "statistics": { + "$ref": "#/components/schemas/Event_Dto_CheckInRoomStatistics" + }, + "rooms": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_CheckInRoomViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_DataExtractFormat": { + "enum": [ + "Unknown", + "Excel", + "CSV" + ], + "type": "string" + }, + "Event_App_DataExtractPreviewViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_DateEventStatisticsViewModel": { + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date-time" + }, + "ministryEventCount": { + "type": "integer", + "format": "int32" + }, + "campusEventCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_App_EventAttendeeRegistrationViewModel": { + "required": [ + "email", + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceDateTime": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_ConnectionQuestionAnswerViewModel" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "pattern": "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:|\\\\)+)\\])", + "type": "string" + }, + "emailVerifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isEmailVerified": { + "type": "boolean" + }, + "sourceClientId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_EventHistoricPersonsViewModel": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "attendees": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventHistoricAttendeeViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_EventStatisticsViewModel": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "myEvents": { + "type": "integer", + "format": "int32" + }, + "unpublished": { + "type": "integer", + "format": "int32" + }, + "ministry": { + "type": "integer", + "format": "int32" + }, + "withRegistration": { + "type": "integer", + "format": "int32" + }, + "recurring": { + "type": "integer", + "format": "int32" + }, + "campus": { + "type": "integer", + "format": "int32" + }, + "byDate": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_DateEventStatisticsViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_EventbriteOrganizerViewModel": { + "type": "object", + "properties": { + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "organizerId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_IsoDayOfWeek": { + "enum": [ + "None", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "type": "string" + }, + "Event_App_OccurrenceIdOrDateViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "actualDateTime": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Event_App_OpenRoomViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "description": "Occurrence ID", + "format": "int32" + }, + "roomId": { + "type": "integer", + "description": "Room (SubVenue) ID", + "format": "int32" + }, + "isRoomForChildren": { + "type": "boolean", + "description": "True for children rooms" + }, + "noGradeRestriction": { + "type": "boolean", + "description": "True to override child room requirements" + }, + "overrideVolunteerRequirements": { + "type": "boolean", + "description": "True to cancel volunteer requirements" + }, + "labelNumbers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Dto_LabelNumber" + }, + "description": "Label numbers for the room for this occurrence", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "status": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "detail": { + "type": "string", + "nullable": true + }, + "instance": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": { } + }, + "Event_App_RpcRestContainer": { + "type": "object", + "properties": { + "body": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_ServingOpportunityVolunteerRoomInfoViewModel": { + "type": "object", + "properties": { + "subVenueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "checkOutAllowed": { + "type": "boolean" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityName": { + "type": "string", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Event_PersonViewModel" + } + }, + "additionalProperties": false + }, + "Event_App_SetAttendanceViewModel": { + "type": "object", + "properties": { + "attended": { + "type": "boolean", + "description": "Attendance status. Null means 'not set'", + "nullable": true + }, + "occurrences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_App_OccurrenceIdOrDateViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_App_SortDirection": { + "enum": [ + "Ascending", + "Descending" + ], + "type": "string" + }, + "Event_App_Sorting": { + "type": "object", + "properties": { + "sortColumn": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/Event_App_SortDirection" + } + }, + "additionalProperties": false + }, + "Event_CheckInSmsViewModel": { + "required": [ + "message" + ], + "type": "object", + "properties": { + "childPersonIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "recipientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "message": { + "maxLength": 153, + "type": "string" + } + }, + "additionalProperties": false + }, + "Event_CommunicationTemplateAttachmentViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "emailTemplateId": { + "type": "integer", + "format": "int32" + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "url": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_CommunicationTemplateDetailViewModel": { + "required": [ + "churchEntityId", + "name" + ], + "type": "object", + "properties": { + "emailSubject": { + "$ref": "#/components/schemas/Event_TemplateViewModel" + }, + "emailBodyContent": { + "$ref": "#/components/schemas/Event_TemplateViewModel" + }, + "emailBodyLayout": { + "$ref": "#/components/schemas/Event_TemplateViewModel" + }, + "sms": { + "$ref": "#/components/schemas/Event_TemplateViewModel" + }, + "emailAttachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_CommunicationTemplateAttachmentViewModel" + }, + "nullable": true + }, + "tempEmailAttachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Model_CommunicationTemplateTempAttachmentDto" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "emailBody": { + "type": "string", + "nullable": true + }, + "emailSubjectContent": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string" + }, + "smsBody": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "isEmail": { + "type": "boolean" + }, + "isSMS": { + "type": "boolean" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "thumbnailImageUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ConnectionQuestionAnswerViewModel": { + "required": [ + "answerSourceId", + "questionId" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "questionId": { + "type": "integer", + "format": "int32" + }, + "answerSourceId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "answerCustomFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "questionCustomFieldId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "booleanValue": { + "type": "boolean", + "nullable": true + }, + "dateTimeValue": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "numericValue": { + "type": "number", + "format": "double", + "nullable": true + }, + "textValue": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdBy": { + "$ref": "#/components/schemas/Event_NamedEntityViewModel" + }, + "modifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "modifiedBy": { + "$ref": "#/components/schemas/Event_NamedEntityViewModel" + } + }, + "additionalProperties": false + }, + "Event_CoreMilestonesViewModel": { + "type": "object", + "properties": { + "uniquePersonID": { + "type": "integer", + "format": "int32" + }, + "hasAcceptedChrist": { + "type": "boolean" + }, + "isBaptised": { + "type": "boolean" + }, + "hasAttendedClass101": { + "type": "boolean" + }, + "hasAttendedClass201": { + "type": "boolean" + }, + "hasAttendedClass301": { + "type": "boolean" + }, + "hasAttendedClass401": { + "type": "boolean" + }, + "hasSignedMembershipAgreement": { + "type": "boolean" + }, + "hasSignedMaturityCovenant": { + "type": "boolean" + }, + "hasSignedMinistryCovenant": { + "type": "boolean" + }, + "hasSignedMissionCovenant": { + "type": "boolean" + }, + "acceptedChristDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "baptismDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass101Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass201Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass301Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "attendedClass401Date": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMembershipAgreementDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMaturityCovenantDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMinistryCovenantDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "signedMissionCovenantDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "firstContactDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "congregationDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isInMinistry": { + "type": "boolean" + }, + "firstMinistryJoinDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isInSmallGroup": { + "type": "boolean" + }, + "firstSmallGroupJoinDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isActiveInMissions": { + "type": "boolean" + }, + "activeInMissionsDate": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_DateRangeViewModel": { + "type": "object", + "properties": { + "startDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "endDateTime": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Dto_AddMinistryMemberResult": { + "type": "object", + "properties": { + "addedToMinistry": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Dto_AttendeeSmsStatusData": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "contactPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Event_Model_Person" + }, + "status": { + "$ref": "#/components/schemas/Event_Dto_NotificationSmsStatus" + } + }, + "additionalProperties": false + }, + "Event_Dto_AttendeeSmsStatuses": { + "type": "object", + "properties": { + "hasSmsConfigurationError": { + "type": "boolean" + }, + "statuses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Dto_AttendeeSmsStatusData" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Dto_CheckInRoomStatistics": { + "type": "object", + "properties": { + "totalRooms": { + "type": "integer", + "format": "int32" + }, + "totalOpenRooms": { + "type": "integer", + "format": "int32" + }, + "totalCapacity": { + "type": "integer", + "format": "int32" + }, + "totalAttendeesCheckedIn": { + "type": "integer", + "format": "int32" + }, + "totalVolunteersCheckedIn": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Dto_EventFilterStatus": { + "enum": [ + "Upcoming", + "Past", + "Cancelled" + ], + "type": "string" + }, + "Event_Dto_EventOccurrenceStatistics": { + "type": "object", + "properties": { + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "attended": { + "type": "integer", + "format": "int32" + }, + "unattended": { + "type": "integer", + "format": "int32" + }, + "count": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "capacity": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Dto_EventPublishDto": { + "type": "object", + "properties": { + "destination": { + "$ref": "#/components/schemas/Event_Model_EventPublishDestinationType" + }, + "publish": { + "type": "boolean" + }, + "isPrivate": { + "type": "boolean" + }, + "churchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Dto_LabelNumber": { + "type": "object", + "properties": { + "checkInLabelId": { + "type": "integer", + "format": "int32" + }, + "number": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Dto_NotificationSmsStatus": { + "enum": [ + "Available", + "PersonNotFound", + "NoCellPhone", + "NoEmergencyContactCellPhone", + "HasNotConsented", + "DoNotTextIsSet", + "StopWasSent", + "PersonIsDeceased", + "NotInWhiteList", + "Failed" + ], + "type": "string" + }, + "Event_Dto_PersonNotesCount": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "notesCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Dto_RoomStatistics": { + "type": "object", + "properties": { + "subVenueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "checkedInCount": { + "type": "integer", + "format": "int32" + }, + "checkedOutCount": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Dto_WebHeader": { + "type": "object", + "properties": { + "value": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EmailViewModel": { + "required": [ + "body", + "replyEmail", + "senderName", + "subject" + ], + "type": "object", + "properties": { + "recipientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "senderName": { + "type": "string" + }, + "fromEmail": { + "type": "string", + "nullable": true + }, + "replyEmail": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "body": { + "type": "string" + }, + "bodyTemplateName": { + "type": "string", + "nullable": true + }, + "bodyMergeVars": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventAttendeeOccurrenceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "attended": { + "type": "boolean", + "nullable": true + }, + "isCheckedIn": { + "type": "boolean", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Event_PersonViewModel" + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_ConnectionQuestionAnswerViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventAttendeeOccurrencesViewModel": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "attendees": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventAttendeeOccurrenceViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventAttendeeViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_ConnectionQuestionAnswerViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventCategoryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 50, + "minLength": 0, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "isUsed": { + "type": "boolean", + "nullable": true + }, + "eventCount": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventCustomRegistrationNotificationSettingsViewModel": { + "type": "object", + "properties": { + "communicationTemplateId": { + "type": "integer", + "format": "int32" + }, + "communicationTemplate": { + "$ref": "#/components/schemas/Event_CommunicationTemplateDetailViewModel" + }, + "senderDisplayName": { + "type": "string", + "nullable": true + }, + "senderEmailAddress": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventDateViewModel": { + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date-time" + }, + "occurrences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_OccurrenceEventViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventDetailsViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "canRegister": { + "type": "boolean" + }, + "isPaid": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxCapacityUnpublish": { + "type": "boolean" + }, + "webHeader": { + "type": "string", + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allowSingleOccurrenceRegistration": { + "type": "boolean" + }, + "allowGuestRegistration": { + "type": "boolean" + }, + "recurring": { + "type": "boolean" + }, + "isVirtual": { + "type": "boolean" + }, + "publishedEmail": { + "type": "string", + "nullable": true + }, + "publishedContactName": { + "type": "string", + "nullable": true + }, + "publishedPhone": { + "type": "string", + "nullable": true + }, + "privateId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "isPrivate": { + "type": "boolean" + }, + "eventCategoryName": { + "type": "string", + "nullable": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "schedule": { + "$ref": "#/components/schemas/Event_SchedulePublicViewModel" + }, + "eventContacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonPublicContactViewModel" + }, + "nullable": true + }, + "eventVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueDetailsViewModel" + }, + "nullable": true + }, + "venues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueViewModel" + }, + "nullable": true + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventSubVenueViewModel" + }, + "nullable": true + }, + "accommodations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + }, + "nullable": true + }, + "changeableSequenceIds": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "nullable": true + }, + "worshipServiceCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "relatedEvents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventItemViewModel" + }, + "nullable": true + }, + "occurrence": { + "$ref": "#/components/schemas/Event_OccurrencePublicViewModel" + }, + "slug": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "Event_EventDetailsViewModel_V2": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryName": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "canRegister": { + "type": "boolean" + }, + "isPaid": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "webHeader": { + "type": "string", + "nullable": true + }, + "webHeaderUrl": { + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "type": "string", + "nullable": true + }, + "companionAppHeaderUrl": { + "type": "string", + "nullable": true + }, + "thumbnail": { + "type": "string", + "nullable": true + }, + "thumbnailUrl": { + "type": "string", + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allowSingleOccurrenceRegistration": { + "type": "boolean" + }, + "allowGuestRegistration": { + "type": "boolean" + }, + "recurring": { + "type": "boolean" + }, + "isVirtual": { + "type": "boolean" + }, + "publishedEmail": { + "type": "string", + "nullable": true + }, + "publishedContactName": { + "type": "string", + "nullable": true + }, + "publishedPhone": { + "type": "string", + "nullable": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "schedule": { + "$ref": "#/components/schemas/Event_ScheduleViewModel_V2" + }, + "eventContacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonPublicContactViewModel" + }, + "nullable": true + }, + "eventVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueDetailsViewModel" + }, + "nullable": true + }, + "venues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueViewModel_V2" + }, + "nullable": true + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventSubVenueViewModel_V2" + }, + "nullable": true + }, + "accommodations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + }, + "nullable": true + }, + "changeableSequenceIds": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "nullable": true + }, + "worshipServiceCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "relatedEvents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventItemViewModel_V2" + }, + "nullable": true + }, + "publicationStatuses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PublicEventPublishViewModel" + }, + "nullable": true + }, + "occurrence": { + "$ref": "#/components/schemas/Event_PublicOccurrenceViewModel_V2" + }, + "registrationCapacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "registrationCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "localRegistrationStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "localRegistrationEndDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "utcRegistrationStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "utcRegistrationEndDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isRegistrationClosed": { + "type": "boolean" + }, + "slug": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "Event_EventHistoricAttendeeViewModel": { + "type": "object", + "properties": { + "eventId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "registrationDate": { + "type": "integer", + "format": "int64" + }, + "person": { + "$ref": "#/components/schemas/Event_PersonViewModel" + } + }, + "additionalProperties": false + }, + "Event_EventItemViewModel": { + "type": "object", + "properties": { + "eventStatus": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "schedule": { + "$ref": "#/components/schemas/Event_SchedulePublicViewModel" + }, + "occurrence": { + "$ref": "#/components/schemas/Event_OccurrencePublicViewModel" + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "eventVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueDetailsViewModel" + }, + "nullable": true + }, + "publishedChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "slug": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "webHeader": { + "type": "string", + "nullable": true + }, + "webHeaderUrl": { + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "type": "string", + "nullable": true + }, + "companionAppHeaderUrl": { + "type": "string", + "nullable": true + }, + "thumbnail": { + "type": "string", + "nullable": true + }, + "thumbnailUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventItemViewModel_V2": { + "type": "object", + "properties": { + "eventStatus": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "schedule": { + "$ref": "#/components/schemas/Event_ScheduleViewModel_V2" + }, + "occurrence": { + "$ref": "#/components/schemas/Event_PublicOccurrenceViewModel_V2" + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "eventVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueDetailsViewModel" + }, + "nullable": true + }, + "slug": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "webHeader": { + "type": "string", + "nullable": true + }, + "webHeaderUrl": { + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "type": "string", + "nullable": true + }, + "companionAppHeaderUrl": { + "type": "string", + "nullable": true + }, + "thumbnail": { + "type": "string", + "nullable": true + }, + "thumbnailUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventLiteViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryName": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "canRegister": { + "type": "boolean" + }, + "isPaid": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxCapacityUnpublish": { + "type": "boolean" + }, + "webHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allowSingleOccurrenceRegistration": { + "type": "boolean" + }, + "recurring": { + "type": "boolean" + }, + "virtualUrl": { + "type": "string", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "publishedEmail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "publishedPhone": { + "maxLength": 33, + "minLength": 0, + "type": "string", + "nullable": true + }, + "worshipServiceCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventMinistryInviteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "ministryId": { + "type": "integer", + "format": "int32" + }, + "ministryName": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventMinistryInviteStatus" + } + }, + "additionalProperties": false + }, + "Event_EventOccurrenceResponseViewModel_V2": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "eventVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueDetailsViewModel" + }, + "nullable": true + }, + "occurrence": { + "$ref": "#/components/schemas/Event_PublicOccurrenceViewModel_Core_V2" + } + }, + "additionalProperties": false + }, + "Event_EventOccurrenceViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "occurrence": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryName": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "canRegister": { + "type": "boolean" + }, + "isPaid": { + "type": "boolean" + }, + "isSelfCheckInEnabled": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxCapacityUnpublish": { + "type": "boolean" + }, + "webHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "thumbnail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allowSingleOccurrenceRegistration": { + "type": "boolean" + }, + "recurring": { + "type": "boolean" + }, + "virtualUrl": { + "type": "string", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "registrationStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "registrationEndDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isRegistrationClosed": { + "type": "boolean" + }, + "publishedEmail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "publishedPhone": { + "maxLength": 33, + "minLength": 0, + "type": "string", + "nullable": true + }, + "privateId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "isPrivate": { + "type": "boolean" + }, + "eventContactIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "schedule": { + "$ref": "#/components/schemas/Event_ScheduleViewModel" + }, + "venues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueViewModel" + }, + "nullable": true + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventSubVenueViewModel" + }, + "nullable": true + }, + "accommodations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + }, + "nullable": true + }, + "publicationStatuses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventPublishViewModel" + }, + "nullable": true + }, + "publishedChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "worshipServiceCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "customRegistrationNotificationSettings": { + "$ref": "#/components/schemas/Event_EventCustomRegistrationNotificationSettingsViewModel" + }, + "allowGuestRegistration": { + "type": "boolean" + }, + "publishedContactName": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventPersonViewModel": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventPublishViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "destination": { + "$ref": "#/components/schemas/Event_Model_EventPublishDestinationType" + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventPublishStatus" + }, + "publishDate": { + "type": "string", + "format": "date-time" + }, + "url": { + "type": "string", + "nullable": true + }, + "churchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventRegistrationCancellationRequestViewModel": { + "type": "object", + "properties": { + "token": { + "type": "string", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventSubVenueOccurrenceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32" + }, + "roomCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventSubVenueViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32" + }, + "roomCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "capacity": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "labelNumbers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Dto_LabelNumber" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventSubVenueViewModel_V2": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32" + }, + "roomCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "capacity": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventVenueDetailsViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number", + "format": "double", + "nullable": true + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number", + "format": "double", + "nullable": true + }, + "venueAddressId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "hasAssociation": { + "type": "boolean", + "nullable": true + }, + "venueAddress": { + "$ref": "#/components/schemas/Event_VenueAddressViewModel" + }, + "venueCapacity": { + "type": "integer", + "format": "int32" + }, + "totalVenueCapacity": { + "type": "integer", + "format": "int32" + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_SubVenueViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventVenueOccurrenceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "venueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "privateAddress": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "virtualUrl": { + "type": "string", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_EventVenueViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "venueId": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "privateAddress": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventVenueViewModel_V2": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "venueId": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "privateAddress": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_EventViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryName": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "canRegister": { + "type": "boolean" + }, + "isPaid": { + "type": "boolean" + }, + "isSelfCheckInEnabled": { + "type": "boolean" + }, + "capacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxCapacityUnpublish": { + "type": "boolean" + }, + "webHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "thumbnail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allowSingleOccurrenceRegistration": { + "type": "boolean" + }, + "recurring": { + "type": "boolean" + }, + "virtualUrl": { + "type": "string", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "registrationStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "registrationEndDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isRegistrationClosed": { + "type": "boolean" + }, + "publishedEmail": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + }, + "publishedPhone": { + "maxLength": 33, + "minLength": 0, + "type": "string", + "nullable": true + }, + "privateId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "isPrivate": { + "type": "boolean" + }, + "eventContactIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "schedule": { + "$ref": "#/components/schemas/Event_ScheduleViewModel" + }, + "venues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueViewModel" + }, + "nullable": true + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventSubVenueViewModel" + }, + "nullable": true + }, + "accommodations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_AccommodationViewModel" + }, + "nullable": true + }, + "publicationStatuses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventPublishViewModel" + }, + "nullable": true + }, + "publishedChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "worshipServiceCategoryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "customRegistrationNotificationSettings": { + "$ref": "#/components/schemas/Event_EventCustomRegistrationNotificationSettingsViewModel" + }, + "allowGuestRegistration": { + "type": "boolean" + }, + "publishedContactName": { + "maxLength": 256, + "minLength": 0, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_InterestedMinistryMemberBulkViewModel": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/Event_Model_MinistryMemberStatus" + }, + "sourceId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Model_AttendeeCheckInStatus": { + "enum": [ + "Invalid", + "CheckedIn", + "CheckedOut" + ], + "type": "string" + }, + "Event_Model_CommunicationTemplateTempAttachmentDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Model_EventMinistryInviteStatus": { + "enum": [ + "Invalid", + "Open", + "Accepted", + "Rejected" + ], + "type": "string" + }, + "Event_Model_EventPublishDestinationType": { + "enum": [ + "Invalid", + "TenantWebsite", + "Eventbrite" + ], + "type": "string" + }, + "Event_Model_EventPublishStatus": { + "enum": [ + "Invalid", + "NotPublished", + "Published", + "Canceled" + ], + "type": "string" + }, + "Event_Model_EventReminderType": { + "enum": [ + "Common", + "InviteNotification", + "EventApproaching" + ], + "type": "string" + }, + "Event_Model_EventStatus": { + "enum": [ + "Unknown", + "Open", + "Closed" + ], + "type": "string" + }, + "Event_Model_GradeLevel": { + "enum": [ + "None", + "PreK", + "Kindergarten", + "First", + "Second", + "Third", + "Fourth", + "Fifth", + "Sixth", + "Seventh", + "Eighth", + "Ninth", + "Tenth", + "Eleventh", + "Twelfth", + "Invalid" + ], + "type": "string" + }, + "Event_Model_MergeItemDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/Event_Model_MergeItemType" + }, + "name": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Model_MergeItemType": { + "enum": [ + "Common", + "Image" + ], + "type": "string" + }, + "Event_Model_MilestoneCategory": { + "enum": [ + "Undefined", + "Personal", + "Discipleship", + "Security" + ], + "type": "string" + }, + "Event_Model_MinistryMemberStatus": { + "enum": [ + "NotContacted", + "FirstContact", + "SecondContact", + "Pending", + "Ineligible", + "Active", + "Inactive", + "InTraining", + "Unknown" + ], + "type": "string" + }, + "Event_Model_NotificationChannelType": { + "enum": [ + "All", + "Email", + "Sms", + "App", + "Push" + ], + "type": "string" + }, + "Event_Model_NotificationLabelType": { + "enum": [ + "None", + "Favorite" + ], + "type": "string" + }, + "Event_Model_NotificationSourceType": { + "enum": [ + "Unknown", + "FlowWorkItemAssigned", + "FlowWorkItemReassigned", + "FlowWorkItemCommented", + "FlowWorkItemOverdue", + "FlowWorkItemBlocked", + "MinistryMemberInterested", + "MinistryMemberStatusChanged", + "MinistryMemberNoteCreated", + "MinistryMember", + "DeliveryResult", + "ServingOpportunityVolunteer", + "ServingOpportunityVolunteerInterested", + "DebugEmail", + "VerificationEmail", + "AddedToMinistryAsLeader", + "WorkflowCommunication", + "ReminderNotification", + "EventAttendee", + "WorkflowTaskEscalated", + "WorkflowTaskCommented", + "WorkflowTaskReassigned", + "WorkflowTaskBlocked", + "WorkflowTasksPastDueDigest", + "WorkflowTasksDueTodayDigest", + "WorkflowTasksNewlyCreatedOrAssignedDigest", + "MemberEngagementStartOfService", + "MemberEngagementDailyVerse", + "MemberEngagementMilestoneAchieved", + "MemberEngagementCustomPastorMessage", + "InviteAndNotifyMinistry", + "SystemCommunication", + "MinistryMemberSms", + "SmsConsentRequest", + "EventCheckInVolunteer", + "GivingCommunication", + "EventContact", + "EventCheckInAttendee", + "ServingOpportunityVolunteerSms", + "ServingOpportunityVolunteerUnscheduled", + "MemberEngagementDailyDevotional", + "MyFollowUpsManualCommunication" + ], + "type": "string" + }, + "Event_Model_NotificationSourceTypeCategory": { + "enum": [ + "Discipleship", + "Events", + "Ministry", + "System", + "Workflow", + "MemberEngagement", + "Giving" + ], + "type": "string" + }, + "Event_Model_NotificationStatusType": { + "enum": [ + "Unprocessed", + "Pending", + "Running", + "Succeeded", + "Failed", + "Skipped" + ], + "type": "string" + }, + "Event_Model_OccurrenceStatus": { + "enum": [ + "Active", + "Canceled", + "Removed" + ], + "type": "string" + }, + "Event_Model_Person": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "uniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "firstName": { + "type": "string", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "maritalStatus": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "membershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "disengagementReason": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deceasedDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "gradeLevel": { + "$ref": "#/components/schemas/Event_Model_GradeLevel" + }, + "allergies": { + "type": "string", + "nullable": true + }, + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "homePhone": { + "type": "string", + "nullable": true + }, + "cellPhone": { + "type": "string", + "nullable": true + }, + "workPhone": { + "type": "string", + "nullable": true + }, + "primaryPhoneType": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Model_PersonMilestone" + }, + "nullable": true + }, + "departmentId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentName": { + "type": "string", + "nullable": true + }, + "departmentChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentChurchEntityName": { + "type": "string", + "nullable": true + }, + "preferredServiceEventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isUser": { + "type": "boolean" + }, + "profilePictureUrl": { + "type": "string", + "nullable": true + }, + "profilePhotoUrl": { + "type": "string", + "nullable": true + }, + "createdByPerson": { + "$ref": "#/components/schemas/Event_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Event_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Event_Model_PersonDocument": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "personUniqueId": { + "type": "integer", + "format": "int32" + }, + "filename": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "fileTitle": { + "type": "string", + "nullable": true + }, + "deleteDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "mergeableItem": { + "$ref": "#/components/schemas/Event_Model_MergeItemDto" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Event_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Event_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Event_Model_PersonMilestone": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "milestoneId": { + "type": "integer", + "format": "int32" + }, + "milestoneOrder": { + "type": "integer", + "format": "int32" + }, + "milestone": { + "type": "string", + "nullable": true + }, + "milestoneCategory": { + "$ref": "#/components/schemas/Event_Model_MilestoneCategory" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "location": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "document": { + "$ref": "#/components/schemas/Event_Model_PersonDocument" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_Model_PersonDocument" + }, + "nullable": true + }, + "mergeableItem": { + "$ref": "#/components/schemas/Event_Model_MergeItemDto" + }, + "createdByPerson": { + "$ref": "#/components/schemas/Event_Model_PersonSecurityLite" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "modifiedByPerson": { + "$ref": "#/components/schemas/Event_Model_PersonSecurityLite" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Event_Model_PersonSecurityLite": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "uniqueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "fullName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Model_ReminderData": { + "type": "object", + "properties": { + "emailData": { + "$ref": "#/components/schemas/Event_Model_ReminderEmailData" + }, + "eventData": { + "$ref": "#/components/schemas/Event_Model_ReminderEventData" + } + }, + "additionalProperties": false + }, + "Event_Model_ReminderEmailData": { + "type": "object", + "properties": { + "emailTemplateId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "emailTemplateName": { + "type": "string", + "nullable": true + }, + "senderId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "senderName": { + "type": "string", + "nullable": true + }, + "replyEmail": { + "type": "string", + "nullable": true + }, + "subject": { + "type": "string", + "nullable": true + }, + "htmlBody": { + "type": "string", + "nullable": true + }, + "bodyTemplateName": { + "type": "string", + "nullable": true + }, + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "ccToSender": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Model_ReminderEventData": { + "type": "object", + "properties": { + "eventId": { + "type": "integer", + "format": "int32" + }, + "type": { + "$ref": "#/components/schemas/Event_Model_EventReminderType" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Event_Model_ReminderInterval": { + "enum": [ + "Unknown", + "Minutes", + "Hours", + "Days", + "Weeks" + ], + "type": "string" + }, + "Event_Model_StandardErrorResponse": { + "type": "object", + "properties": { + "message": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_Model_TemplateFormat": { + "enum": [ + "Unknown", + "PlainText", + "Html", + "PrinterLabel" + ], + "type": "string" + }, + "Event_Model_TemplateType": { + "enum": [ + "Unknown", + "ContentSpot", + "Layout", + "CompleteDocument", + "Base" + ], + "type": "string" + }, + "Event_Model_VolunteerCheckInStatus": { + "enum": [ + "Invalid", + "CheckedIn", + "CheckedOut", + "Scheduled" + ], + "type": "string" + }, + "Event_MyPersonEventItemViewModel": { + "type": "object", + "properties": { + "registeredForAllOccurrences": { + "type": "boolean" + }, + "privateId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "eventStatus": { + "$ref": "#/components/schemas/Event_Model_EventStatus" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "eventCategoryId": { + "type": "integer", + "format": "int32" + }, + "advertiseOnWeb": { + "type": "boolean" + }, + "schedule": { + "$ref": "#/components/schemas/Event_SchedulePublicViewModel" + }, + "occurrence": { + "$ref": "#/components/schemas/Event_OccurrencePublicViewModel" + }, + "tagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "hostMinistryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isVirtual": { + "type": "boolean" + }, + "eventVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueDetailsViewModel" + }, + "nullable": true + }, + "publishedChurchEntityIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "slug": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "webHeader": { + "type": "string", + "nullable": true + }, + "webHeaderUrl": { + "type": "string", + "nullable": true + }, + "companionAppHeader": { + "type": "string", + "nullable": true + }, + "companionAppHeaderUrl": { + "type": "string", + "nullable": true + }, + "thumbnail": { + "type": "string", + "nullable": true + }, + "thumbnailUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_MyPersonEventResultsViewModel": { + "type": "object", + "properties": { + "totalResults": { + "type": "integer", + "format": "int32" + }, + "myPersonEventItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_MyPersonEventItemViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_NamedEntityViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_NoteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32" + }, + "purpose": { + "type": "string", + "nullable": true + }, + "subject": { + "type": "string", + "nullable": true + }, + "noteText": { + "type": "string", + "nullable": true + }, + "isSensitive": { + "type": "boolean" + }, + "isPinned": { + "type": "boolean", + "nullable": true + }, + "createdBy": { + "type": "integer", + "format": "int32" + }, + "createdByName": { + "type": "string", + "nullable": true + }, + "createdByEmail": { + "type": "string", + "nullable": true + }, + "createdByAvatar": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64" + }, + "modifiedBy": { + "type": "integer", + "format": "int32" + }, + "modifiedByName": { + "type": "string", + "nullable": true + }, + "modifiedByEmail": { + "type": "string", + "nullable": true + }, + "modifiedByAvatar": { + "type": "string", + "nullable": true + }, + "modifyDate": { + "type": "integer", + "format": "int64" + }, + "ministryId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ministry": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntity": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "categoryName": { + "type": "string", + "nullable": true + }, + "taskName": { + "type": "string", + "nullable": true + }, + "reminderId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_NotificationRecipientViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "pushNotificationRegistrationId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "channel": { + "$ref": "#/components/schemas/Event_Model_NotificationChannelType" + }, + "status": { + "$ref": "#/components/schemas/Event_Model_NotificationStatusType" + }, + "error": { + "type": "string", + "nullable": true + }, + "isViewed": { + "type": "boolean" + }, + "retryCount": { + "type": "integer", + "format": "int32" + }, + "person": { + "$ref": "#/components/schemas/Event_PersonLiteViewModel" + }, + "mergeVariableReplacements": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_NotificationResultViewModel": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "list": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_NotificationViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_NotificationSenderContactViewModel": { + "type": "object", + "properties": { + "senderIdentifier": { + "type": "string", + "nullable": true + }, + "senderName": { + "type": "string", + "nullable": true + }, + "replyIdentifier": { + "type": "string", + "nullable": true + }, + "reportPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ccToSender": { + "type": "boolean" + }, + "person": { + "$ref": "#/components/schemas/Event_PersonLiteViewModel" + } + }, + "additionalProperties": false + }, + "Event_NotificationViewModel": { + "required": [ + "body", + "sourceId", + "summary" + ], + "type": "object", + "properties": { + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceId": { + "type": "integer", + "format": "int32" + }, + "sourceId2": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceId3": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "groupId": { + "type": "string", + "nullable": true + }, + "sourceType": { + "$ref": "#/components/schemas/Event_Model_NotificationSourceType" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "label": { + "$ref": "#/components/schemas/Event_Model_NotificationLabelType" + }, + "payload": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_NotificationRecipientViewModel" + }, + "nullable": true + }, + "senderContact": { + "$ref": "#/components/schemas/Event_NotificationSenderContactViewModel" + }, + "allFailed": { + "type": "boolean" + }, + "allSkipped": { + "type": "boolean" + }, + "category": { + "$ref": "#/components/schemas/Event_Model_NotificationSourceTypeCategory" + } + }, + "additionalProperties": false + }, + "Event_OccurrenceEventViewModel": { + "required": [ + "duration", + "startTime" + ], + "type": "object", + "properties": { + "event": { + "$ref": "#/components/schemas/Event_EventViewModel" + }, + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "scheduleSequenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string" + }, + "duration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "startDateTime": { + "type": "string", + "format": "date-time" + }, + "endDateTime": { + "type": "string", + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + }, + "newDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "newStartTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string", + "nullable": true + }, + "newDuration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string", + "nullable": true + }, + "actualDate": { + "type": "string", + "format": "date-time" + }, + "actualStartDateTime": { + "type": "string", + "format": "date-time" + }, + "actualDuration": { + "type": "string", + "nullable": true + }, + "isOverloaded": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_OccurrencePublicViewModel": { + "required": [ + "duration", + "startTime" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "scheduleSequenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "startDateTime": { + "type": "string", + "format": "date-time" + }, + "endDateTime": { + "type": "string", + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + }, + "actualDate": { + "type": "string", + "format": "date-time" + }, + "actualStartDateTime": { + "type": "string", + "format": "date-time" + }, + "actualDuration": { + "type": "string", + "format": "date-span" + }, + "isOverloaded": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_OccurrenceVenueViewModel": { + "type": "object", + "properties": { + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "occurrenceDateTime": { + "type": "string", + "format": "date-time" + }, + "venueIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_OccurrenceViewModel": { + "required": [ + "duration", + "startTime" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "scheduleSequenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string" + }, + "duration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "startDateTime": { + "type": "string", + "format": "date-time" + }, + "endDateTime": { + "type": "string", + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + }, + "newDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "newStartTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string", + "nullable": true + }, + "newDuration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string", + "nullable": true + }, + "actualDate": { + "type": "string", + "format": "date-time" + }, + "actualStartDateTime": { + "type": "string", + "format": "date-time" + }, + "actualDuration": { + "type": "string", + "nullable": true + }, + "isOverloaded": { + "type": "boolean" + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_OccurrenceViewModel_V2": { + "required": [ + "date", + "duration", + "startTime" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "scheduleId": { + "type": "integer", + "format": "int32" + }, + "scheduleSequenceId": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_OccurrenceStatus" + }, + "newDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "newStartTime": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "newDuration": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_OccurrencesViewModel": { + "type": "object", + "properties": { + "next": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + }, + "current": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + }, + "previous": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel" + } + }, + "additionalProperties": false + }, + "Event_OccurrencesViewModel_V2": { + "type": "object", + "properties": { + "next": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + }, + "current": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + }, + "previous": { + "$ref": "#/components/schemas/Event_OccurrenceViewModel_V2" + } + }, + "additionalProperties": false + }, + "Event_PersonAddressViewModel": { + "required": [ + "address1", + "city", + "countryAlpha3" + ], + "type": "object", + "properties": { + "address1": { + "type": "string" + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string" + }, + "region": { + "type": "string", + "nullable": true + }, + "regionCode": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "countryAlpha2": { + "type": "string", + "nullable": true + }, + "countryAlpha3": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_PersonDocumentViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "filename": { + "type": "string", + "nullable": true + }, + "fileMimeType": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "fileTitle": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PersonEmailViewModel": { + "required": [ + "email" + ], + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "isPublic": { + "type": "boolean" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_PersonLiteViewModel": { + "required": [ + "email", + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "pattern": "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:|\\\\)+)\\])", + "type": "string" + }, + "emailVerifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isEmailVerified": { + "type": "boolean" + }, + "sourceClientId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PersonMilestoneDateLiteViewModel": { + "type": "object", + "properties": { + "date": { + "type": "integer", + "format": "int64" + }, + "location": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PersonMilestoneDateViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "date": { + "type": "integer", + "format": "int64" + }, + "location": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "document": { + "$ref": "#/components/schemas/Event_PersonDocumentViewModel" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonDocumentViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PersonMilestoneViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "category": { + "$ref": "#/components/schemas/Event_Model_MilestoneCategory" + }, + "uiOrder": { + "type": "integer", + "format": "int32" + }, + "dates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonMilestoneDateViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PersonOccupationViewModel": { + "required": [ + "title" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "typeId": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "categoryId": { + "type": "integer", + "format": "int32" + }, + "category": { + "type": "string", + "nullable": true + }, + "company": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string" + }, + "isPrimary": { + "type": "boolean" + }, + "isStaff": { + "type": "boolean" + }, + "departmentId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentName": { + "type": "string", + "nullable": true + }, + "departmentChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentChurchEntityName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PersonPhoneViewModel": { + "required": [ + "phoneNumber" + ], + "type": "object", + "properties": { + "phoneTypeId": { + "type": "integer", + "format": "int32" + }, + "phoneType": { + "type": "string", + "nullable": true + }, + "phoneNumber": { + "maxLength": 20, + "minLength": 0, + "type": "string", + "format": "tel" + }, + "isPublic": { + "type": "boolean" + }, + "displayPhoneNumber": { + "type": "string", + "nullable": true + }, + "countryCode": { + "type": "string", + "nullable": true + }, + "extension": { + "maxLength": 7, + "minLength": 0, + "pattern": "\\d*", + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "isPrimary": { + "type": "boolean" + }, + "isValidated": { + "type": "boolean" + }, + "isBadContact": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Event_PersonPublicContactViewModel": { + "type": "object", + "properties": { + "firstName": { + "type": "string", + "nullable": true + }, + "lastName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PersonViewModel": { + "required": [ + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "address1": { + "type": "string", + "nullable": true + }, + "address2": { + "type": "string", + "nullable": true + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonAddressViewModel" + }, + "nullable": true + }, + "age": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "allergies": { + "type": "string", + "nullable": true + }, + "birthDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "cellPhone": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "churchEntityKnown": { + "type": "boolean" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + }, + "deceasedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "departmentChurchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentChurchEntityName": { + "type": "string", + "nullable": true + }, + "departmentId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "departmentName": { + "type": "string", + "nullable": true + }, + "disengagementReason": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "emails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonEmailViewModel" + }, + "nullable": true + }, + "firstContact": { + "$ref": "#/components/schemas/Event_PersonMilestoneDateLiteViewModel" + }, + "firstName": { + "type": "string" + }, + "fullName": { + "type": "string", + "nullable": true + }, + "gender": { + "type": "string", + "nullable": true + }, + "gradeLevel": { + "$ref": "#/components/schemas/Event_Model_GradeLevel" + }, + "homePhone": { + "type": "string", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isAdult": { + "type": "boolean", + "nullable": true + }, + "isChild": { + "type": "boolean", + "nullable": true + }, + "isStudent": { + "type": "boolean", + "nullable": true + }, + "lastName": { + "type": "string" + }, + "maritalStatus": { + "type": "string", + "nullable": true + }, + "maritalStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "membershipStatus": { + "type": "string", + "nullable": true + }, + "membershipStatusId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "middleName": { + "type": "string", + "nullable": true + }, + "milestones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonMilestoneViewModel" + }, + "nullable": true + }, + "modifiedDate": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "nickName": { + "type": "string", + "nullable": true + }, + "occupations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonOccupationViewModel" + }, + "nullable": true + }, + "phones": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_PersonPhoneViewModel" + }, + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "preferredServiceEventId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "primaryPhoneType": { + "type": "string", + "nullable": true + }, + "profilePhotoUrl": { + "type": "string", + "nullable": true + }, + "profilePictureUrl": { + "type": "string", + "nullable": true + }, + "region": { + "type": "string", + "nullable": true + }, + "suffix": { + "type": "string", + "nullable": true + }, + "workPhone": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PublicEventPublishViewModel": { + "type": "object", + "properties": { + "destination": { + "$ref": "#/components/schemas/Event_Model_EventPublishDestinationType" + }, + "url": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_PublicOccurrenceViewModel_Core_V2": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "localStartDateTime": { + "type": "string", + "format": "date-time" + }, + "localEndDateTime": { + "type": "string", + "format": "date-time" + }, + "utcStartDateTime": { + "type": "string", + "format": "date-time" + }, + "utcEndDateTime": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Event_PublicOccurrenceViewModel_V2": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "localStartDateTime": { + "type": "string", + "format": "date-time" + }, + "localEndDateTime": { + "type": "string", + "format": "date-time" + }, + "utcStartDateTime": { + "type": "string", + "format": "date-time" + }, + "utcEndDateTime": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Event_PublicRegistrationOccurrenceViewModel_V2": { + "type": "object", + "properties": { + "registrationCapacity": { + "type": "integer", + "format": "int32" + }, + "registrationCount": { + "type": "integer", + "format": "int32" + }, + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "timeZone": { + "type": "string", + "nullable": true + }, + "localStartDateTime": { + "type": "string", + "format": "date-time" + }, + "localEndDateTime": { + "type": "string", + "format": "date-time" + }, + "utcStartDateTime": { + "type": "string", + "format": "date-time" + }, + "utcEndDateTime": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "Event_ReminderViewModel": { + "type": "object", + "properties": { + "schedule": { + "$ref": "#/components/schemas/Event_ScheduleViewModel_Core_V2" + }, + "id": { + "type": "integer", + "format": "int32" + }, + "interval": { + "$ref": "#/components/schemas/Event_Model_ReminderInterval" + }, + "before": { + "type": "integer", + "format": "int32" + }, + "scheduleId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "occurrenceId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "enabled": { + "type": "boolean" + }, + "processed": { + "type": "boolean" + }, + "reminderData": { + "$ref": "#/components/schemas/Event_Model_ReminderData" + } + }, + "additionalProperties": false + }, + "Event_RoomCategoryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 50, + "minLength": 0, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "isUsed": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_SchedulePublicViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "occurrencesCount": { + "maximum": 10000, + "minimum": 2, + "type": "integer", + "format": "int32", + "nullable": true + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "custom": { + "type": "boolean" + }, + "sequences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_ScheduleSequencePublicViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ScheduleSequencePublicViewModel": { + "required": [ + "duration", + "startTime", + "timeZone" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "timeZone": { + "type": "string" + }, + "isRecurring": { + "type": "boolean" + }, + "recurrenceFrequencyId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "recurrenceFrequency": { + "type": "string", + "nullable": true + }, + "dayOfWeek": { + "type": "integer", + "format": "int32" + }, + "startTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string", + "format": "date-span" + }, + "duration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string", + "format": "date-span" + }, + "monthEnabled": { + "type": "array", + "items": { + "type": "boolean" + }, + "nullable": true + }, + "interval": { + "maximum": 100, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "canBeChanged": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ScheduleSequenceViewModel": { + "required": [ + "duration", + "startTime", + "timeZone" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "timeZone": { + "type": "string" + }, + "isRecurring": { + "type": "boolean" + }, + "recurrenceFrequencyId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "recurrenceFrequency": { + "type": "string", + "nullable": true + }, + "dayOfWeek": { + "type": "integer", + "format": "int32" + }, + "startTime": { + "pattern": "^(2[0-3]|1[0-9]|0?[0-9]):([0-5][0-9])(:([0-5][0-9]))?$", + "type": "string" + }, + "duration": { + "pattern": "^(([0-9][0-9]?).)?(2[0-3]|1[0-9]|0?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?$", + "type": "string" + }, + "monthEnabled": { + "type": "array", + "items": { + "type": "boolean" + }, + "nullable": true + }, + "interval": { + "maximum": 100, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "canBeChanged": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ScheduleSequenceViewModel_Core_V2": { + "required": [ + "duration", + "startTime", + "timeZone" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "timeZone": { + "type": "string" + }, + "isRecurring": { + "type": "boolean" + }, + "recurrenceFrequencyId": { + "type": "integer", + "format": "int32" + }, + "recurrenceFrequency": { + "type": "string", + "nullable": true + }, + "dayOfWeek": { + "$ref": "#/components/schemas/Event_App_IsoDayOfWeek" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "monthEnabled": { + "type": "array", + "items": { + "type": "boolean" + }, + "nullable": true + }, + "interval": { + "maximum": 100, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "canBeChanged": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ScheduleSequenceViewModel_V2": { + "required": [ + "duration", + "startTime", + "timeZone" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "occurrenceStartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "timeZone": { + "type": "string" + }, + "isRecurring": { + "type": "boolean" + }, + "recurrenceFrequencyId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "recurrenceFrequency": { + "type": "string", + "nullable": true + }, + "dayOfWeek": { + "$ref": "#/components/schemas/Event_App_IsoDayOfWeek" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "duration": { + "type": "string", + "format": "date-span" + }, + "monthEnabled": { + "type": "array", + "items": { + "type": "boolean" + }, + "nullable": true + }, + "interval": { + "maximum": 100, + "minimum": 1, + "type": "integer", + "format": "int32", + "nullable": true + }, + "canBeChanged": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ScheduleViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "occurrencesCount": { + "maximum": 10000, + "minimum": 2, + "type": "integer", + "format": "int32", + "nullable": true + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "custom": { + "type": "boolean" + }, + "startDayOfWeek": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sequences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_ScheduleSequenceViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ScheduleViewModel_Core_V2": { + "type": "object", + "properties": { + "occurrencesCount": { + "maximum": 10000, + "minimum": 2, + "type": "integer", + "format": "int32", + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "custom": { + "type": "boolean" + }, + "sequences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_ScheduleSequenceViewModel_Core_V2" + }, + "nullable": true + }, + "startDayOfWeek": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_ScheduleViewModel_V2": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityTypeId": { + "type": "integer", + "format": "int32" + }, + "scheduleEntityType": { + "type": "string", + "nullable": true + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "occurrencesCount": { + "maximum": 10000, + "minimum": 2, + "type": "integer", + "format": "int32", + "nullable": true + }, + "endDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "custom": { + "type": "boolean" + }, + "startDayOfWeek": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sequences": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_ScheduleSequenceViewModel_V2" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_SmsViewModel": { + "required": [ + "message" + ], + "type": "object", + "properties": { + "recipientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "message": { + "maxLength": 153, + "type": "string" + } + }, + "additionalProperties": false + }, + "Event_SubVenueViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "venueId": { + "type": "integer", + "format": "int32" + }, + "subVenueTypeId": { + "type": "integer", + "format": "int32" + }, + "subVenueType": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_TemplateViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "type": { + "$ref": "#/components/schemas/Event_Model_TemplateType" + }, + "format": { + "$ref": "#/components/schemas/Event_Model_TemplateFormat" + }, + "name": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "isSystem": { + "type": "boolean" + }, + "isRazor": { + "type": "boolean" + }, + "designData": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_VenueAddressViewModel": { + "required": [ + "address1", + "city" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "address1": { + "type": "string" + }, + "address2": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string" + }, + "region": { + "type": "string", + "nullable": true + }, + "postalCode": { + "type": "string", + "nullable": true + }, + "country": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_VenuesOccurrenceViewModel": { + "type": "object", + "properties": { + "venues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventVenueOccurrenceViewModel" + }, + "nullable": true + }, + "subVenues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Event_EventSubVenueOccurrenceViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Event_VolunteerCheckInViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "eventId": { + "type": "integer", + "format": "int32" + }, + "servingOpportunityId": { + "type": "integer", + "format": "int32" + }, + "occurrenceId": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32" + }, + "subVenueId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/Event_Model_VolunteerCheckInStatus" + }, + "checkInTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "checkOutTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "person": { + "$ref": "#/components/schemas/Event_PersonViewModel" + }, + "checkOutAllowed": { + "type": "boolean", + "nullable": true + }, + "coreMilestones": { + "$ref": "#/components/schemas/Event_CoreMilestonesViewModel" + } + }, + "additionalProperties": false + }, + "Event_WorshipServiceCategoryViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "maxLength": 50, + "minLength": 0, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 2048, + "minLength": 0, + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "isUsed": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + } + } + } +} diff --git a/test/spec/saddlebackWebAppApi.json b/test/spec/saddlebackWebAppApi.json new file mode 100644 index 000000000..74604b5c4 --- /dev/null +++ b/test/spec/saddlebackWebAppApi.json @@ -0,0 +1,2751 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "HC WebApp API", + "version": "v1" + }, + "paths": { + "/api/bootstrap": { + "get": { + "tags": [ + "Bootstrap" + ], + "operationId": "GetBootstrap", + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/enumerations": { + "get": { + "tags": [ + "Bootstrap" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetEnumerations", + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/notification": { + "get": { + "tags": [ + "Notification" + ], + "summary": "Get all notifications with optional sourceType and channel filters", + "operationId": "GetAll", + "parameters": [ + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "days", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "Notification" + ], + "summary": "Create a new notification", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n", + "operationId": "CreateNotification", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/notification/group-count": { + "get": { + "tags": [ + "Notification" + ], + "summary": "", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "GetGroupCounts", + "parameters": [ + { + "name": "sourceTypes", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + } + }, + { + "name": "sourceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceId2", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/notification/group-count/last": { + "get": { + "tags": [ + "Notification" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "GetLastWithGrouping", + "parameters": [ + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "types", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + } + }, + { + "name": "sourceId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceId2", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/notification/user": { + "get": { + "tags": [ + "Notification" + ], + "summary": "Get all notifications for current user", + "operationId": "GetForCurrentUser", + "parameters": [ + { + "name": "sourceType", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "channel", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "categories", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + }, + { + "name": "days", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "isViewed", + "in": "query", + "description": "", + "schema": { + "type": "boolean" + } + }, + { + "name": "sort", + "in": "query", + "description": "Sorting parameter [createdate],[ASC | DESC]. Optional, by default sorted by createdate DESC", + "schema": { + "type": "string" + } + }, + { + "name": "fromDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "toDate", + "in": "query", + "description": "", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageNumber", + "in": "query", + "description": "", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/person/{id}": { + "get": { + "tags": [ + "Notification" + ], + "summary": "Get all notifications by person id", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "days", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/{id}/resend_email": { + "post": { + "tags": [ + "Notification" + ], + "summary": "Resend Email to failed recipients by Notification ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Email Ministry Leadership, Email Ministry Members, Manage Event Attendees, Manage Ministry Invitations
\r\n", + "operationId": "ResendEmail", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Notification Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "description": "Recipient's person unique Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Email Ministry Leadership" + ] + }, + { + "Permissions": [ + "Email Ministry Members" + ] + }, + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Ministry Invitations" + ] + } + ] + } + } + }, + "/api/notification/{id}/resend_sms": { + "post": { + "tags": [ + "Notification" + ], + "summary": "Resend SMS to failed recipients by Notification ID", + "description": "**Authorization Policy:**
\r\nAllowed With one of these Permissions: Send SMS to Interested Ministry Members, Send SMS to Ministry Members, Manage Event Attendees, Manage Ministry Invitations
\r\n", + "operationId": "ResendSms", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Notification Id", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "description": "Recipient's person unique Ids", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithPermissions": [ + { + "Permissions": [ + "Send SMS to Interested Ministry Members" + ] + }, + { + "Permissions": [ + "Send SMS to Ministry Members" + ] + }, + { + "Permissions": [ + "Manage Event Attendees" + ] + }, + { + "Permissions": [ + "Manage Ministry Invitations" + ] + } + ] + } + } + }, + "/api/notification/{id}": { + "get": { + "tags": [ + "Notification" + ], + "summary": "Get a notification by id", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/{notificationId}/person/{personId}": { + "get": { + "tags": [ + "Notification" + ], + "operationId": "GetFiltered", + "parameters": [ + { + "name": "notificationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/user/count": { + "get": { + "tags": [ + "Notification" + ], + "summary": "Get Count of Pending Messages", + "operationId": "GetCountForCurrentUser", + "parameters": [ + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/person/{personUniqueId}/count-unique": { + "get": { + "tags": [ + "Notification" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "GetCountByUniqueId", + "parameters": [ + { + "name": "personUniqueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + } + }, + { + "name": "isViewed", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/notification/person/{id}/count": { + "get": { + "tags": [ + "Notification" + ], + "summary": "Get Count of Pending Message by Person Id", + "operationId": "GetCountByPersonId", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/status": { + "post": { + "tags": [ + "Notification" + ], + "summary": "Update notification status", + "operationId": "UpdateNotificationStatus", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationStatusViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationStatusViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationStatusViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_NotificationStatusViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/person/{personUniqueId}/status": { + "post": { + "tags": [ + "Notification" + ], + "operationId": "UpdateStatusByUniqueId", + "parameters": [ + { + "name": "personUniqueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "oldStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + } + }, + { + "name": "status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + } + }, + { + "name": "error", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/{notificationId}/person/{personUniqueId}/status": { + "post": { + "tags": [ + "Notification" + ], + "operationId": "UpdateStatusByNotificationIdAndUniqueId", + "parameters": [ + { + "name": "notificationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "personUniqueId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "channel", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + } + }, + { + "name": "oldStatus", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + } + }, + { + "name": "status", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + } + }, + { + "name": "error", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/sms-status": { + "post": { + "tags": [ + "Notification" + ], + "summary": "Gets SMS status for recipients", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Read Person Contact Data
\r\n
\r\n**Data Access:**
\r\nTrusted (internal) application access to notification.\r\nor\r\nREAD Access to person contact data", + "operationId": "GetPersonSmsStatus", + "parameters": [ + { + "name": "churchEntityId", + "in": "query", + "description": "Church Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceType", + "in": "query", + "description": "Notification source type", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "sourceId", + "in": "query", + "description": "Source ID if necessary", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "description": "List of person unique IDs", + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, + "responses": { + "200": { + "description": "Returns person SMS statuses.", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Notification_Dto_PersonSmsStatuses" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_Dto_PersonSmsStatuses" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_Dto_PersonSmsStatuses" + } + } + } + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Read Person Contact Data" + ] + } + ] + } + } + }, + "/api/notification/reassign-person": { + "post": { + "tags": [ + "Notification" + ], + "summary": "Reassign person in all tables of notification microservice", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nTrusted (internal) application access to notification.", + "operationId": "ReassignPerson", + "parameters": [ + { + "name": "oldPersonId", + "in": "query", + "description": "Old person unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "newPersonId", + "in": "query", + "description": "New person unique ID", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Person was reassigned successfully." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/user/notification-preference": { + "get": { + "tags": [ + "NotificationPreference" + ], + "summary": "Get notification preferences for current user\r\nIf corresponding preference is not found for specific source type, the method returns default preference", + "operationId": "GetForCurrentUser", + "parameters": [ + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "NotificationPreference" + ], + "summary": "Create/update set of notification preferences for current user", + "operationId": "UpsertForCurrentUser", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/device/{registrationId}/client/{clientId}/notification-preference": { + "get": { + "tags": [ + "NotificationPreference" + ], + "summary": "Get notification preferences for given device and client id", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetForDevice", + "parameters": [ + { + "name": "registrationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "NotificationPreference" + ], + "summary": "Create/update set of push notification registration preferences", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "UpsertByRegistrationIdAndClientId", + "parameters": [ + { + "name": "registrationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "clientId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/person/{personId}/notification-preference": { + "get": { + "tags": [ + "NotificationPreference" + ], + "summary": "Get notification preferences by person id (or by person id and sourceType)\r\nIf corresponding preference is not found for specific source type, the method returns default preference", + "operationId": "GetByPersonId", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "NotificationPreference" + ], + "summary": "Create/update set of notification preferences", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\nAllowed With Permission: Update Person Contact Data
\r\n", + "operationId": "UpsertByPerson", + "parameters": [ + { + "name": "personId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceViewModel" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ] + } + ] + } + } + }, + "/api/notification-preference/{id}": { + "get": { + "tags": [ + "NotificationPreference" + ], + "summary": "Get a notification preference by id", + "operationId": "GetById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification-preference/recipient-identifier": { + "get": { + "tags": [ + "NotificationPreference" + ], + "summary": "Get Person UniqueIDs and push notification registration ids by notificationSourceType", + "operationId": "GetPersonIdsByNotificationSourceType", + "parameters": [ + { + "name": "notificationSourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification-source-types": { + "get": { + "tags": [ + "NotificationPreference" + ], + "summary": "Gets all available notification source types. These types control system generated notifications for CHP Users.", + "operationId": "GetNotificationSourceTypes", + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/sms-configuration": { + "get": { + "tags": [ + "NotificationSmsConfiguration" + ], + "summary": "Gets all the notification SMS configurations", + "operationId": "GetAll", + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/notification/sms-configuration/church-entity/{churchEntityId}": { + "get": { + "tags": [ + "NotificationSmsConfiguration" + ], + "summary": "Gets notification SMS configurations by church entity id", + "operationId": "GetByChurchEntityId", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "entityType", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + }, + "post": { + "tags": [ + "NotificationSmsConfiguration" + ], + "summary": "Creates new notification SMS configuration", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage SMS Configuration
\r\n", + "operationId": "UpsertConfiguration", + "parameters": [ + { + "name": "churchEntityId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_NotificationSmsConfigurationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_NotificationSmsConfigurationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_NotificationSmsConfigurationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_NotificationSmsConfigurationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage SMS Configuration" + ] + } + ] + } + } + }, + "/api/notification/sms-configuration/preference": { + "get": { + "tags": [ + "NotificationSmsConfiguration" + ], + "summary": "Gets all mobile phones paired with SMS preference (opt-out flag) for the specified persons\r\nusing Church Entity ID and an optional entity specification to identify the relevant SMS configuration.", + "description": "**Authorization Policy:**
\r\nRequires access to Scope: hc:internal-systems
\r\n", + "operationId": "GetPreferencesAsync", + "parameters": [ + { + "name": "personIds", + "in": "query", + "description": "Person Unique IDs", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Church Entity ID used identify relevant SMS Configuration", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "entityType", + "in": "query", + "description": "Entity Type (optional) used to identify relevant SMS Configuration", + "schema": { + "type": "string" + } + }, + { + "name": "entityId", + "in": "query", + "description": "Entity ID (optional) used to identify relevant SMS Configuration", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "RequiredScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/notification/sms-consent/{personId}": { + "get": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Gets SMS Consent record for the specified Person (if it exists)", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\n", + "operationId": "GetConsentByPerson", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "post": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Sets SMS Consent for the specified Person", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\n", + "operationId": "SetConsentByPerson", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + }, + "delete": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Deletes the SMS Consent record (i.e. revokes consent) for the specified Person", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\n", + "operationId": "RevokeConsentByPerson", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api/notification/sms-opt-in/{personId}": { + "post": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Sets SMS Consent for the specified Person and enable default cell number to receive SMS", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed With Permission: Update Person Contact Data
\r\n
\r\n**Data Access:**
\r\nTrusted (internal) application access to notification.\r\nor\r\nWRITE Access to person contact data", + "operationId": "SmsOptIn", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "Person Unique ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "churchEntityId", + "in": "query", + "description": "Church Entity ID", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sourceType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + } + }, + { + "name": "sourceId", + "in": "query", + "description": "Source ID", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowedWithPermissions": [ + { + "Permissions": [ + "Update Person Contact Data" + ] + } + ] + } + } + }, + "/api/notification/sms-consent-request/{personId}": { + "post": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Requests a new SMS Consent solicitation email for the specified Person (containing a link with a one-time use verification token)", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\nAllowed with Person Record Ownership
\r\n", + "operationId": "SendSmsConsentRequest", + "parameters": [ + { + "name": "personId", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "sendRequestEvenIfPreviouslyConsented", + "in": "query", + "description": "", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ], + "AllowWithPersonRecordOwners": [ + { + "RecordOwners": [ + "personId" + ] + } + ] + } + } + }, + "/api/notification/sms-consent-request-retry": { + "post": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Allows the caller to submit a prior verification token for an SMS Consent solicitation \"workflow\" and request a new email with a new verification token", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n
\r\n**More Info:**
\r\nIntended for the use case of an expired verification token. This allows us to improve the UI/UX a bit and help the user out.", + "operationId": "RetrySmsConsentRequest", + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/notification/sms-consent-request-verification": { + "get": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Validates (verifies) a verification token for an SMS Consent solicition \"workflow\" without consuming the token and recording consent", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "VerifySmsConsentRequestToken", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + }, + "post": { + "tags": [ + "NotificationSmsConsent" + ], + "summary": "Validates (verifies) a verification token for an SMS Consent solicition \"workflow\" and records consent and consumes the token", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "VerifySmsConsentRequestAndSetConsent", + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_SmsConsentRequestFullfillmentViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/notification-hub/install": { + "post": { + "tags": [ + "PushNotificationHub" + ], + "summary": "", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "CreateInstallation", + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/notification-hub/update/{id}": { + "put": { + "tags": [ + "PushNotificationHub" + ], + "summary": "", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "UpdateInstallation", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushNotificationRegistationViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/notification-hub/uninstall/{id}": { + "delete": { + "tags": [ + "PushNotificationHub" + ], + "summary": "", + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "Uninstall", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/notification-hub/push-notification": { + "post": { + "tags": [ + "PushNotificationHub" + ], + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n", + "operationId": "PushNotification", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushMessage" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushMessage" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushMessage" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Notification_App_PushMessage" + } + } + } + }, + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/version": { + "get": { + "tags": [ + "Version" + ], + "operationId": "Get", + "responses": { + "200": { + "description": "Success" + } + } + } + } + }, + "components": { + "schemas": { + "Notification_App_DevicePlatform": { + "enum": [ + "Android", + "iOS" + ], + "type": "string" + }, + "Notification_App_NotificationSmsConfigurationViewModel": { + "type": "object", + "properties": { + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "smsCodeType": { + "$ref": "#/components/schemas/Notification_Model_SmsCodeType" + }, + "code": { + "type": "string", + "nullable": true + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Notification_App_PushMessage": { + "type": "object", + "properties": { + "devicePlatform": { + "$ref": "#/components/schemas/Notification_App_DevicePlatform" + }, + "title": { + "type": "string", + "nullable": true + }, + "subTitle": { + "type": "string", + "nullable": true + }, + "body": { + "type": "string", + "nullable": true + }, + "action": { + "$ref": "#/components/schemas/Notification_Model_Action" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Notification_App_PushNotificationRegistationViewModel": { + "required": [ + "deviceHandle", + "deviceId" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "devicePlatform": { + "$ref": "#/components/schemas/Notification_App_DevicePlatform" + }, + "deviceHandle": { + "maxLength": 300, + "type": "string" + }, + "deviceId": { + "maxLength": 100, + "type": "string" + } + }, + "additionalProperties": false + }, + "Notification_Dto_NotificationSmsStatus": { + "enum": [ + "Available", + "PersonNotFound", + "NoCellPhone", + "NoEmergencyContactCellPhone", + "HasNotConsented", + "DoNotTextIsSet", + "StopWasSent", + "PersonIsDeceased", + "NotInWhiteList", + "Failed" + ], + "type": "string" + }, + "Notification_Dto_PersonSmsStatus": { + "type": "object", + "properties": { + "personId": { + "type": "integer", + "format": "int32" + }, + "status": { + "$ref": "#/components/schemas/Notification_Dto_NotificationSmsStatus" + } + }, + "additionalProperties": false + }, + "Notification_Dto_PersonSmsStatuses": { + "type": "object", + "properties": { + "hasSmsConfigurationError": { + "type": "boolean" + }, + "statuses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_Dto_PersonSmsStatus" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Notification_Model_Action": { + "type": "object", + "properties": { + "source": { + "type": "string", + "nullable": true + }, + "type": { + "type": "string", + "nullable": true + }, + "uri": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Notification_Model_NotificationChannelType": { + "enum": [ + "All", + "Email", + "Sms", + "App", + "Push" + ], + "type": "string" + }, + "Notification_Model_NotificationLabelType": { + "enum": [ + "None", + "Favorite" + ], + "type": "string" + }, + "Notification_Model_NotificationSourceType": { + "enum": [ + "Unknown", + "FlowWorkItemAssigned", + "FlowWorkItemReassigned", + "FlowWorkItemCommented", + "FlowWorkItemOverdue", + "FlowWorkItemBlocked", + "MinistryMemberInterested", + "MinistryMemberStatusChanged", + "MinistryMemberNoteCreated", + "MinistryMember", + "DeliveryResult", + "ServingOpportunityVolunteer", + "ServingOpportunityVolunteerInterested", + "DebugEmail", + "VerificationEmail", + "AddedToMinistryAsLeader", + "WorkflowCommunication", + "ReminderNotification", + "EventAttendee", + "WorkflowTaskEscalated", + "WorkflowTaskCommented", + "WorkflowTaskReassigned", + "WorkflowTaskBlocked", + "WorkflowTasksPastDueDigest", + "WorkflowTasksDueTodayDigest", + "WorkflowTasksNewlyCreatedOrAssignedDigest", + "MemberEngagementStartOfService", + "MemberEngagementDailyVerse", + "MemberEngagementMilestoneAchieved", + "MemberEngagementCustomPastorMessage", + "InviteAndNotifyMinistry", + "SystemCommunication", + "MinistryMemberSms", + "SmsConsentRequest", + "EventCheckInVolunteer", + "GivingCommunication", + "EventContact", + "EventCheckInAttendee", + "ServingOpportunityVolunteerSms", + "ServingOpportunityVolunteerUnscheduled", + "MemberEngagementDailyDevotional", + "MyFollowUpsManualCommunication" + ], + "type": "string" + }, + "Notification_Model_NotificationSourceTypeCategory": { + "enum": [ + "Discipleship", + "Events", + "Ministry", + "System", + "Workflow", + "MemberEngagement", + "Giving" + ], + "type": "string" + }, + "Notification_Model_NotificationStatusType": { + "enum": [ + "Unprocessed", + "Pending", + "Running", + "Succeeded", + "Failed", + "Skipped" + ], + "type": "string" + }, + "Notification_Model_SmsCodeType": { + "enum": [ + "ShortCode", + "LongCode" + ], + "type": "string" + }, + "Notification_NotificationPreferenceChannelViewModel": { + "type": "object", + "properties": { + "notificationChannelType": { + "type": "integer", + "format": "int32" + }, + "notificationChannelTypeName": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "value": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "Notification_NotificationPreferenceViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "pushNotificationRegistrationId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceType": { + "type": "integer", + "format": "int32" + }, + "sourceTypeName": { + "type": "string", + "nullable": true + }, + "sourceTypeDescription": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "channels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationPreferenceChannelViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Notification_NotificationRecipientViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "pushNotificationRegistrationId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "channel": { + "$ref": "#/components/schemas/Notification_Model_NotificationChannelType" + }, + "status": { + "$ref": "#/components/schemas/Notification_Model_NotificationStatusType" + }, + "error": { + "type": "string", + "nullable": true + }, + "isViewed": { + "type": "boolean" + }, + "retryCount": { + "type": "integer", + "format": "int32" + }, + "person": { + "$ref": "#/components/schemas/Notification_PersonLiteViewModel" + }, + "mergeVariableReplacements": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Notification_NotificationSenderContactViewModel": { + "type": "object", + "properties": { + "senderIdentifier": { + "type": "string", + "nullable": true + }, + "senderName": { + "type": "string", + "nullable": true + }, + "replyIdentifier": { + "type": "string", + "nullable": true + }, + "reportPersonId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ccToSender": { + "type": "boolean" + }, + "person": { + "$ref": "#/components/schemas/Notification_PersonLiteViewModel" + } + }, + "additionalProperties": false + }, + "Notification_NotificationStatusViewModel": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "isViewed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Notification_NotificationViewModel": { + "required": [ + "body", + "sourceId", + "summary" + ], + "type": "object", + "properties": { + "attachments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "id": { + "type": "integer", + "format": "int32" + }, + "churchEntityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceId": { + "type": "integer", + "format": "int32" + }, + "sourceId2": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sourceId3": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "groupId": { + "type": "string", + "nullable": true + }, + "sourceType": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceType" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "label": { + "$ref": "#/components/schemas/Notification_Model_NotificationLabelType" + }, + "payload": { + "type": "string", + "nullable": true + }, + "createDate": { + "type": "integer", + "format": "int64" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification_NotificationRecipientViewModel" + }, + "nullable": true + }, + "senderContact": { + "$ref": "#/components/schemas/Notification_NotificationSenderContactViewModel" + }, + "allFailed": { + "type": "boolean" + }, + "allSkipped": { + "type": "boolean" + }, + "category": { + "$ref": "#/components/schemas/Notification_Model_NotificationSourceTypeCategory" + } + }, + "additionalProperties": false + }, + "Notification_PersonLiteViewModel": { + "required": [ + "email", + "firstName", + "lastName" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "pattern": "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:|\\\\)+)\\])", + "type": "string" + }, + "emailVerifyDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isEmailVerified": { + "type": "boolean" + }, + "sourceClientId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Notification_SmsConsentRequestFullfillmentViewModel": { + "type": "object", + "properties": { + "token": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + } + } + } +} diff --git a/test/spec/saddlebackWorkflowApi.json b/test/spec/saddlebackWorkflowApi.json new file mode 100644 index 000000000..f50830547 --- /dev/null +++ b/test/spec/saddlebackWorkflowApi.json @@ -0,0 +1,1054 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "HC Workflows Service Web API", + "version": "v1" + }, + "paths": { + "/api/bootstrap": { + "get": { + "tags": [ + "Bootstrap" + ], + "operationId": "GetBootstrap", + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/enumerations": { + "get": { + "tags": [ + "Bootstrap" + ], + "description": "**Authorization Policy:**
\r\nAnonymous Access Allowed
\r\n", + "operationId": "GetEnumerations", + "responses": { + "200": { + "description": "Success" + } + }, + "x-hc-security": { + "AllowAnonymous": true + } + } + }, + "/api/rpc": { + "post": { + "tags": [ + "Rpc" + ], + "summary": "Handle RPC request", + "description": "**Authorization Policy:**
\r\nAllowed With Scope: hc:internal-systems
\r\n
\r\n**Data Access:**
\r\nExecute functionality exposed via the RPC interface.", + "operationId": "Rpc", + "requestBody": { + "description": "RPC command", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RpcRestContainer" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RpcRestContainer" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RpcRestContainer" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RpcRestContainer" + } + } + } + }, + "responses": { + "200": { + "description": "Returns RPC operation result." + }, + "400": { + "description": "Invalid RPC model." + }, + "403": { + "description": "Not authorized." + } + }, + "x-hc-security": { + "AllowedWithScopes": [ + { + "Scopes": [ + "hc:internal-systems" + ] + } + ] + } + } + }, + "/api/rule": { + "get": { + "tags": [ + "Rule" + ], + "summary": "Gets a collection of Rules By associated Entity Type and Entity ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nREAD access to a collection of Rules for an entity, with only basic descriptive attributes", + "operationId": "GetByEntity", + "parameters": [ + { + "name": "EntityType", + "in": "query", + "description": "Entity Type to which requested Rules are associated (via Entity Conditions, or the right-hand side of Attribute Conditions)", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "EntityId", + "in": "query", + "description": "Entity ID to which requested Rules are associated (via Entity Conditions, or the right-hand side of Attribute Conditions)", + "required": true, + "schema": { + "minimum": 1, + "type": "integer", + "format": "int32" + } + }, + { + "name": "ChurchEntityIds", + "in": "query", + "description": "Comma-separated list of Church Entity IDs", + "schema": { + "type": "string" + } + }, + { + "name": "IsActive", + "in": "query", + "description": "Optional filter to request only Active or Inactive Rules", + "schema": { + "type": "boolean" + } + }, + { + "name": "Query", + "in": "query", + "description": "Optional free-text search query (will be matched, as if surrounded by wildcards, against Rule Name)", + "schema": { + "type": "string" + } + }, + { + "name": "SecondaryEntityType", + "in": "query", + "description": "Optional secondary Entity Type to which requested Rules are also associated (via Entity Conditions, or the right-hand side of Attribute Conditions)", + "schema": { + "type": "string" + } + }, + { + "name": "SecondaryEntityId", + "in": "query", + "description": "Optional secondary Entity ID to which requested Rules are also associated (via Entity Conditions, or the right-hand side of Attribute Conditions)", + "schema": { + "minimum": 1, + "type": "integer", + "format": "int32" + } + }, + { + "name": "IncludeSystemRules", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "SortQuery", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Sort", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortColumns", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Workflow_App_Sorting" + } + } + }, + { + "name": "SortColumn", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsDescendingSort", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Offset", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "Limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "DBLimit", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "PageNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_SearchResultsViewModel_RuleViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_SearchResultsViewModel_RuleViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_SearchResultsViewModel_RuleViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + }, + "post": { + "tags": [ + "Rule" + ], + "summary": "Creates a new Rule", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nCREATE a new Rule", + "operationId": "CreateRule", + "requestBody": { + "description": "Saddleback.Cm.WebApp.Workflows.ViewModels.RuleDetailsViewModel Rule to create", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/rule/{id}": { + "get": { + "tags": [ + "Rule" + ], + "summary": "Gets the full details of a Rule by ID", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nREAD access to the full details of a single specified Rule", + "operationId": "GetDetailedById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "integer: Rule ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + }, + "put": { + "tags": [ + "Rule" + ], + "summary": "Updates a Rule", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nUPDATE the specified Rule\r\n\r\n**More Info:**
\r\nThis method is not intended to enable the caller to transform an existing rule into a completely different rule.\r\nIt only allows sensible modifications to an existing rule.\r\nCurrently this method will *ONLY* update the following:\r\n* Name\r\n* Description\r\n* Active/Inactive \"Status\"\r\n* Entity Conditions, Attribute Conditions and Actions (collection upserts)\r\nThis method will *NOT* update (so as not to change the \"identity\" of the Rule) the following:\r\n* Church Entity ID\r\nIf an existing rule needs to be discarded and replaced with a different rule, this should be accomplished via\r\na delete and an insert.", + "operationId": "UpdateRule", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "integer: Follow Up Rule ID", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "description": "Saddleback.Cm.WebApp.Workflows.ViewModels.RuleDetailsViewModelRule details to be updated", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + }, + "409": { + "description": "Conflict", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_Model_StandardErrorResponse" + } + } + } + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + }, + "delete": { + "tags": [ + "Rule" + ], + "summary": "Deletes a Rule", + "description": "**Authorization Policy:**
\r\nRequires access to Permission: Manage Follow Up Rules
\r\n
\r\n**Data Access:**
\r\nDELETE a single specified Rule (soft/logical delete)", + "operationId": "DeleteRule", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/Workflow_App_RuleDetailsViewModel" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "x-hc-security": { + "RequiredPermissions": [ + { + "Permissions": [ + "Manage Follow Up Rules" + ] + } + ] + } + } + }, + "/api/rule-builder-metadata/attribute": { + "get": { + "tags": [ + "RuleBuilderMetadata" + ], + "summary": "Gets a collection of Attributes allowed in Rule Attribute Conditions, and associated metadata to aid Rule Building, by Entity Type", + "description": "**Data Access:**
\r\nREAD access to a collection of Attributes allowed in Rule Attribute Conditions, and associated metadata", + "operationId": "GetAttributesByEntityType", + "parameters": [ + { + "name": "entityType", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success" + } + } + } + }, + "/api/version": { + "get": { + "tags": [ + "Version" + ], + "operationId": "Get", + "responses": { + "200": { + "description": "Success" + } + } + } + } + }, + "components": { + "schemas": { + "Workflow_App_RpcRestContainer": { + "type": "object", + "properties": { + "body": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Workflow_App_RuleActionSettingViewModel": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "description": "Action Setting Key/Name/Property" + }, + "value": { + "type": "string", + "description": "Action Setting Value. Must be populated for Inserts, but may be null/empty for updates (to allow deletion).", + "nullable": true + }, + "ruleActionId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Workflow_App_RuleActionViewModel": { + "required": [ + "actionType" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "order": { + "type": "integer", + "format": "int32" + }, + "action": { + "type": "string", + "description": "Friendly Action Name", + "nullable": true + }, + "actionType": { + "$ref": "#/components/schemas/Workflow_Model_ActionType" + }, + "actionSettings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Workflow_App_RuleActionSettingViewModel" + }, + "nullable": true + }, + "executionDelay": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Workflow_App_RuleAttributeConditionViewModel": { + "required": [ + "attribute", + "condition" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "attribute": { + "$ref": "#/components/schemas/Workflow_Model_AttributeType" + }, + "condition": { + "$ref": "#/components/schemas/Workflow_Model_ConditionType" + }, + "parameter": { + "type": "string", + "nullable": true + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "doesEntityOwnRule": { + "type": "boolean" + }, + "order": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Workflow_App_RuleDetailsViewModel": { + "required": [ + "churchEntityId", + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "entityConditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Workflow_App_RuleEntityConditionViewModel" + }, + "nullable": true + }, + "attributeConditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Workflow_App_RuleAttributeConditionViewModel" + }, + "nullable": true + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Workflow_App_RuleActionViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Workflow_App_RuleEntityConditionViewModel": { + "required": [ + "condition" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "entityType": { + "type": "string", + "nullable": true + }, + "entityId": { + "type": "integer", + "format": "int32" + }, + "condition": { + "$ref": "#/components/schemas/Workflow_Model_ConditionType" + }, + "parameter": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Workflow_App_RuleViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "churchEntityId": { + "type": "integer", + "format": "int32" + }, + "churchEntityName": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "createDate": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "$ref": "#/components/schemas/Workflow_PersonSecurityUltraLiteViewModel" + }, + "modifyDate": { + "type": "string", + "format": "date-time" + }, + "modifiedBy": { + "$ref": "#/components/schemas/Workflow_PersonSecurityUltraLiteViewModel" + } + }, + "additionalProperties": false + }, + "Workflow_App_SortDirection": { + "enum": [ + "Ascending", + "Descending" + ], + "type": "string" + }, + "Workflow_App_Sorting": { + "type": "object", + "properties": { + "sortColumn": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/Workflow_App_SortDirection" + } + }, + "additionalProperties": false + }, + "Workflow_Model_ActionType": { + "enum": [ + "Unknown", + "SendEmail", + "CreateFollowUp", + "CancelDelayedActions" + ], + "type": "string" + }, + "Workflow_Model_AttributeType": { + "enum": [ + "Unknown", + "Campus", + "AnswerSourceType", + "AnswerSourceEntity", + "AnswerValue", + "PersonHasMetPrerequisiteMilestones" + ], + "type": "string" + }, + "Workflow_Model_ConditionType": { + "enum": [ + "Unknown", + "IsSelected", + "RelatedRecordAdded", + "RelatedRecordEdited", + "RelatedRecordDeleted", + "IsEqualTo", + "IsNotSelected", + "HasValue", + "DoesNotHaveValue", + "IsNotEqualTo", + "Contains", + "DoesNotContain", + "IsLessThan", + "IsLessThanOrEqualTo", + "IsGreaterThan", + "IsGreaterThanOrEqualTo", + "IsBetween", + "IsTrue", + "IsFalse" + ], + "type": "string" + }, + "Workflow_Model_StandardErrorResponse": { + "type": "object", + "properties": { + "message": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Workflow_PersonSecurityUltraLiteViewModel": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "fullName": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "avatarUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Workflow_SearchResultsViewModel_RuleViewModel": { + "type": "object", + "properties": { + "resultCount": { + "type": "integer", + "format": "int32" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Workflow_App_RuleViewModel" + }, + "nullable": true + } + }, + "additionalProperties": false + } + } + } +} diff --git a/tsconfig.json b/tsconfig.json index 8d27e49a8..704de716d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,7 @@ { "compilerOptions": { + "baseUrl": "./src", + "jsx": "react", "outDir": "./dist", "target": "es2019", "module": "commonjs", diff --git a/types/index.d.ts b/types/index.d.ts index 7bbad057f..bda954b1f 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,9 +1,12 @@ +import { Environment, Service } from '../src/utils/saddleback/getUrlByServiceEnv'; + export declare enum HttpClient { FETCH = 'fetch', XHR = 'xhr', NODE = 'node', AXIOS = 'axios', ANGULAR = 'angular', + SADDLEBACK = 'saddleback', } export declare enum Indent { @@ -15,7 +18,7 @@ export declare enum Indent { export type Options = { input: string | Record; output: string; - httpClient?: HttpClient | 'fetch' | 'xhr' | 'node' | 'axios' | 'angular'; + httpClient?: HttpClient | 'fetch' | 'xhr' | 'node' | 'axios' | 'angular' | 'saddleback'; clientName?: string; useOptions?: boolean; useUnionTypes?: boolean; @@ -29,12 +32,30 @@ export type Options = { write?: boolean; }; +export type CustomConfig = Options & { + additionalModelFileExtension?: boolean; + additionalServiceFileExtension?: boolean; + removeLodashPrefixes?: boolean; + username: string; + password: string; + useAutoCoreService?: boolean; + useAutoEventService?: boolean; + useAutoNotificationService?: boolean; + useAutoWorkflowsService?: boolean; + useEnvironment?: Environment | 'dev' | 'stage' | 'stage2' | 'feature'; + useService?: Service | 'Workflows' | 'Events' | 'Notifications' | 'Core' | 'Journey' | 'Giving' | 'SmallGroup'; + filterMethod: 'include' | 'exclude'; + filterArray: string[]; +}; + export declare function generate(options: Options): Promise; +export declare function generateSaddlebackSpec(config: CustomConfig): Promise; declare type OpenAPI = { HttpClient: HttpClient; Indent: Indent; generate: typeof generate; + generateCustomSpec: typeof generateSaddlebackSpec; }; export default OpenAPI;