From 13d3b6fd99d2e15a98c6c5a89fcaef1b1d609947 Mon Sep 17 00:00:00 2001 From: Azeem Muzammil Date: Thu, 9 Nov 2023 11:49:07 +0530 Subject: [PATCH 1/7] Generate candid connectors --- .github/CODEOWNERS | 7 + .github/pull_request_template.md | 12 + .../workflows/build-with-bal-test-native.yml | 17 + .github/workflows/ci.yml | 19 + .github/workflows/daily-build.yml | 14 + .github/workflows/dev-stg-release.yml | 21 + .github/workflows/pull-request.yml | 14 + .github/workflows/release.yml | 16 + .gitignore | 3 + ballerina/.gitignore | 3 + ballerina/Ballerina.toml | 13 + ballerina/Module.md | 3 + ballerina/Package.md | 3 + ballerina/icon.png | Bin 0 -> 20675 bytes ballerina/modules/charitycheckpdf/Module.md | 6 + ballerina/modules/charitycheckpdf/client.bal | 55 + .../modules/charitycheckpdf/resources/.keep | 0 .../modules/charitycheckpdf/tests/test.bal | 11 + ballerina/modules/charitycheckpdf/types.bal | 114 + ballerina/modules/charitycheckpdf/utils.bal | 41 + ballerina/modules/essentials/Module.md | 6 + ballerina/modules/essentials/client.bal | 118 + ballerina/modules/essentials/resources/.keep | 0 ballerina/modules/essentials/tests/test.bal | 31 + ballerina/modules/essentials/types.bal | 757 ++ ballerina/modules/essentials/utils.bal | 41 + ballerina/modules/premier/Module.md | 6 + ballerina/modules/premier/client.bal | 105 + ballerina/modules/premier/resources/.keep | 0 ballerina/modules/premier/tests/test.bal | 27 + ballerina/modules/premier/types.bal | 2585 ++++++ ballerina/modules/premier/utils.bal | 41 + docs/CharityCheckPdf_v1.0.json | 285 + docs/Essentials_v1.0.json | 2669 ++++++ docs/Premier_v1.0.json | 7347 +++++++++++++++++ 35 files changed, 14390 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/build-with-bal-test-native.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/daily-build.yml create mode 100644 .github/workflows/dev-stg-release.yml create mode 100644 .github/workflows/pull-request.yml create mode 100644 .github/workflows/release.yml create mode 100644 ballerina/.gitignore create mode 100644 ballerina/Ballerina.toml create mode 100644 ballerina/Module.md create mode 100644 ballerina/Package.md create mode 100644 ballerina/icon.png create mode 100644 ballerina/modules/charitycheckpdf/Module.md create mode 100644 ballerina/modules/charitycheckpdf/client.bal create mode 100644 ballerina/modules/charitycheckpdf/resources/.keep create mode 100644 ballerina/modules/charitycheckpdf/tests/test.bal create mode 100644 ballerina/modules/charitycheckpdf/types.bal create mode 100644 ballerina/modules/charitycheckpdf/utils.bal create mode 100644 ballerina/modules/essentials/Module.md create mode 100644 ballerina/modules/essentials/client.bal create mode 100644 ballerina/modules/essentials/resources/.keep create mode 100644 ballerina/modules/essentials/tests/test.bal create mode 100644 ballerina/modules/essentials/types.bal create mode 100644 ballerina/modules/essentials/utils.bal create mode 100644 ballerina/modules/premier/Module.md create mode 100644 ballerina/modules/premier/client.bal create mode 100644 ballerina/modules/premier/resources/.keep create mode 100644 ballerina/modules/premier/tests/test.bal create mode 100644 ballerina/modules/premier/types.bal create mode 100644 ballerina/modules/premier/utils.bal create mode 100644 docs/CharityCheckPdf_v1.0.json create mode 100644 docs/Essentials_v1.0.json create mode 100644 docs/Premier_v1.0.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..9a5fd73 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,7 @@ +# Lines starting with '#' are comments. +# Each line is a file pattern followed by one or more owners. + +# See: https://help.github.com/articles/about-codeowners/ + +# These owners will be the default owners for everything in the repo. +* @AzeemMuzammil diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..96b073c --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,12 @@ +## Purpose + +Fixes: + +## Examples + +## Checklist +- [ ] Linked to an issue +- [ ] Updated the changelog +- [ ] Added tests +- [ ] Updated the spec +- [ ] Checked native-image compatibility diff --git a/.github/workflows/build-with-bal-test-native.yml b/.github/workflows/build-with-bal-test-native.yml new file mode 100644 index 0000000..a00897f --- /dev/null +++ b/.github/workflows/build-with-bal-test-native.yml @@ -0,0 +1,17 @@ +name: GraalVM Check + +on: + schedule: + - cron: "30 18 * * *" + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} + cancel-in-progress: true + +jobs: + call_workflow_template: + name: Run Workflow Template + if: ${{ github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository_owner == 'ballerina-platform') }} + uses: ballerina-platform/ballerina-standard-library/.github/workflows/build-with-bal-test-graalvm-connector-template.yml@main + secrets: inherit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c8c25ac --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,19 @@ +name: CI + +on: + push: + branches: + - main + - 2201.[0-9]+.x + repository_dispatch: + types: check_connector_for_breaking_changes + +jobs: + call_workflow: + name: Run Connector Build Workflow + if: ${{ github.repository_owner == 'ballerina-platform' }} + uses: ballerina-platform/ballerina-standard-library/.github/workflows/build-connector-template.yml@main + secrets: inherit + with: + repo-name: module-ballerinax-candid + publish-required: 'true' diff --git a/.github/workflows/daily-build.yml b/.github/workflows/daily-build.yml new file mode 100644 index 0000000..17a22c4 --- /dev/null +++ b/.github/workflows/daily-build.yml @@ -0,0 +1,14 @@ +name: Daily build + +on: + schedule: + - cron: "30 2 * * *" + +jobs: + call_workflow: + name: Run Daily Build Workflow + if: ${{ github.repository_owner == 'ballerina-platform' }} + uses: ballerina-platform/ballerina-standard-library/.github/workflows/daily-build-connector-template.yml@main + secrets: inherit + with: + repo-name: module-ballerinax-candid diff --git a/.github/workflows/dev-stg-release.yml b/.github/workflows/dev-stg-release.yml new file mode 100644 index 0000000..49d6f52 --- /dev/null +++ b/.github/workflows/dev-stg-release.yml @@ -0,0 +1,21 @@ +name: Publish to the Ballerina Dev\Stage Central + +on: + workflow_dispatch: + inputs: + environment: + type: choice + description: Select Environment + required: true + options: + - DEV CENTRAL + - STAGE CENTRAL + +jobs: + call_workflow: + name: Run Dev\Stage Central Publish Workflow + if: ${{ github.repository_owner == 'ballerina-platform' }} + uses: ballerina-platform/ballerina-standard-library/.github/workflows/dev-stage-central-publish-connector-template.yml@main + secrets: inherit + with: + environment: ${{ github.event.inputs.environment }} diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 0000000..5dda019 --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,14 @@ +name: PR Build + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} + cancel-in-progress: true + +on: pull_request + +jobs: + call_workflow: + name: Run PR Build Workflow + if: ${{ github.repository_owner == 'ballerina-platform' }} + uses: ballerina-platform/ballerina-standard-library/.github/workflows/pr-build-connector-template.yml@main + secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..5f4c8d4 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,16 @@ +name: Publish Release + +on: + workflow_dispatch: + repository_dispatch: + types: [ connector-release-pipeline ] + +jobs: + call_workflow: + name: Run Release Workflow + if: ${{ github.repository_owner == 'ballerina-platform' }} + uses: ballerina-platform/ballerina-standard-library/.github/workflows/release-package-template.yml@main + secrets: inherit + with: + package-name: candid + package-org: ballerinax diff --git a/.gitignore b/.gitignore index 524f096..5c40da0 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* replay_pid* + +# DS_Store file +*.DS_Store \ No newline at end of file diff --git a/ballerina/.gitignore b/ballerina/.gitignore new file mode 100644 index 0000000..7512ebe --- /dev/null +++ b/ballerina/.gitignore @@ -0,0 +1,3 @@ +target +generated +Config.toml diff --git a/ballerina/Ballerina.toml b/ballerina/Ballerina.toml new file mode 100644 index 0000000..7f3a5d4 --- /dev/null +++ b/ballerina/Ballerina.toml @@ -0,0 +1,13 @@ +[package] +distribution = "2201.8.0" +org = "ballerinax" +name = "candid" +version = "0.1.0" +authors = ["Ballerina"] +keywords = ["candid", "nonprofit", "philanthropy"] +repository = "https://github.com/ballerina-platform/module-ballerinax-candid" +icon = "icon.png" +license = ["Apache-2.0"] + +[build-options] +observabilityIncluded = true \ No newline at end of file diff --git a/ballerina/Module.md b/ballerina/Module.md new file mode 100644 index 0000000..21eba27 --- /dev/null +++ b/ballerina/Module.md @@ -0,0 +1,3 @@ +## Overview + +Candid.org is a nonprofit organization that provides information and resources related to philanthropy and the nonprofit sector. diff --git a/ballerina/Package.md b/ballerina/Package.md new file mode 100644 index 0000000..fb23e14 --- /dev/null +++ b/ballerina/Package.md @@ -0,0 +1,3 @@ +# Package Overview + +Candid.org is a nonprofit organization that provides information and resources related to philanthropy and the nonprofit sector. diff --git a/ballerina/icon.png b/ballerina/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..218a751308403a83ca3d49261ad9ee7239d4f789 GIT binary patch literal 20675 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 headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + http:Response response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } +} diff --git a/ballerina/modules/charitycheckpdf/resources/.keep b/ballerina/modules/charitycheckpdf/resources/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ballerina/modules/charitycheckpdf/tests/test.bal b/ballerina/modules/charitycheckpdf/tests/test.bal new file mode 100644 index 0000000..60fa20e --- /dev/null +++ b/ballerina/modules/charitycheckpdf/tests/test.bal @@ -0,0 +1,11 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/test; + +configurable ApiKeysConfig & readonly apiKeyConfig = ?; +Client baseClient = check new Client(apiKeyConfig, serviceUrl = "https://apidata.guidestar.org/charitycheckpdf"); + +@test:Config {} +isolated function testCharitycheckpdf_v1() { +} diff --git a/ballerina/modules/charitycheckpdf/types.bal b/ballerina/modules/charitycheckpdf/types.bal new file mode 100644 index 0000000..954e208 --- /dev/null +++ b/ballerina/modules/charitycheckpdf/types.bal @@ -0,0 +1,114 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/http; + +# Provides a set of configurations for controlling the behaviours when communicating with a remote HTTP endpoint. +@display {label: "Connection Config"} +public type ConnectionConfig record {| + # The HTTP version understood by the client + http:HttpVersion httpVersion = http:HTTP_2_0; + # Configurations related to HTTP/1.x protocol + ClientHttp1Settings http1Settings?; + # Configurations related to HTTP/2 protocol + http:ClientHttp2Settings http2Settings?; + # The maximum time to wait (in seconds) for a response before closing the connection + decimal timeout = 60; + # The choice of setting `forwarded`/`x-forwarded` header + string forwarded = "disable"; + # Configurations associated with request pooling + http:PoolConfiguration poolConfig?; + # HTTP caching related configurations + http:CacheConfig cache?; + # Specifies the way of handling compression (`accept-encoding`) header + http:Compression compression = http:COMPRESSION_AUTO; + # Configurations associated with the behaviour of the Circuit Breaker + http:CircuitBreakerConfig circuitBreaker?; + # Configurations associated with retrying + http:RetryConfig retryConfig?; + # Configurations associated with inbound response size limits + http:ResponseLimitConfigs responseLimits?; + # SSL/TLS-related options + http:ClientSecureSocket secureSocket?; + # Proxy server related options + http:ProxyConfig proxy?; + # Enables the inbound payload validation functionality which provided by the constraint package. Enabled by default + boolean validation = true; +|}; + +# Provides settings related to HTTP/1.x protocol. +public type ClientHttp1Settings record {| + # Specifies whether to reuse a connection for multiple requests + http:KeepAlive keepAlive = http:KEEPALIVE_AUTO; + # The chunking behaviour of the request + http:Chunking chunking = http:CHUNKING_AUTO; + # Proxy server related options + ProxyConfig proxy?; +|}; + +# Proxy server configurations to be used with the HTTP client endpoint. +public type ProxyConfig record {| + # Host name of the proxy server + string host = ""; + # Proxy server port + int port = 0; + # Proxy server username + string userName = ""; + # Proxy server password + @display {label: "", kind: "password"} + string password = ""; +|}; + +# Provides API key configurations needed when communicating with a remote HTTP endpoint. +public type ApiKeysConfig record {| + string subscriptionKey; +|}; + +public type BadRequest record { + # HTTP response status code. + string? code?; + # Diagnostic message for response status + string? message?; +}; + +public type TooManyRequests record { + # HTTP response status code. + string? code?; + # Diagnostic message for response status + string? message?; +}; + +public type Unauthorized record { + # HTTP response status code. + string? code?; + # Diagnostic message for response status + string? message?; +}; + +public type Forbidden record { + # HTTP response status code. + string? code?; + # Diagnostic message for response status + string? message?; +}; + +public type NotAcceptable record { + # HTTP response status code. + string? code?; + # Diagnostic message for response status + string? message?; +}; + +public type InternalServerError record { + # HTTP response status code. + string? code?; + # Diagnostic message for response status + string? message?; +}; + +public type NotFound record { + # HTTP response status code. + string? code?; + # Diagnostic message for response status + string? message?; +}; diff --git a/ballerina/modules/charitycheckpdf/utils.bal b/ballerina/modules/charitycheckpdf/utils.bal new file mode 100644 index 0000000..e8d07cd --- /dev/null +++ b/ballerina/modules/charitycheckpdf/utils.bal @@ -0,0 +1,41 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/url; + +type SimpleBasicType string|boolean|int|float|decimal; + +# Get Encoded URI for a given value. +# +# + value - Value to be encoded +# + return - Encoded string +isolated function getEncodedUri(anydata value) returns string { + string|error encoded = url:encode(value.toString(), "UTF8"); + if (encoded is string) { + return encoded; + } else { + return value.toString(); + } +} + +# Generate header map for given header values. +# +# + headerParam - Headers map +# + return - Returns generated map or error at failure of client initialization +isolated function getMapForHeaders(map headerParam) returns map { + map headerMap = {}; + foreach var [key, value] in headerParam.entries() { + if value is string || value is string[] { + headerMap[key] = value; + } else if value is int[] { + string[] stringArray = []; + foreach int intValue in value { + stringArray.push(intValue.toString()); + } + headerMap[key] = stringArray; + } else if value is SimpleBasicType { + headerMap[key] = value.toString(); + } + } + return headerMap; +} diff --git a/ballerina/modules/essentials/Module.md b/ballerina/modules/essentials/Module.md new file mode 100644 index 0000000..8a69f51 --- /dev/null +++ b/ballerina/modules/essentials/Module.md @@ -0,0 +1,6 @@ +Prints "Hello, World!" with a main function. +[//]: # (above is the module summary) + +# Module Overview +Provides an overview about the module when generating the API documentations. +For example, refer to https://lib.ballerina.io/ballerina/io/latest diff --git a/ballerina/modules/essentials/client.bal b/ballerina/modules/essentials/client.bal new file mode 100644 index 0000000..d3ce077 --- /dev/null +++ b/ballerina/modules/essentials/client.bal @@ -0,0 +1,118 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/http; + +# Search GuideStar’s most common set of data about nonprofits to quickly find organizations most relevant to your users, and use those results to get more data from our other APIs. API returns search result in JSON format. +public isolated client class Client { + final http:Client clientEp; + final readonly & ApiKeysConfig apiKeyConfig; + # Gets invoked to initialize the `connector`. + # + # + apiKeyConfig - API keys for authorization + # + config - The configurations to be used when initializing the `connector` + # + serviceUrl - URL of the target service + # + return - An error if connector initialization failed + public isolated function init(ApiKeysConfig apiKeyConfig, ConnectionConfig config = {}, string serviceUrl = "https://api.candid.org/essentials") returns error? { + http:ClientConfiguration httpClientConfig = {httpVersion: config.httpVersion, timeout: config.timeout, forwarded: config.forwarded, poolConfig: config.poolConfig, compression: config.compression, circuitBreaker: config.circuitBreaker, retryConfig: config.retryConfig, validation: config.validation}; + do { + if config.http1Settings is ClientHttp1Settings { + ClientHttp1Settings settings = check config.http1Settings.ensureType(ClientHttp1Settings); + httpClientConfig.http1Settings = {...settings}; + } + if config.http2Settings is http:ClientHttp2Settings { + httpClientConfig.http2Settings = check config.http2Settings.ensureType(http:ClientHttp2Settings); + } + if config.cache is http:CacheConfig { + httpClientConfig.cache = check config.cache.ensureType(http:CacheConfig); + } + if config.responseLimits is http:ResponseLimitConfigs { + httpClientConfig.responseLimits = check config.responseLimits.ensureType(http:ResponseLimitConfigs); + } + if config.secureSocket is http:ClientSecureSocket { + httpClientConfig.secureSocket = check config.secureSocket.ensureType(http:ClientSecureSocket); + } + if config.proxy is http:ProxyConfig { + httpClientConfig.proxy = check config.proxy.ensureType(http:ProxyConfig); + } + } + http:Client httpEp = check new (serviceUrl, httpClientConfig); + self.clientEp = httpEp; + self.apiKeyConfig = apiKeyConfig.cloneReadOnly(); + return; + } + # /essentials/v1 + # + # + payload - Below JSON request body is an example showing all available elements. Please use the examples from the API Documentation. + # + return - OK + resource isolated function post v1(Query payload) returns V1EssentialsResponse|error { + string resourcePath = string `/v1`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + V1EssentialsResponse response = check self.clientEp->post(resourcePath, request, httpHeaders); + return response; + } + # /essentials/v2 + # + # + payload - Below JSON request body is an example showing all available elements. Please use the examples from the API Documentation. + # + return - OK + resource isolated function post v2(Query payload) returns V2EssentialsResponse|error { + string resourcePath = string `/v2`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + V2EssentialsResponse response = check self.clientEp->post(resourcePath, request, httpHeaders); + return response; + } + # /essentials/v3 + # + # + payload - Below JSON request body is an example showing all available elements. Please use the examples from the API Documentation. + # + return - OK + resource isolated function post v3(V3Query payload) returns V3EssentialsResponse|error { + string resourcePath = string `/v3`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + V3EssentialsResponse response = check self.clientEp->post(resourcePath, request, httpHeaders); + return response; + } + # /essentials/lookup + # + # + return - OK + resource isolated function get lookup() returns EssentialsLookupResponse|error { + string resourcePath = string `/lookup`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + EssentialsLookupResponse response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } + # /essentials/lookup/{filter_name} + # + # + return - OK + resource isolated function get lookup/[string filter_name]() returns EssentialsFilteredLookupResponse|error { + string resourcePath = string `/lookup/${getEncodedUri(filter_name)}`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + EssentialsFilteredLookupResponse response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } + # /essentials/lookup/{filter_name}/{key_or_value} + # + # + filter_name - A list of all filters that can be used in Essentials endpoints. Found in the response of /essentials/lookup. + # + key_or_value - Key of filterable items. Found in the response of /essentials/lookup/{filter_name} + # + return - OK + resource isolated function get lookup/[string filter_name]/[string key_or_value]() returns EssentialsFilteredLookupResponse|error { + string resourcePath = string `/lookup/${getEncodedUri(filter_name)}/${getEncodedUri(key_or_value)}`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + EssentialsFilteredLookupResponse response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } +} diff --git a/ballerina/modules/essentials/resources/.keep b/ballerina/modules/essentials/resources/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ballerina/modules/essentials/tests/test.bal b/ballerina/modules/essentials/tests/test.bal new file mode 100644 index 0000000..3fb232d --- /dev/null +++ b/ballerina/modules/essentials/tests/test.bal @@ -0,0 +1,31 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/test; + +configurable ApiKeysConfig & readonly apiKeyConfig = ?; +Client baseClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/essentials"); + +@test:Config {} +isolated function testEssentials_v1() { +} + +@test:Config {} +isolated function testEssentials_v2() { +} + +@test:Config {} +isolated function testEssentials_v3() { +} + +@test:Config {} +isolated function testEssentials_lookup() { +} + +@test:Config {} +isolated function testEssentials_lookup_filter_name() { +} + +@test:Config {} +isolated function testEssentials_lookup_filter_name_key_or_value() { +} diff --git a/ballerina/modules/essentials/types.bal b/ballerina/modules/essentials/types.bal new file mode 100644 index 0000000..7337c62 --- /dev/null +++ b/ballerina/modules/essentials/types.bal @@ -0,0 +1,757 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/http; + +# Provides a set of configurations for controlling the behaviours when communicating with a remote HTTP endpoint. +@display {label: "Connection Config"} +public type ConnectionConfig record {| + # The HTTP version understood by the client + http:HttpVersion httpVersion = http:HTTP_2_0; + # Configurations related to HTTP/1.x protocol + ClientHttp1Settings http1Settings?; + # Configurations related to HTTP/2 protocol + http:ClientHttp2Settings http2Settings?; + # The maximum time to wait (in seconds) for a response before closing the connection + decimal timeout = 60; + # The choice of setting `forwarded`/`x-forwarded` header + string forwarded = "disable"; + # Configurations associated with request pooling + http:PoolConfiguration poolConfig?; + # HTTP caching related configurations + http:CacheConfig cache?; + # Specifies the way of handling compression (`accept-encoding`) header + http:Compression compression = http:COMPRESSION_AUTO; + # Configurations associated with the behaviour of the Circuit Breaker + http:CircuitBreakerConfig circuitBreaker?; + # Configurations associated with retrying + http:RetryConfig retryConfig?; + # Configurations associated with inbound response size limits + http:ResponseLimitConfigs responseLimits?; + # SSL/TLS-related options + http:ClientSecureSocket secureSocket?; + # Proxy server related options + http:ProxyConfig proxy?; + # Enables the inbound payload validation functionality which provided by the constraint package. Enabled by default + boolean validation = true; +|}; + +# Provides settings related to HTTP/1.x protocol. +public type ClientHttp1Settings record {| + # Specifies whether to reuse a connection for multiple requests + http:KeepAlive keepAlive = http:KEEPALIVE_AUTO; + # The chunking behaviour of the request + http:Chunking chunking = http:CHUNKING_AUTO; + # Proxy server related options + ProxyConfig proxy?; +|}; + +# Proxy server configurations to be used with the HTTP client endpoint. +public type ProxyConfig record {| + # Host name of the proxy server + string host = ""; + # Proxy server port + int port = 0; + # Proxy server username + string userName = ""; + # Proxy server password + @display {label: "", kind: "password"} + string password = ""; +|}; + +# Provides API key configurations needed when communicating with a remote HTTP endpoint. +public type ApiKeysConfig record {| + string subscriptionKey; +|}; + +public type V3EssentialsResponse_taxonomies_ntee_codes record { + # National Taxonomy of Exempt Entities + string? ntee_code?; + # Description of NTEE code + string? ntee_code_description?; +}; + +public type V3EssentialsResponse_taxonomies_foundation_code record { + # Foundation code that describes the organization + string? foundation_code?; + # Description of foundation code + string? foundation_code_description?; +}; + +public type Query record { + # Can be any string you'd like to search on, including EIN, organization name, keywords, etc. + string? search_terms?; + # The offset from the first result. Defaults to 0. + int? 'from?; + # The maximum number of hits to be returned. Defaults to 25. The maximum number allowed is 25. + int? size?; + Sort? sort?; + Filters? filters?; +}; + +public type OrganizationFilter record { + # GuideStar seal levels, comma separated. + string[]? profile_levels?; + # National Taxonomy of Exempt Entities (NTEE) major codes, comma separated. + string[]? ntee_major_codes?; + # National Taxonomy of Exempt Entities (NTEE) minor codes, comma separated. + string[]? ntee_minor_codes?; + # IRS subsection codes and/or descriptions, comma separated. + string[]? subsection_codes?; + # Foundation codes and/or descriptions, comma separated. + string[]? foundation_codes?; + # Flag indicating the organization has the most recent IRS BMF. Defaults to null. Otherwise true or false. + boolean? bmf_status?; + # Flag indicating the organization is pub78 verified. Value set as true or false. + boolean? pub78_verified?; + AffiliationTypeFilter? affiliation_type?; + SpecificExclusionsFilter? specific_exclusions?; + NumberRangeFilter? number_of_employees_range?; + IrsFormTypesFilter? form_types?; + AuditsFilter? audits?; +}; + +public type V3FinancialsFilter record { + V3FinancialsFilter_most_recent_year? most_recent_year?; + # Flag indicating the organization is required to file a 990-T. Value set as true or false. + boolean? required_to_file_990t?; + # Flag indicating the organization performed A-133 audit. Value set as true or false. + boolean? a_133_audit_performed?; +}; + +public type V3OrgProperties record { + # Flag indicating the organization has the most recent IRS BMF. Defaults to null. Otherwise true or false. + boolean? bmf_status?; + # Flag indicating the organization is pub78 verified. Value set as true or false. + boolean? pub78_verified?; + # Flag indicating the organization allows online giving. Value set as true or false. + boolean? allow_online_giving?; + # Flag indicating the organization has submitted demographics information. Value set as true or false. + boolean? dei_submitted?; + # Flag to exclude revoked organizations. Value set as true or false. + boolean? exclude_revoked_organizations?; + # Flag to exclude defunct or merged organizations. Value set as true or false. + boolean? exclude_defunct_or_merged_organizations?; + AffiliationTypeFilter? relationship_type?; +}; + +public type NumberRangeFilter record { + # Minimum number + int? min?; + # Maximum number + int? max?; +}; + +public type GeographyFilter record { + string[]? state?; + # Five digit ZIP code + string? zip?; + # Radius from the specified ZIP code in miles. Allowed range is between 1 and 50 miles. Values exceeding 50 will default to a radius of 50 miles. + int? radius?; + string[]? msa?; + string[]? city?; + string[]? county?; +}; + +public type IrsFormTypesFilter record { + # Flag indicating the organization files a form 990. Value set as true or false. + boolean? f990?; + # Flag indicating the organization files a form 990-PF. Value set as true or false. + boolean? f990pf?; + # Flag indicating the organization files a form 990 EZ. Value set as true or false. + boolean? f990ez?; + # Flag indicating the organization files a form 990N. Value set as true or false. + boolean? f990n?; + # Flag indicating the organization is required to file a 990-T. Value set as true or false. + boolean? required_to_file_990t?; +}; + +public type V3EssentialsResponse_geography record { + # Address line 1 of the organization + string? address_line_1?; + # Address line 2 of the organization + string? address_line_2?; + # City of the organization's address + string? city?; + # State (Abbreviation) of the organization's address + string? state?; + # Zip code of the organization's address + decimal? zip?; + # Metropolitan statistical area of the organization's adresss + string? msa?; + # Congressional district of the organization's address + string? congressional_district?; + # County of the organization's address + string? county?; + # latitude of the organization's adress + decimal? latitude?; + # longitude of the organization's adress + decimal? longitude?; +}; + +public type V3EssentialsResponse_properties_relationship_type record { + # If the organization is a parent + boolean? parent?; + # If the organization is a subordinate + boolean? subordinate?; + # If the organization is independent + boolean? independent?; + # If the organization is a national headquarter + boolean? headquarters?; +}; + +public type Filters record { + GeographyFilter? geography?; + OrganizationFilter? organization?; + FinancialsFilter? financials?; +}; + +public type V3FinancialsFilter_most_recent_year record { + V3FinancialsFilter_most_recent_year_form_types? form_types?; + NumberRangeFilter? total_revenue?; + NumberRangeFilter? total_expenses?; + NumberRangeFilter? total_assets?; +}; + +public type V3EssentialsResponse_financials record { + V3EssentialsResponse_financials_most_recent_year? most_recent_year?; + # Gross receipts of the organization reported on the BMF + decimal? bmf_gross_receipts?; + # Assets of the organization reported on the BMF + decimal? bmf_assets?; + # Flag indicating the organization is required to file a 990-T. + boolean? required_to_file_990t?; + # Flag indicating the organization performed A-133 audit. + boolean? a_133_audit_performed?; +}; + +public type Sort record { + # Leave blank to sort by relevance. + "organization_name"|"bmf_gross_receipts"|"bmf_assets" sort_by?; + # Default value is true (ascending). Set to false to sort by descending value. + boolean? 'ascending?; +}; + +public type LastUpdated record { + # A filter, along with end_date, defines a range on date_type, in the format yyyy-MM-ddTHH:mm:ss. + string? start_date?; + # A filter, along with start_date, defines a range on date_type, in the format yyyy-MM-ddTHH:mm:ss. + string? end_date?; + # A filter, to specify updates made to a organization over the specified end_date and start_date. + "seal_last_modified"|"profile_last_modified"|"dei_last_modified"|"financials_last_modified"|"last_modified" date_type?; +}; + +public type V3EssentialsResponse_properties record { + # If the organization is present on the BMF + boolean? bmf_status?; + # If the organization is Pub78 verified + boolean? pub78_verified?; + # If the organization allows online giving + boolean? allow_online_giving?; + # If the organization has submitted demographics information + boolean? dei_submitted?; + # If the organization is revoked + boolean? revoked?; + # If the organization is defuncted or merged + boolean? defuncted_or_merged?; + V3EssentialsResponse_properties_relationship_type? relationship_type?; + # Organization's relation with other organizations. + V3EssentialsResponse_properties_relationship_details? relationship_details?; +}; + +public type EssentialsFilteredLookupResponse record { + # HTTP response status code. + int? code?; + string? message?; + int? took?; + string[]? errors?; + # A list of all the tables used as a filter_name with the Essentials Lookup endpoints + EssentialsFilteredLookupResponse_data[]? data?; +}; + +public type V2EssentialsResponse_data_hits record { + # A unique number identifying organizations and organizational entities + string? organization_id?; + # Deprecated Bridge ID + string? bridge_id?; + # Employer Identification Number + string? ein?; + # The public name recognized by the IRS + string? organization_name?; + # Organization name Also Known As + string? also_known_as?; + # Mission statement for the organization + string? mission?; + # Address line 1 of the organization + string? address_line_1?; + # Address line 2 of the organization + string? address_line_2?; + # City of the organization's address + string? city?; + # State (Abbreviation) of the organization's address + string? state?; + # Zip code of the organization's address + string? zip?; + # County of the organization's address + string? county?; + # Metropolitan statistical area of the organization's adresss + string? msa?; + # latitude and longitude of the organization's adress + string? lat_long?; + # National Taxonomy of Exempt Entities + string? ntee_code?; + # GuideStar seal levels. + "bronze"|"silver"|"gold"|"platinum" profile_level?; + # GuideStar's public profile URL + string? public_report?; + # IRS subsection code of the organization + string? subsection_code?; + # Number of employees at the organization + string? number_of_employees?; + # Tax form filing type. + string? form_type?; + # URL for the organization's website + string? website_url?; + # URL for the organization's logo + string? logo_url?; + # Foundation code that describes the organization + string? foundation_code?; + # Names of parent organizations, comma seperated + string? parent_orgs?; + # Gross receipts of the organization reported on the BMF + string? bmf_gross_receipts?; + # Assets of the organization reported on the BMF + string? bmf_assets?; + # Total revenue filed on the most recent Form 990, 990-PF, or 990-EZ filing + string? form990_total_revenue?; + # Total expenses filed on the most recent Form 990, 990-PF, or 990-EZ filing + string? form990_total_expenses?; + # Total assets filed on the most recent Form 990, 990-PF, or 990-EZ filing + string? form990_total_assets?; + # Email of the primary contact at the organization + string? contact_email?; + # Name of the primary contact at the organization + string? contact_name?; + # Phone number of the primary contact at the organization + string? contact_phone?; + # Title of the primary contact at the organization + string? contact_title?; + V1EssentialsResponse_data_properties? properties?; +}; + +public type V3Query record { + # Can be any string you'd like to search on, including EIN, organization name, keywords, etc. + string? search_terms?; + # The offset from the first result. Defaults to 0. + int? 'from?; + # The maximum number of hits to be returned. Defaults to 25. The maximum number allowed is 25. + int? size?; + V3Sort? sort?; + V3Filters? filters?; +}; + +public type V3EssentialsResponse_taxonomies record { + V3EssentialsResponse_taxonomies_subject_codes[]? subject_codes?; + V3EssentialsResponse_taxonomies_population_served_codes[]? population_served_codes?; + V3EssentialsResponse_taxonomies_ntee_codes[]? ntee_codes?; + V3EssentialsResponse_taxonomies_subsection_code? subsection_code?; + V3EssentialsResponse_taxonomies_foundation_code? foundation_code?; +}; + +public type AffiliationTypeFilter record { + # Flag indicating the organization is a parent. Value set as true or false. + boolean? parent?; + # Flag indicating the organization is a subordinate. Value set as true or false. + boolean? subordinate?; + # Flag indicating the organization is independent. Value set as true or false. + boolean? independent?; + # Flag indicating the organization is a headquarter. Value set as true or false. + boolean? headquarter?; +}; + +public type BadRequest record { + # HTTP response status code. + string? code?; + string? message?; +}; + +public type V3EssentialsResponse_hits record { + V3EssentialsResponse_organization? organization?; + V3EssentialsResponse_properties? properties?; + V3EssentialsResponse_geography? geography?; + V3EssentialsResponse_taxonomies? taxonomies?; + V3EssentialsResponse_financials? financials?; + V3EssentialsResponse_dates? dates?; +}; + +public type V3Filters record { + GeographyFilter? geography?; + V3OrganizationFilter? organization?; + V3FinancialsFilter? financials?; + LastUpdated? last_updated?; +}; + +public type NotAcceptable record { + # HTTP response status code. + string? code?; + string? message?; +}; + +public type V3EssentialsResponse_taxonomies_population_served_codes record { + # Population served code + string? population_served_code?; + # Description of Population served code + string? population_served_description?; +}; + +public type V3EssentialsResponse_financials_most_recent_year record { + # Tax form filing type + string? form_types?; + # Fiscal year of the most recent tax filing + decimal? fiscal_year?; + # Most recent year total revenue + decimal? total_revenue?; + # Most recent year total expenses + decimal? total_expenses?; + # Most recent year total assets + decimal? total_assets?; +}; + +public type V1EssentialsResponse_data_properties record { + # If the organization is a parent + boolean? parent?; + # If the organization is a subordinate + boolean? subordinate?; + # If the organization is independent + boolean? independent?; + # If the organization is a national headquarter + boolean? national_hq?; + # If the organization is revoked + boolean? revoked?; + # If the organization is defuncted or merged + boolean? defuncted_or_merged?; + # If the organization performed a A-133 audit + boolean? audit_a133_performed?; + # If the organization is present on the BMF + boolean? bmf_status?; + # If the organization is Pub78 verified + boolean? pub78_verified?; + # If the organization allows online giving + boolean? allow_online_giving?; +}; + +public type V3EssentialsResponse record { + # Response Code + int? code?; + # Diagnostic message for response status + string? message?; + # Time taken for request to process + int? took?; + # Time of API call. + string? time?; + # Number of results returned by search + int? results_count?; + # Number of pages returned by the search. + int? page_count?; + # List of errors encountered + string[]? errors?; + V3EssentialsResponse_hits[]? hits?; +}; + +public type V2EssentialsResponse_data record { + # Elapsed time to calculate results + int? took?; + # Number of results returned by search + int? total_hits?; + V2EssentialsResponse_data_hits[]? hits?; +}; + +public type FinancialsFilter record { + NumberRangeFilter? total_revenue?; + NumberRangeFilter? total_expenses?; + NumberRangeFilter? total_assets?; +}; + +public type EssentialsLookupResponse record { + # Response Code + int? code?; + # Diagnostic message for response status + string? message?; + # Time taken for request to process + int? took?; + # List of errors encountered + string[]? errors?; + string[]? data?; +}; + +public type V3EssentialsResponse_taxonomies_subsection_code record { + # IRS subsection code of the organization + string? subsection_code?; + # Description of IRS subsection code + string? subsection_code_description?; +}; + +# Key value pair for filter name, value, and search_value +public type EssentialsFilteredLookupResponse_data record { + # Code for the filter_name results + string? 'key?; + # Text for the filter_name results + string? value?; + # Value to pass in Essential's API filters + string? search_value?; +}; + +public type Forbidden record { + # HTTP response status code. + string? code?; + string? message?; +}; + +public type V3FinancialsFilter_most_recent_year_form_types record { + # Flag indicating the organization files a form 990. Value set as true or false. + boolean? f990?; + # Flag indicating the organization files a form 990-PF. Value set as true or false. + boolean? f990pf?; + # Flag indicating the organization files a form 990ez. Value set as true or false. + boolean? f990ez?; + # Flag indicating the organization files a form 990n. Value set as true or false. + boolean? f990n?; +}; + +public type InternalServerError record { + # HTTP response status code. + string? code?; + string? message?; +}; + +public type V3EssentialsResponse_taxonomies_subject_codes record { + # Subject code + string? subject_code?; + # Description of subject code + string? subject_code_description?; +}; + +public type Unauthorized record { + # HTTP response status code. + string? code?; + string? message?; +}; + +public type V2EssentialsResponse record { + # Response Code + int? code?; + # Diagnostic message for response status + string? message?; + # Time taken for request to process + int? took?; + # List of errors encountered + string[]? errors?; + V2EssentialsResponse_data? data?; +}; + +public type V3EssentialsResponse_organization record { + # A unique number identifying organizations and organizational entities + string? organization_id?; + # Employer Identification Number + string? ein?; + # The public name recognized by the IRS + string? organization_name?; + # Organization name Also Known As + string? also_known_as?; + # Four-digit number assigned to a group of organizations falling under a central/parent organization holding group exemption letters. + string? group_exemption?; + # Mission statement for the organization + string? mission?; + # URL for the organization's website + string? website_url?; + # URL for the organization's logo + string? logo_url?; + # GuideStar seal level + string? profile_level?; + # GuideStar seal year + decimal? profile_year?; + # GuideStar's public profile URL + string? profile_link?; + # GuideStar's seal logo + string? profile_logo?; + # Name of leader + string? leader_name?; + # Leader's title + string? leader_title?; + # Name of the primary contact at the organization + string? contact_name?; + # Email of the primary contact at the organization + string? contact_email?; + # Phone number of the primary contact at the organization + string? contact_phone?; + # Title of the primary contact at the organization + string? contact_title?; + # Number of employees at the organization + decimal? number_of_employees?; + # The year the IRS granted organization tax exempt status (a.k.a. Ruling Year) + decimal? ruling_year?; +}; + +public type SpecificExclusionsFilter record { + # Flag to exclude revoked organizations. Value set as true or false. + boolean? exclude_revoked_organizations?; + # Flag to exclude defunct or merged organizations. Value set as true or false. + boolean? exclude_defunct_or_merged_organizations?; +}; + +public type V1EssentialsResponse_data_hits record { + # A unique number identifying organizations and organizational entities + string? organization_id?; + # Deprecated Bridge ID + string? bridge_id?; + # Employer Identification Number + string? ein?; + # The public name recognized by the IRS + string? organization_name?; + # Organization name Also Known As + string? also_known_as?; + # Mission statement for the organization + string? mission?; + # Address line 1 of the organization + string? address_line_1?; + # Address line 2 of the organization + string? address_line_2?; + # City of the organization's address + string? city?; + # State (Abbreviation) of the organization's address + string? state?; + # Zip code of the organization's address + string? zip?; + # County of the organization's address + string? county?; + # Metropolitan statistical area of the organization's adresss + string? msa?; + # latitude and longitude of the organization's adress + string? lat_long?; + # National Taxonomy of Exempt Entities + string? ntee_code?; + # GuideStar seal levels. + "bronze"|"silver"|"gold"|"platinum" profile_level?; + # GuideStar's public profile URL + string? public_report?; + # IRS subsection code of the organization + string? subsection_code?; + # Number of employees at the organization + string? number_of_employees?; + # Tax form filing type. + string? form_type?; + # URL for the organization's website + string? website_url?; + # Foundation code that describes the organization + string? foundation_code?; + # Names of parent organizations, comma seperated + string? parent_orgs?; + # Gross receipts of the organization reported on the BMF + string? bmf_gross_receipts?; + # Assets of the organization reported on the BMF + string? bmf_assets?; + # Total revenue filed on the most recent Form 990, 990-PF, or 990-EZ filing + string? form990_total_revenue?; + # Total expenses filed on the most recent Form 990, 990-PF, or 990-EZ filing + string? form990_total_expenses?; + # Total assets filed on the most recent Form 990, 990-PF, or 990-EZ filing + string? form990_total_assets?; + # Email of the primary contact at the organization + string? contact_email?; + # Name of the primary contact at the organization + string? contact_name?; + # Phone number of the primary contact at the organization + string? contact_phone?; + # Title of the primary contact at the organization + string? contact_title?; + V1EssentialsResponse_data_properties? properties?; +}; + +public type V3EssentialsResponse_dates record { + # Date when Candid seal status was last modified. + string? seal_last_modified?; + # Datetime of last update to Candid profile. + string? profile_last_modified?; + # Datetime of last update to organization demographics information + string? dei_last_modified?; + # Datetime of last update to organization's financial information + string? financials_last_modified?; + # Datetime of organization's last publication + string? last_published?; +}; + +public type V1EssentialsResponse_data record { + # Elapsed time to calculate results + int? took?; + # Number of results returned by search + int? total_hits?; + V1EssentialsResponse_data_hits[]? hits?; +}; + +public type V3Sort record { + # Leave blank to sort by relevance. + "organization_name"|"bmf_gross_receipts"|"bmf_assets"|"distance"|"year_founded" sort_by?; + # Default value is ascending. Allowed values are "asc" (ascending) and "desc" (descending). + "asc"|"desc" sort_order?; +}; + +# Organization's relation with other organizations. +public type V3EssentialsResponse_properties_relationship_details record { + # Relationship type of organization. + "parent"|"subordinate" relationship_type?; + # Name of organization. + string? organization_name?; + # Employer Identification Number + string? ein?; +}; + +public type V1EssentialsResponse record { + # Response Code + int? code?; + # Diagnostic message for response status + string? message?; + # Time taken for request to process + int? took?; + # List of errors encountered + string[]? errors?; + V1EssentialsResponse_data? data?; +}; + +public type V3OrganizationFilter record { + # GuideStar seal levels, comma separated. + string[]? profile_levels?; + # Subject codes, comma separated. + string[]? subject_codes?; + # Population served codes, comma separated. + string[]? population_served_codes?; + # National Taxonomy of Exempt Entities (NTEE) major codes, comma separated. + string[]? ntee_major_codes?; + # National Taxonomy of Exempt Entities (NTEE) minor codes, comma separated. + string[]? ntee_minor_codes?; + # IRS subsection codes and/or descriptions, comma separated. + string[]? subsection_codes?; + # Foundation codes and/or descriptions, comma separated. + string[]? foundation_codes?; + # Group exemption codes, comma separated. + string[]? group_exemption?; + NumberRangeFilter? number_of_employees?; + NumberRangeFilter? ruling_year?; + V3OrgProperties? properties?; +}; + +public type AuditsFilter record { + # Flag indicating the organization performed A-133 audit. Value set as true or false. + boolean? a_133_audit_performed?; +}; + +public type TooManyRequests record { + # HTTP response status code. + string? code?; + string? message?; +}; + +public type NotFound record { + # HTTP response status code. + string? code?; + string? message?; +}; diff --git a/ballerina/modules/essentials/utils.bal b/ballerina/modules/essentials/utils.bal new file mode 100644 index 0000000..e8d07cd --- /dev/null +++ b/ballerina/modules/essentials/utils.bal @@ -0,0 +1,41 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/url; + +type SimpleBasicType string|boolean|int|float|decimal; + +# Get Encoded URI for a given value. +# +# + value - Value to be encoded +# + return - Encoded string +isolated function getEncodedUri(anydata value) returns string { + string|error encoded = url:encode(value.toString(), "UTF8"); + if (encoded is string) { + return encoded; + } else { + return value.toString(); + } +} + +# Generate header map for given header values. +# +# + headerParam - Headers map +# + return - Returns generated map or error at failure of client initialization +isolated function getMapForHeaders(map headerParam) returns map { + map headerMap = {}; + foreach var [key, value] in headerParam.entries() { + if value is string || value is string[] { + headerMap[key] = value; + } else if value is int[] { + string[] stringArray = []; + foreach int intValue in value { + stringArray.push(intValue.toString()); + } + headerMap[key] = stringArray; + } else if value is SimpleBasicType { + headerMap[key] = value.toString(); + } + } + return headerMap; +} diff --git a/ballerina/modules/premier/Module.md b/ballerina/modules/premier/Module.md new file mode 100644 index 0000000..8a69f51 --- /dev/null +++ b/ballerina/modules/premier/Module.md @@ -0,0 +1,6 @@ +Prints "Hello, World!" with a main function. +[//]: # (above is the module summary) + +# Module Overview +Provides an overview about the module when generating the API documentations. +For example, refer to https://lib.ballerina.io/ballerina/io/latest diff --git a/ballerina/modules/premier/client.bal b/ballerina/modules/premier/client.bal new file mode 100644 index 0000000..62e7453 --- /dev/null +++ b/ballerina/modules/premier/client.bal @@ -0,0 +1,105 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/http; + +# Enhance your apps, records, or experience with robust nonprofit profile financials, people, DEI, and IRS compliance validation. +public isolated client class Client { + final http:Client clientEp; + final readonly & ApiKeysConfig apiKeyConfig; + # Gets invoked to initialize the `connector`. + # + # + apiKeyConfig - API keys for authorization + # + config - The configurations to be used when initializing the `connector` + # + serviceUrl - URL of the target service + # + return - An error if connector initialization failed + public isolated function init(ApiKeysConfig apiKeyConfig, ConnectionConfig config = {}, string serviceUrl = "https://api.candid.org/premier") returns error? { + http:ClientConfiguration httpClientConfig = {httpVersion: config.httpVersion, timeout: config.timeout, forwarded: config.forwarded, poolConfig: config.poolConfig, compression: config.compression, circuitBreaker: config.circuitBreaker, retryConfig: config.retryConfig, validation: config.validation}; + do { + if config.http1Settings is ClientHttp1Settings { + ClientHttp1Settings settings = check config.http1Settings.ensureType(ClientHttp1Settings); + httpClientConfig.http1Settings = {...settings}; + } + if config.http2Settings is http:ClientHttp2Settings { + httpClientConfig.http2Settings = check config.http2Settings.ensureType(http:ClientHttp2Settings); + } + if config.cache is http:CacheConfig { + httpClientConfig.cache = check config.cache.ensureType(http:CacheConfig); + } + if config.responseLimits is http:ResponseLimitConfigs { + httpClientConfig.responseLimits = check config.responseLimits.ensureType(http:ResponseLimitConfigs); + } + if config.secureSocket is http:ClientSecureSocket { + httpClientConfig.secureSocket = check config.secureSocket.ensureType(http:ClientSecureSocket); + } + if config.proxy is http:ProxyConfig { + httpClientConfig.proxy = check config.proxy.ensureType(http:ProxyConfig); + } + } + http:Client httpEp = check new (serviceUrl, httpClientConfig); + self.clientEp = httpEp; + self.apiKeyConfig = apiKeyConfig.cloneReadOnly(); + return; + } + # /premier/v1 + # + # + ein - Employer Identification Number. + # + return - OK + # + # # Deprecated + @deprecated + resource isolated function get v1/[string ein]() returns V1PublicProfile|error { + string resourcePath = string `/v1/${getEncodedUri(ein)}`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + V1PublicProfile response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } + # /premier/v1/propdf + # + # + ein - Employer Identification Number. + # + return - OK + resource isolated function get v1/propdf/[string ein]() returns http:Response|error { + string resourcePath = string `/v1/propdf/${getEncodedUri(ein)}`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + http:Response response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } + # /premier/v1/ftapdf + # + # + ein - Employer Identification Number. + # + return - OK + resource isolated function get v1/ftapdf/[string ein]() returns http:Response|error { + string resourcePath = string `/v1/ftapdf/${getEncodedUri(ein)}`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + http:Response response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } + # /premier/v2 + # + # + ein - Employer Identification Number. + # + return - OK + # + # # Deprecated + @deprecated + resource isolated function get v2/[string ein]() returns V2PublicProfile|error { + string resourcePath = string `/v2/${getEncodedUri(ein)}`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + V2PublicProfile response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } + # /premier/v3 + # + # + ein - Employer Identification Number. + # + return - OK + resource isolated function get v3/[string ein]() returns V3PublicProfile|error { + string resourcePath = string `/v3/${getEncodedUri(ein)}`; + map headerValues = {"Subscription-Key": self.apiKeyConfig.subscriptionKey}; + map httpHeaders = getMapForHeaders(headerValues); + V3PublicProfile response = check self.clientEp->get(resourcePath, httpHeaders); + return response; + } +} diff --git a/ballerina/modules/premier/resources/.keep b/ballerina/modules/premier/resources/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ballerina/modules/premier/tests/test.bal b/ballerina/modules/premier/tests/test.bal new file mode 100644 index 0000000..c103834 --- /dev/null +++ b/ballerina/modules/premier/tests/test.bal @@ -0,0 +1,27 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/test; + +configurable ApiKeysConfig & readonly apiKeyConfig = ?; +Client baseClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/premier"); + +@test:Config {} +isolated function testPremier_v1() { +} + +@test:Config {} +isolated function testPremier_v1_propdf() { +} + +@test:Config {} +isolated function testPremier_v1_ftapdf() { +} + +@test:Config {} +isolated function testPremier_v2() { +} + +@test:Config {} +isolated function testPremier_v3() { +} diff --git a/ballerina/modules/premier/types.bal b/ballerina/modules/premier/types.bal new file mode 100644 index 0000000..fefab62 --- /dev/null +++ b/ballerina/modules/premier/types.bal @@ -0,0 +1,2585 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/http; + +# Provides a set of configurations for controlling the behaviours when communicating with a remote HTTP endpoint. +@display {label: "Connection Config"} +public type ConnectionConfig record {| + # The HTTP version understood by the client + http:HttpVersion httpVersion = http:HTTP_2_0; + # Configurations related to HTTP/1.x protocol + ClientHttp1Settings http1Settings?; + # Configurations related to HTTP/2 protocol + http:ClientHttp2Settings http2Settings?; + # The maximum time to wait (in seconds) for a response before closing the connection + decimal timeout = 60; + # The choice of setting `forwarded`/`x-forwarded` header + string forwarded = "disable"; + # Configurations associated with request pooling + http:PoolConfiguration poolConfig?; + # HTTP caching related configurations + http:CacheConfig cache?; + # Specifies the way of handling compression (`accept-encoding`) header + http:Compression compression = http:COMPRESSION_AUTO; + # Configurations associated with the behaviour of the Circuit Breaker + http:CircuitBreakerConfig circuitBreaker?; + # Configurations associated with retrying + http:RetryConfig retryConfig?; + # Configurations associated with inbound response size limits + http:ResponseLimitConfigs responseLimits?; + # SSL/TLS-related options + http:ClientSecureSocket secureSocket?; + # Proxy server related options + http:ProxyConfig proxy?; + # Enables the inbound payload validation functionality which provided by the constraint package. Enabled by default + boolean validation = true; +|}; + +# Provides settings related to HTTP/1.x protocol. +public type ClientHttp1Settings record {| + # Specifies whether to reuse a connection for multiple requests + http:KeepAlive keepAlive = http:KEEPALIVE_AUTO; + # The chunking behaviour of the request + http:Chunking chunking = http:CHUNKING_AUTO; + # Proxy server related options + ProxyConfig proxy?; +|}; + +# Proxy server configurations to be used with the HTTP client endpoint. +public type ProxyConfig record {| + # Host name of the proxy server + string host = ""; + # Proxy server port + int port = 0; + # Proxy server username + string userName = ""; + # Proxy server password + @display {label: "", kind: "password"} + string password = ""; +|}; + +# Provides API key configurations needed when communicating with a remote HTTP endpoint. +public type ApiKeysConfig record {| + string subscriptionKey; +|}; + +# IRS letter of determination information +public type LetterOfDetermination record { + # Document name of the letter of determination + string? letter_of_determination_doc_name?; + # URL to the letter of determination + string? letter_of_determination_url?; +}; + +# Information about the non-profit, such as name and address +public type Summary1 record { + # GuideStar internal organization ID + int? organization_id?; + # Organization name + string? organization_name?; + # Employee identification number + string? ein?; + # DEPRECATED + string? bridge_id?; + # Organization address street name + string? address_line_1?; + # Organization address Suite or Apartment number + string? address_line_2?; + # Organization address city + string? city?; + # Organization address state + string? state?; + # Organization address zip code + string? zip?; + # Organization fax number + string? fax?; + # Legal organization name + string? govt_registered_name?; + # Comma separated string of names associated with the organization + string? also_known_as?; + # When the fiscal year ends for the organization + string? fiscal_year_end?; + # When the fiscal year begins for the organization + string? fiscal_year_start?; + # Single digit code designating the type of organization (Central, Intermediate, or Independent) if there is no group exemption or (Central, Intermediate, Independent, or Subordinate) if there is a group exemption. + string? affiliation_code?; + # Description of what the affiliation code means + string? affiliation_description?; + # Primary contact name + string? contact_name?; + # Primary contact title + string? contact_title?; + # Primary contact email + string? contact_email?; + # Primary contact phone number + string? contact_phone?; + # Primary contact fax number + string? contact_fax?; + # Guidestar.org organization profile seal of transparency level + string? gs_profile_update_level?; + # Url to Guidestar.org seal image + string? gs_profile_update_level_logo?; + # Deductibility code signifies whether contributions made to an organization are deductible + string? deductibility_code?; + # Deductibility code description + string? deductibility_description?; + # EIN that should be used for charitable donations + string? donation_to_ein?; + # Organization name that should be used for charitable donations + string? donation_to_name?; + # DEPRECATED + string? areas_served_narrative?; + # Year that organization started operating as a non-profit + string? ruling_year?; + # Guidestar.org organization profile URL + string? gs_public_report?; + # URL of API call to the Pro PDF API endpoint to download the organization's profile PDF + string? gs_pro_pdf?; + # DEPRECATED + string? impact_statement?; + # Subsection Codes are the codes shown under section 501(c) of the Internal Revenue Code of 1986, which define the category under which an organization may be exempt. + string? subsection_code?; + # Description of organization subsection code + string? subsection_description?; + # Keywords added by the organization to their profile + string? keywords?; + # Organization logo URL + string? logo_url?; + # Organization mission statement + string? mission?; + # Whether or not this organization is the national headquarters + boolean? is_national_hq?; + # National Taxonomy of Exempt Entities (NTEE) Code + string? ntee_code?; + # Organization website URL + string? website_url?; + # Year that an organization was founded + string? year_founded?; + # Year that an organization was incorporated + string? year_incorporated?; + Address[]? addresses?; + Affiliation[]? affiliations?; + Award[]? awards?; + FormerName[]? formerly_known_as?; + string[]? forms_1023_1024?; + LetterOfDetermination[]? letters_of_determination?; + LetterOfDissolution[]? letters_of_dissolution?; + NteeCode[]? ntee_codes?; + # North American Industry Classification System (NAICS) information + NAICSCode? naics_code?; + SICCode[]? sic_codes?; + OtherDocument[]? other_documents?; + PhotoLink[]? photos?; + string[]? social_media_urls?; + TelephoneNumber[]? telephone_numbers?; + Video[]? videos?; +}; + +# Information about the non-profit, such as name and address +public type Summary2 record { + # GuideStar internal organization ID + int? organization_id?; + # Organization name + string? organization_name?; + # Employee identification number + string? ein?; + # DEPRECATED + string? bridge_id?; + # Organization address street name + string? address_line_1?; + # Organization address Suite or Apartment number + string? address_line_2?; + # Organization address city + string? city?; + # Organization address state + string? state?; + # Organization address zip code + string? zip?; + # Organization fax number + string? fax?; + # Legal organization name + string? govt_registered_name?; + # Comma separated string of names associated with the organization + string? also_known_as?; + # When the fiscal year ends for the organization + string? fiscal_year_end?; + # When the fiscal year begins for the organization + string? fiscal_year_start?; + # Single digit code designating the type of organization (Central, Intermediate, or Independent) if there is no group exemption or (Central, Intermediate, Independent, or Subordinate) if there is a group exemption. + string? affiliation_code?; + # Description of what the affiliation code means + string? affiliation_description?; + # Primary contact name + string? contact_name?; + # Primary contact title + string? contact_title?; + # Primary contact email + string? contact_email?; + # Primary contact phone number + string? contact_phone?; + # Primary contact fax number + string? contact_fax?; + # Guidestar.org organization profile seal of transparency level + string? gs_profile_update_level?; + # Url to Guidestar.org seal image + string? gs_profile_update_level_logo?; + # Deductibility code signifies whether contributions made to an organization are deductible + string? deductibility_code?; + # Deductibility code description + string? deductibility_description?; + # EIN that should be used for charitable donations + string? donation_to_ein?; + # Organization name that should be used for charitable donations + string? donation_to_name?; + # DEPRECATED + string? areas_served_narrative?; + # Year that organization started operating as a non-profit + string? ruling_year?; + # Guidestar.org organization profile URL + string? gs_public_report?; + # URL of API call to the Pro PDF API endpoint to download the organization's profile PDF + string? gs_pro_pdf?; + # URL of API call to the FTA PDF API endpoint to download the organization's financial trends analysis PDF + string? gs_financial_trends_analysis_pdf?; + # DEPRECATED + string? impact_statement?; + # Subsection Codes are the codes shown under section 501(c) of the Internal Revenue Code of 1986, which define the category under which an organization may be exempt. + string? subsection_code?; + # Description of organization subsection code + string? subsection_description?; + # Keywords added by the organization to their profile + string? keywords?; + # Organization logo URL + string? logo_url?; + # Organization mission statement + string? mission?; + # Whether or not this organization is the national headquarters + boolean? is_national_hq?; + # National Taxonomy of Exempt Entities (NTEE) Code + string? ntee_code?; + # Organization website URL + string? website_url?; + # Year that an organization was founded + string? year_founded?; + # Year that an organization was incorporated + string? year_incorporated?; + # Is the organization not on the BMF + boolean? is_non_bmf_org?; + # First time organization appeared on the BMF + string? first_on_bmf_date?; + # Last time an organization appeared on the BMF + string? last_on_bmf_date?; + # Contains the last change datetimes for several key data values + ProfileDataChangeDates? profile_data_change_dates?; + Address[]? addresses?; + Affiliation[]? affiliations?; + Award[]? awards?; + FormerName[]? formerly_known_as?; + string[]? forms_1023_1024?; + LetterOfDetermination[]? letters_of_determination?; + LetterOfDissolution[]? letters_of_dissolution?; + NteeCode[]? ntee_codes?; + # North American Industry Classification System (NAICS) information + NAICSCode? naics_code?; + SICCode[]? sic_codes?; + PlatinumEvaluationDocument[]? platinum_evaluation_documents?; + OtherDocument[]? other_documents?; + PhotoLink[]? photos?; + string[]? social_media_urls?; + TelephoneNumber[]? telephone_numbers?; + Video[]? videos?; +}; + +# Address entry in summary.addresses. Usually an office of an organization. +public type Address record { + # Address line 1 + string? address_line_1?; + # Address line 2 + string? address_line_2?; + # Address city + string? city?; + # Address state + string? state?; + # Address postal code + string? postal_code?; + # Address country + string? country?; + # Address type + string? address_type?; +}; + +public type FinancialStatement record { + # DEPRECATED + string? fiscal_year_begin?; + # When the fiscal year ends. + string? fiscal_year_end?; + # The company that audited the financials. + string? auditing_company?; + # The name of the uploaded document + string? doc_name?; + # The url of the document + string? document_url?; +}; + +# Information about the non-profit, such as name and address +public type Summary3 record { + # GuideStar internal organization ID + int? organization_id?; + # Organization name + string? organization_name?; + # Employee identification number + string? ein?; + # DEPRECATED + string? bridge_id?; + # Organization address street name + string? address_line_1?; + # Organization address Suite or Apartment number + string? address_line_2?; + # Organization address city + string? city?; + # Organization address state + string? state?; + # Organization address zip code + string? zip?; + # Organization address county + string? county?; + # Latitude of the center of the zip code of an organizations mailing address + string? latitude?; + # Longitude of the center of the zip code of an organizations mailing address + string? longitude?; + # Organization fax number + string? fax?; + # Legal organization name + string? govt_registered_name?; + # Comma separated string of names associated with the organization + string? also_known_as?; + # When the fiscal year ends for the organization + string? fiscal_year_end?; + # When the fiscal year begins for the organization + string? fiscal_year_start?; + # Single digit code designating the type of organization (Central, Intermediate, or Independent) if there is no group exemption or (Central, Intermediate, Independent, or Subordinate) if there is a group exemption. + string? affiliation_code?; + # Description of what the affiliation code means + string? affiliation_description?; + # Primary contact name + string? contact_name?; + # Primary contact title + string? contact_title?; + # Primary contact email + string? contact_email?; + # Primary contact phone number + string? contact_phone?; + # Primary contact fax number + string? contact_fax?; + # Guidestar.org organization profile seal of transparency level + string? gs_profile_update_level?; + # Url to Guidestar.org seal image + string? gs_profile_update_level_logo?; + # Deductibility code signifies whether contributions made to an organization are deductible + string? deductibility_code?; + # Deductibility code description + string? deductibility_description?; + # EIN that should be used for charitable donations + string? donation_to_ein?; + # Organization name that should be used for charitable donations + string? donation_to_name?; + # DEPRECATED + string? areas_served_narrative?; + # Year that organization started operating as a non-profit + string? ruling_year?; + # Guidestar.org organization profile URL + string? gs_public_report?; + # URL of API call to the Pro PDF API endpoint to download the organization's profile PDF + string? gs_pro_pdf?; + # URL of API call to the FTA PDF API endpoint to download the organization's financial trends analysis PDF + string? gs_financial_trends_analysis_pdf?; + # DEPRECATED + string? impact_statement?; + # Subsection Codes are the codes shown under section 501(c) of the Internal Revenue Code of 1986, which define the category under which an organization may be exempt. + string? subsection_code?; + # Description of organization subsection code + string? subsection_description?; + # Keywords added by the organization to their profile + string? keywords?; + # Organization logo URL + string? logo_url?; + # Organization mission statement + string? mission?; + # Whether or not this organization is the national headquarters + boolean? is_national_hq?; + # Description of demographics status that can be displayed to a funder or donor + string? demographics_status?; + # Description of demographics status that can be displayed to a nonprofit + string? demographics_status_nonprofit?; + # National Taxonomy of Exempt Entities (NTEE) Code + string? ntee_code?; + # UN sustainable development goals + SDG? sdg?; + # Organization website URL + string? website_url?; + # Year that an organization was founded + string? year_founded?; + # Year that an organization was incorporated + string? year_incorporated?; + # Is the organization not on the BMF + boolean? is_non_bmf_org?; + # First time organization appeared on the BMF + string? first_on_bmf_date?; + # Last time an organization appeared on the BMF + string? last_on_bmf_date?; + # Contains the last change datetimes for several key data values + ProfileDataChangeDates? profile_data_change_dates?; + Address[]? addresses?; + Affiliation[]? affiliations?; + Award[]? awards?; + FormerName[]? formerly_known_as?; + string[]? forms_1023_1024?; + LetterOfDetermination[]? letters_of_determination?; + LetterOfDissolution[]? letters_of_dissolution?; + NteeCode[]? ntee_codes?; + # North American Industry Classification System (NAICS) information + NAICSCode? naics_code?; + SICCode[]? sic_codes?; + PlatinumEvaluationDocument[]? platinum_evaluation_documents?; + OtherDocument[]? other_documents?; + PhotoLink[]? photos?; + string[]? social_media_urls?; + TelephoneNumber[]? telephone_numbers?; + Video[]? videos?; + # Has this organization filled the 'How we listen' section of their profile + boolean? org_collect_feedback?; + # Response to 'How is your organization collecting feedback?' + string? org_feedback_example?; + # Did the organization indicate they had an interest in taking guidestar's feedback quiz + boolean? org_quiz_interest?; + # Did the organization indicate they had an interest in learning more about feedback practices + boolean? org_learn_more?; + FBResponseText[]? feedback_responses?; + PCS[]? pcs_codes?; + SDG[]? profile_sdg_codes?; +}; + +# IRS 990 form Part VIII dealing with revenue +public type PartVIII record { + # revenue from federated campaigns + decimal? federated_campaigns?; + # revenue from membership dues + decimal? membership_dues?; + # revenue from fundraising events + decimal? fundraising_events?; + # revenue from related orgs + decimal? related_orgs?; + # revenue from government grants + decimal? government_grants?; + # revenue from other contributions + decimal? contributions_other?; + # revenue from other noncash contributions + decimal? contributions_noncash?; + # total revenue from other contributions + decimal? contributions_all?; + # revenue from services + decimal? service_revenue?; + # revenue from income investments + decimal? income_investment?; + # revenue from income bonds + decimal? income_bonds?; + # revenue from royalties + decimal? royalties?; + # Gross Rent-real + decimal? rents_real?; + # Gross Rent -personal + decimal? rents_personal?; + # Real rental expense + decimal? rent_expenses_real?; + # Personal rental expense + decimal? rent_expenses_personal?; + # Rental Income-real + decimal? rent_income_real?; + # Rental Income-personal + decimal? rent_income_personal?; + # Net Rental Income + decimal? net_rental?; + # Gross sales of Assets-securities + decimal? gross_securities?; + # Gross sales of assets-other + decimal? gross_other?; + # Less cost of sale of assets-securities + decimal? cost_securities?; + # Less cost of sales of assets-other + decimal? cost_other?; + # Gain or loss on sale of assets-securities + decimal? gain_securities?; + # Gain or loss on sale of assets-other + decimal? gain_other?; + # net revenue from sales + decimal? net_sales?; + # revenue from contributions + decimal? contributions?; + # gross special revenue + decimal? gross_special?; + # direct expenses for the organization + decimal? direct_expenses?; + # net special revenue + decimal? net_special?; + # Gross income from gaming + decimal? gaming_income?; + # Less expenses from gaming + decimal? gaming_expenses?; + # Net income from gaming + decimal? gaming_net?; + # gross revenue from sales + decimal? gross_sales?; + # cost of goods + decimal? cost_goods?; + # gross profit earned + decimal? gross_profit?; + # other revenue + decimal? revenue_other?; + # total revenue + decimal? revenue_total?; + # first specially declared revenue-providing service + string? service_description_a?; + # Program service code (a) + decimal? service_code_a?; + # second specially declared revenue-providing service + string? service_description_b?; + # revenue from service a + decimal? service_amount_a?; + # Program service code (b) + decimal? service_code_b?; + # revenue from service b + decimal? service_amount_b?; + # third specially declared revenue-providing service + string? service_description_c?; + # Program service code (c) + decimal? service_code_c?; + # revenue from service c + decimal? service_amount_c?; + # fourth specially declared revenue-providing service + string? service_description_d?; + # Program service code (d) + decimal? service_code_d?; + # revenue from service d + decimal? service_amount_d?; + # fifth specially declared revenue-providing service + string? service_description_e?; + # Program service code (e) + decimal? service_code_e?; + # revenue from service e + decimal? service_amount_e?; + # sixth specially declared revenue-providing service + string? service_description_f?; + # Program service code (f) + decimal? service_code_f?; + # revenue from service f + decimal? service_amount_f?; +}; + +# UN sustainable development goals +public type SDG record { + # UN sustainable development goal number + int:Signed32? id?; + # UN sustainable development goal description + string? description?; +}; + +public type BoardMember record { + # The board member's first and last name. + string? name?; + # DEPRECATED + string? title?; + # The company the board member works for. + string? company?; +}; + +# expense composition section of financial trends analysis +public type Expense_Composition record { + # total expenses before depreciation + int? total_expenses_before_depreciation?; + # total expenses percent change over the prior year + string? total_expenses_percent_change_over_prior_year?; + # personnel expenses + string? personnel?; + # professional fees expenses + string? professional_fees?; + # occupancy expenses + string? occupancy?; + # expenses from interest + string? interest_expense?; + # Pass through expenses + string? pass_through?; + # all other expenses + string? all_other_expenses?; +}; + +@deprecated +public type Accreditation record { + # DEPRECATED + string? accreditation?; + # DEPRECATED + string? year?; +}; + +# Category for demographics +# +# # Deprecated +@deprecated +public type DemographicsCategory record { + # DEPRECATED + string? category?; + record {|boolean?...;|}? org_does_not_collect_for?; + # DEPRECATED + DemographicsSubCategory[]? subcategories?; +}; + +public type V3PublicProfile record { + # HTTP response status code. + int? code?; + # Diagnostic message for response status + string? message?; + # Time taken for request to process + int? took?; + # List of errors encountered + string[]? errors?; + V3PublicProfile_data? data?; +}; + +# DEPRECATED +# +# # Deprecated +@deprecated +public type Affiliation record { + # DEPRECATED + string? affiliation?; + # DEPRECATED + string? year?; +}; + +public type Form990T record { + # The name of the file. + string? form990t_name?; + # URL for the organization's Form 990 T + string? form990t_url?; +}; + +public type ParentOrganization record { + # The parent organizations EIN. + string? ein?; + # The parent organizations name. + string? organization_name?; + # The exemption code. + string? group_exemption?; +}; + +# Program metrics entered by the organization +public type PlatinumMetrics record { + # Metric name + string? metric?; + # The years this metric was captured and the values for a given year + MetricYear[]? years?; + # The target populations that the metric supports + string[]? target_population_served?; + # How this metric is being measured + string? type_of_metric?; + # How to determine if this metric is showing a successful trend + string? direction_of_success?; +}; + +# Collection of an organizations programs and program metrics +public type Programs2 record { + Program2[]? programs?; + PlatinumMetrics[]? platinum_metrics?; + Question[]? charting_impact_answers?; +}; + +# IRS 990 form Part X, Balance Sheet +public type PartX record { + # beginning of year cash + decimal? cash_boy?; + # end of year cash + decimal? cash_eoy?; + # beginning of year savings + decimal? savings_boy?; + # end of year savings + decimal? savings_eoy?; + # Net pledges and grants receivable: beginning of year + decimal? pledges_grants_boy?; + # Net pledges and grants receivable: end of year + decimal? pledges_grants_eoy?; + # beginning of year accounts receivable + decimal? accounts_receivable_boy?; + # end of year accounts receivable + decimal? accounts_receivable_eoy?; + # beginning of year qualified receivable + decimal? qualified_receivable_boy?; + # end of year qualified receivable + decimal? qualified_receivable_eoy?; + # beginning of year disqualified receivable + decimal? disqualified_receivable_boy?; + # end of year disqualified receivable + decimal? disqualified_receivable_eoy?; + # beginning of year loans receivable + decimal? loans_receivable_boy?; + # end of year loans receivable + decimal? loans_receivable_eoy?; + # beginning of year inventory + decimal? inventory_boy?; + # end of year inventory + decimal? inventory_eoy?; + # beginning of year prepaid + decimal? prepaid_boy?; + # end of year prepaid + decimal? prepaid_eoy?; + # Land, buildings, and equipment: cost basis + decimal? lbe_base?; + # Less: accumulated depreciation + decimal? less_depreciation?; + # Land and buildings BOY + decimal? lbe_boy?; + # Land and buildings EOY + decimal? lbe_eoy?; + # beginning of year public securities + decimal? public_securities_boy?; + # end of year public securities + decimal? public_securities_eoy?; + # beginning of year other securities + decimal? other_securities_boy?; + # end ofyear other securities + decimal? other_securities_eoy?; + # beginning of year investment programs + decimal? investment_programs_boy?; + # end of year investment programs + decimal? investment_programs_eoy?; + # beginning of year intangible assets + decimal? intangible_assets_boy?; + # end of year intangible assets + decimal? intangible_assets_eoy?; + # beginning of year other assets + decimal? other_assets_boy?; + # end of year other assets + decimal? other_assets_eoy?; + # beginning of year total assets + decimal? assets_total_boy?; + # end of year total asstes + decimal? assets_total_eoy?; + # beginning of year accounts payable + decimal? accounts_payable_boy?; + # end of year accounts payable + decimal? accounts_payable_eoy?; + # beginning of year grants payable + decimal? grants_payable_boy?; + # end of year grants payable + decimal? grants_payable_eoy?; + # beginning of year deferred revenue + decimal? deferred_revenue_boy?; + # end of year deferred revenue + decimal? deferred_revenue_eoy?; + # beginning of year tax exempt bonds + decimal? tax_exempt_bonds_boy?; + # end of year tax exempt bonds + decimal? tax_exempt_bonds_eoy?; + # beginning of year escrow liability + decimal? escrow_liability_boy?; + # end of year escrow liability + decimal? escrow_liability_eoy?; + # beginning of year payable officiers + decimal? payable_officiers_boy?; + # end of year payable officiers + decimal? payable_officiers_eoy?; + # beginning of year secured notes payable + decimal? secured_notes_payable_boy?; + # end of year secured notes payable + decimal? secured_notes_payable_eoy?; + # beginning of year unsecured notes payable + decimal? unsecured_notes_payable_boy?; + # end of year unsecured notes payable + decimal? unsecured_notes_payable_eoy?; + # beginning of year other liability + decimal? liability_other_boy?; + # end of year other liability + decimal? liability_other_eoy?; + # beginning of year total liability + decimal? liability_total_boy?; + # end of year total liability + decimal? liability_total_eoy?; + # Unrestricted net assets: beginning of year + decimal? unrestricted_boy?; + # Unrestricted net assets: end of year + decimal? unrestricted_eoy?; + # Temporarily restricted net assets: Beginning of year + decimal? temporarily_restricted_boy?; + # Temporarily restricted net assets: End of year + decimal? temporarily_restricted_eoy?; + # Permanently restricted net assets: Beginning of year + decimal? permanently_restricted_boy?; + # Permanently restricted net assets: End of year + decimal? permanently_restricted_eoy?; + # Temporarily restricted net assets: Beginning of year + Permanently restricted net assets: Beginning of year + decimal? restricted_boy?; + # Temporarily restricted net assets: End of year + Permanently restricted net assets: Beginning of year + decimal? restricted_eoy?; + # beginning of year capital + decimal? capital_boy?; + # end of year capital + decimal? capital_eoy?; + # Paid-in or capital surplus, or land, building, or equipment fund: beginning of year + decimal? paid_in_boy?; + # Paid-in or capital surplus, or land, building, or equipment fund: end of year + decimal? paid_in_eoy?; + # Retained earnings, endowment, accumulated income, or other funds: beginning of year + decimal? retained_boy?; + # Retained earnings, endowment, accumulated income, or other funds: end of year + decimal? retained_eoy?; + # beginning of year net total + decimal? net_total_boy?; + # end of year net total + decimal? net_total_eoy?; + # beginning of year balances + decimal? balances_boy?; + # end of year balances + decimal? balances_eoy?; +}; + +# Collection of an organizations programs and program metrics +public type Programs1 record { + Program2[]? programs?; + PlatinumMetrics1[]? platinum_metrics?; + Question[]? charting_impact_answers?; +}; + +# Collection of an organizations programs and program metrics +public type Programs3 record { + Program3[]? programs?; + PlatinumMetrics[]? platinum_metrics?; + Question[]? charting_impact_answers?; +}; + +# liquidity capital structure indicator +public type Liquidity record { + # months worth of cash + decimal? months_of_cash?; + # months worth of cash and investments + decimal? months_of_cash_and_investments?; + # estimated months worth of liquid unrestricted net assets + decimal? months_of_estimated_liquid_unrestricted_net_assets?; +}; + +public type Object record { +}; + +@deprecated +public type FundingSource record { + # DEPRECATED + string? funding_source?; + # DEPRECATED + string? funding_amount?; +}; + +public type CharityCheck_parent_organizations record { + # EIN of parent organization. + string? ein?; + # Name of Parent Organization. + string? organization_name?; + # This is a four-digit internal number assigned to parent organizations holding group exemption letters. + string? group_exemption?; +}; + +public type NotAcceptable record { + # HTTP response status code. + string? code?; + string? message?; +}; + +# Standard Industrial Classification (SIC) information +public type SICCode record { + # SIC code + string? sic_code?; + # SIC code description + string? sic_description?; +}; + +public type Person record { + # The board member's first and last name. + string? name?; + # The board member's title. + string? title?; + string[]? 'type?; + # The salary for the staff member's position. + decimal? compensation?; + # Salary from other related organizations. + decimal? related_compensation?; + # Benefits provided by the organization. + decimal? other_compensation?; + # Hours spent on their position. + string? hours?; + # DEPRECATED + string? benefits?; +}; + +# IRS letter of dissolution information +public type LetterOfDissolution record { + # Document name of the letter of dissolution + string? name?; + # Year of dissolution + string? year?; + # URL to letter of dissolution + string? letter_of_dissolution_url?; +}; + +# North American Industry Classification System (NAICS) information +public type NAICSCode record { + # NAICS code + string? naics_code?; + # NAICS code description + string? naics_description?; +}; + +public type MetricYear record { + # The year for the metric. + int:Signed32? year?; + # The value for the metric. + decimal? value?; +}; + +# profitability section of financial trends analysis +public type Profitability record { + # unrestricted surplus or deficit before depreciation + int? Unrestricted_surplus_\(deficit\)_before_depreciation?; + # surplus as a percent of expenses before depreciation + string? surplus_as_percent_of_expenses_before_depreciation?; + # unrestricted surplus or deficit after depreciation + int? Unrestricted_surplus_\(deficit\)_after_depreciation?; + # surplus as a percent of expenses after depreciation + string? surplus_as_percent_of_expenses_after_depreciation?; +}; + +# External evaluations support your organization's progress or results +public type PlatinumEvaluationDocument record { + # Name of evaluation document + string? document_name?; + # Year of evaluation document + string? document_year?; + # URL of evaluation document + string? document_url?; + # DEPRECATED + string? document_type?; +}; + +public type AnnualReport record { + # The document's name. + string? doc_name?; + # DEPRECATED + string? contents?; + # The year the document is from. + string? year?; + # The url for the document. + string? url?; +}; + +public type V3PublicProfile_data record { + # Information about the non-profit, such as name and address + Summary3? summary?; + # Collection of an organizations programs and program metrics + Programs3? programs?; + # Organization financial information + Financials3? financials?; + # Organization operations information + Operations2? operations?; + # Organization Charity Check information + CharityCheck? charitycheck?; +}; + +public type InternalServerError record { + # HTTP response status code. + string? code?; + string? message?; +}; + +# Demographics, Equity, and Inclusion 2 sub category +public type DEI2SubCategory record { + # subcategory description + string? subcategory?; + # board members in demographic group + int:Signed32? board_members?; + # staff members in demographic group + int:Signed32? staff?; + # senior staff members in demographic group + int:Signed32? senior_staff?; + # whether or not reported by CEO + boolean? reported_by_ceo?; + # whether or not reported by co CEO + boolean? reported_by_coceo?; +}; + +# full cost components section of financial trends analysis +public type Full_Cost_Components record { + # total expenses after depreciation + int? total_expenses_after_depreciation?; + # one month of savings + int? one_month_of_savings?; + # Debt principal payment + int? debt_principal_payment?; + # Fixed asset additions + int? fixed_asset_additions?; + # estimated total full costs + int? total_full_costs_estimated?; +}; + +public type V2PublicProfile record { + # HTTP response status code. + int? code?; + # Diagnostic message for response status + string? message?; + # Time taken for request to process + int? took?; + # List of errors encountered + string[]? errors?; + V2PublicProfile_data? data?; +}; + +# General question and answer pair, used in multiple places +public type Question record { + # Question text + string? question?; + # Answer text + string? answer?; +}; + +# Information about an organization's program as entered by the organization +public type Program3 record { + # Program name + string? name?; + # Program description + string? description?; + # First target population that the program is targeting + string? target_population?; + # Second target population that the program is targeting + string? target_population2?; + # Program budget in dollars + string? budget?; + # Geographic area served by program + string[]? areas_served?; +}; + +# Information about an organization's program as entered by the organization +public type Program2 record { + # Program name + string? name?; + # Program description + string? description?; + # First target population that the program is targeting + string? target_population?; + # Program budget in dollars + string? budget?; + # Geographic area served by program + string[]? areas_served?; +}; + +# revenue composition section of financial trends analysis +public type Revenue_Composition record { + # total revenu, unrestricted and restricted + int? total_revenue_unrestricted_and_restricted?; + # total percent change in revenue over prior year + string? total_revenue_percent_change_over_prior_year?; + # total revenue prior + decimal? total_revenue_prior?; + # programs/services revenue + string? program_svcs_revenue?; + # membership dues revenue + string? membership_dues?; + # investment income revenue + string? investment_income?; + # government grants revenue + string? government_grants?; + # other grants/contributions revenue + string? other_grants_contributions?; + # other revenue + string? other_revenue?; +}; + +# DEPRECATED +# +# # Deprecated +@deprecated +public type DemographicsStaffLevel record { + # DEPRECATED + string? staff_level?; + # DEPRECATED + int:Signed32? count?; +}; + +# Program metrics entered by the organization +public type PlatinumMetrics1 record { + # Metric name + string? metric?; + # The years this metric was captured and the values for a given year + MetricYear[]? years?; + # The target populations that the metric supports + string[]? target_population_served?; +}; + +# Demographics and Equity Information Section +public type DEI2Category record { + # category description + string? category?; + # presence of board member data collected in category + boolean? board_members_not_collected?; + # presence of staff data collected in category + boolean? staff_not_collected?; + # presence of senior staff data collected in category + boolean? senior_staff_not_collected?; + # subcategory descriptions + DEI2SubCategory[]? subcategories?; +}; + +# DEPRECATED +# +# # Deprecated +@deprecated +public type FormerName record { + # DEPRECATED + string? former_name?; + # DEPRECATED + string? year?; +}; + +public type V1PublicProfile_data record { + # Information about the non-profit, such as name and address + Summary1? summary?; + # Collection of an organizations programs and program metrics + Programs1? programs?; + # Organization financial information + Financials2? financials?; + # Organization operations information + Operations1? operations?; + # Organization Charity Check information + CharityCheck? charitycheck?; +}; + +# Organization financial information +public type Financials1 record { + # Current, or most recent, fiscal year (FY) financial information. Since this could come from multiple 990 form types, many of the fields are normalized. + CurrentFinancial1? most_recent_year_financials?; + FinancialF990_1[]? f990_financials?; + Financial990PF[]? pf990_financials?; + Fin_Doc[]? financial_documents?; + Form990T[]? forms_990T?; + FundingNeed[]? funding_needs?; + FundingSource[]? funding_sources?; + FinancialStatement[]? financial_statements?; + AnnualReport[]? annual_reports?; + Ratios[]? accounting_ratios?; +}; + +@deprecated +public type SeniorStaff record { + # DEPRECATED + string? name?; + # DEPRECATED + string? title?; + # DEPRECATED + string? experience?; +}; + +@deprecated +public type FundingNeed record { + # DEPRECATED + string? funding_need?; + # DEPRECATED + string? amount_needed?; +}; + +# Organization financial information +public type Financials2 record { + # Current, or most recent, fiscal year (FY) financial information. Since this could come from multiple 990 form types, many of the fields are normalized. + CurrentFinancial? most_recent_year_financials?; + FinancialF990_2[]? f990_financials?; + Financial990PF[]? pf990_financials?; + FinancialF990EZ[]? f990ez_financials?; + FinancialTrends[]? financial_trends_analysis?; + Fin_Doc[]? financial_documents?; + Form990T[]? forms_990T?; + FundingNeed[]? funding_needs?; + FundingSource[]? funding_sources?; + FinancialStatement[]? financial_statements?; + AnnualReport[]? annual_reports?; + Ratios[]? accounting_ratios?; +}; + +# Organization financial information +public type Financials3 record { + # Current, or most recent, fiscal year (FY) financial information. Since this could come from multiple 990 form types, many of the fields are normalized. + CurrentFinancial? most_recent_year_financials?; + FinancialF990_3[]? f990_financials?; + Financial990PF[]? pf990_financials?; + FinancialF990EZ[]? f990ez_financials?; + FinancialTrends[]? financial_trends_analysis?; + Fin_Doc[]? financial_documents?; + Form990T[]? forms_990T?; + FundingNeed[]? funding_needs?; + FundingSource[]? funding_sources?; + FinancialStatement[]? financial_statements?; + AnnualReport[]? annual_reports?; + Ratios[]? accounting_ratios?; +}; + +# Organization operations information +public type Operations1 record { + # Organization leader name + string? leader_name?; + # Organization leader profile + string? leader_profile?; + # Organization co-leader name + string? co_leader_name?; + # Organization co-leader profile + string? co_leader_profile?; + # Number of employees of the organization + int:Signed32? no_of_employees?; + # Number of volunteers at an organization + int:Signed32? no_of_volunteers?; + # DEPRECATED + string? organization_email?; + # The year details in operations are from + int:Signed32? organization_details_year?; + Person[]? officers_directors_key_employees?; + Person[]? highest_paid_employees?; + # Number of employees that are paid at least $100k + int:Signed32? employees_greater_than_100K?; + # Name of the board chairperson + string? board_chair_name?; + # Company board chairperson is associated with + string? board_chair_affiliation?; + # Start year of board chair term + string? board_chair_term_start?; + # End year of board chair term + string? board_chair_term_end?; + # Name of board co-chairperson + string? board_co_chair_name?; + # Company board co-chairperson is associated with + string? board_co_chair_affiliation?; + # Start year of board co-chair term + string? board_co_chair_term_start?; + # End year of board co-chair term + string? board_co_chair_term_end?; + BoardMember[]? board_of_directors?; + Question[]? board_leadership_practices?; + OrganizationDemographics? organization_demographics?; + Contractor[]? contractors?; + # URL of organization blog + string? blog_url?; + # Name of primary fundraising contact + string? fundraising_contact_name?; + # Title of primary fundraising contact + string? fundraising_contact_title?; + # Email address of primary fundraising contact + string? fundraising_contact_email?; + # Phone number of primary fundraising contact + string? fundraising_contact_phone?; + # Tax preparation firm name + string? preparer_firm_name?; + # Tax preparation firm address + string? preparer_firm_address?; + # Tax preparation firm EIN + string? preparer_firm_ein?; + # Tax preparation firm phone number + string? preparer_firm_phone?; + SeniorStaff[]? senior_staff?; + OtherStaff[]? other_staff?; + Accreditation[]? accreditations?; +}; + +# Organization operations information +public type Operations2 record { + # Organization leader name + string? leader_name?; + # Organization leader profile + string? leader_profile?; + # Organization co-leader name + string? co_leader_name?; + # Organization co-leader profile + string? co_leader_profile?; + # Number of employees of the organization + int:Signed32? no_of_employees?; + # Number of volunteers at an organization + int:Signed32? no_of_volunteers?; + # DEPRECATED + string? organization_email?; + # The year details in operations are from + int:Signed32? organization_details_year?; + Person[]? officers_directors_key_employees?; + Person[]? highest_paid_employees?; + # Number of employees that are paid at least $100k + int:Signed32? employees_greater_than_100K?; + # Name of the board chairperson + string? board_chair_name?; + # Company board chairperson is associated with + string? board_chair_affiliation?; + # Start year of board chair term + string? board_chair_term_start?; + # End year of board chair term + string? board_chair_term_end?; + # Name of board co-chairperson + string? board_co_chair_name?; + # Company board co-chairperson is associated with + string? board_co_chair_affiliation?; + # Start year of board co-chair term + string? board_co_chair_term_start?; + # End year of board co-chair term + string? board_co_chair_term_end?; + BoardMember[]? board_of_directors?; + Question[]? board_leadership_practices?; + OrganizationDemographics? organization_demographics?; + DEI2Demographics? demographics?; + Contractor[]? contractors?; + # URL of organization blog + string? blog_url?; + # Name of primary fundraising contact + string? fundraising_contact_name?; + # Title of primary fundraising contact + string? fundraising_contact_title?; + # Email address of primary fundraising contact + string? fundraising_contact_email?; + # Phone number of primary fundraising contact + string? fundraising_contact_phone?; + # Tax preparation firm name + string? preparer_firm_name?; + # Tax preparation firm address + string? preparer_firm_address?; + # Tax preparation firm EIN + string? preparer_firm_ein?; + # Tax preparation firm phone number + string? preparer_firm_phone?; + SeniorStaff[]? senior_staff?; + OtherStaff[]? other_staff?; + Accreditation[]? accreditations?; +}; + +# list of business model indicators enumerated below +public type Business_Model_Indicators record { + # profitability section of financial trends analysis + Profitability? profitability?; + # revenue composition section of financial trends analysis + Revenue_Composition? revenue_composition?; + # expense composition section of financial trends analysis + Expense_Composition? expense_composition?; + # full cost components section of financial trends analysis + Full_Cost_Components? full_cost_components?; +}; + +# Telephone number associated with organization +public type TelephoneNumber record { + # Telephone number entered by organization + string? telephone_number?; + # Description of telephone number + string? telephone_type?; +}; + +# IRS form 990 financials +public type FinancialF990_1 record { + # Start date of the FY that this current financial object covers + string? period_begin?; + # End date of the fiscal year that this current financial object covers + string? period_end?; + # Revenue from recurring membership dues + decimal? membership_dues?; + # Contributions revenue, i.e. donations, in USD + decimal? revenue_contributions?; + # Government grants revenue, in USD + decimal? revenue_govt_grants?; + # Revenue derived from fees for program services + decimal? revenue_program_services?; + # Revenue from investments + decimal? revenue_investments?; + # Revenue from special events + decimal? revenue_special_events?; + # Revenue from sales of tangible items + decimal? revenue_sales?; + # Other revenue sources, not recorded elsewhere + decimal? revenue_other?; + # Total FY revenue + decimal? revenue_total?; + # Payments to affiliate organizations + decimal? affiliate_net_payments?; + # Expenses incurred from program services + decimal? expense_program_services?; + # Administration expenses + decimal? expense_administration?; + # Fundraising expenses + decimal? expense_fundraising?; + # Total FY expenses + decimal? expenses_total?; + # Difference between total revenue and total expenses + decimal? net_gain_loss?; + # Accounting expenses + decimal? expense_accounting?; + # Advertising/promotional expenses + decimal? expense_advertising_promotion?; + # IT expenses + decimal? expense_info_technology?; + # Insurance expenses + decimal? expense_insurance?; + # Interest expenses + decimal? expense_interest?; + # Investment management expenses + decimal? expense_investment_management?; + # Legal expenses + decimal? expense_legal?; + # Pension plan expenses + decimal? expense_pension_plan?; + # Publications expenses + decimal? expense_publications?; + # Professional fundraising expenses + decimal? expense_profesional_fundraising?; + # Net assets at the end of year + decimal? net_assets_eoy?; + # Total assets + decimal? assets_total?; + # Expenses not recorded elsewhere + decimal? other_expense?; + # Total liabilities at the end of year + decimal? liabilities_total?; + # A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months. + string? months_of_cash?; +}; + +# IRS form 990 financials +public type FinancialF990_2 record { + # Start date of the FY that this current financial object covers + string? period_begin?; + # End date of the fiscal year that this current financial object covers + string? period_end?; + # Revenue from recurring membership dues + decimal? membership_dues?; + # Contributions revenue, i.e. donations, in USD + decimal? revenue_contributions?; + # Government grants revenue, in USD + decimal? revenue_govt_grants?; + # Revenue derived from fees for program services + decimal? revenue_program_services?; + # Revenue from investments + decimal? revenue_investments?; + # Revenue from special events + decimal? revenue_special_events?; + # Revenue from sales of tangible items + decimal? revenue_sales?; + # Other revenue sources, not recorded elsewhere + decimal? revenue_other?; + # Total FY revenue + decimal? revenue_total?; + # Payments to affiliate organizations + decimal? affiliate_net_payments?; + # Expenses incurred from program services + decimal? expense_program_services?; + # Administration expenses + decimal? expense_administration?; + # Fundraising expenses + decimal? expense_fundraising?; + # Total FY expenses + decimal? expenses_total?; + # Difference between total revenue and total expenses + decimal? net_gain_loss?; + # Accounting expenses + decimal? expense_accounting?; + # Advertising/promotional expenses + decimal? expense_advertising_promotion?; + # IT expenses + decimal? expense_info_technology?; + # Insurance expenses + decimal? expense_insurance?; + # Interest expenses + decimal? expense_interest?; + # Investment management expenses + decimal? expense_investment_management?; + # Legal expenses + decimal? expense_legal?; + # Pension plan expenses + decimal? expense_pension_plan?; + # Publications expenses + decimal? expense_publications?; + # Professional fundraising expenses + decimal? expense_profesional_fundraising?; + # Total assets + decimal? assets_total?; + # Unrestricted new assets + decimal? unrestricted_net_assets?; + # Net fixed assets (Land, Buildings, equipment) + decimal? net_fixed_assets_LBE?; + # Net assets at the end of year + decimal? net_assets_end_of_year?; + # Expenses not recorded elsewhere + decimal? other_expense?; + # total amount of secured mortgages and notes payable to unrelated third parties that are secured by the organization's assets + decimal? notes_payable_mortgages?; + # Total liabilities at the end of year + decimal? liabilities_total?; + # A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months. + string? months_of_cash?; +}; + +public type Ratios record { + # The fiscal year. + int:Signed32? year?; + # A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula: Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months. + string? months_of_cash?; + # The ratio of an organization's capacity to repay its current liabilities through cash and cash equivalents. Metric calculated using the 'Quick Ratio' (Cash + Savings + Short Term Investments + Accounts Receivable) / Total Liabilities. + string? liquidity?; + # The cost of employee benefits divided by the wages paid to employees. Calculated using the formula: Pensions plus Benefits plus Payroll Tax Totals divided by Current Compensation plus Total Wages. + string? fringe_rate?; + # The amount of net gain or net loss. + string? net_gain_loss?; +}; + +# IRS 990 form Part IX dealing with expenses +public type PartIX record { + # expenses from grants issued to US organizations + decimal? grants_orgs_us?; + # expenses from grants issued to US individuals + decimal? grants_individuals_us?; + # expenses from grants issued to non US organizations + decimal? grants_orgs_non_us?; + # total expenses from benefits programs + decimal? benefits_total?; + # current expenses from employee compensation + decimal? compensation_current?; + # expenses from disqualified employee compensation + decimal? compensation_disqualified?; + # total expenses from employee wages + decimal? wages_total?; + # expenses from employee pensions + decimal? pension_total?; + # total expenses from employee benefits + decimal? employee_benefits_total?; + # total expenses from tax on payroll + decimal? payroll_tax_total?; + # expenses from management fees + decimal? fees_management?; + # expenses from legal fees + decimal? fees_legal?; + # total expenses from accounting fees + decimal? accounting_fees_total?; + # expenses from lobbying fees + decimal? fees_lobbying?; + # total fundraising expenses + decimal? fundraising_total?; + # expenses from investment fees + decimal? fees_investments?; + # expenses from other fees + decimal? fees_other?; + # expenses from promotional advertising + decimal? ads_promo?; + # office expenses + decimal? office?; + # IT expenses + decimal? information_technology?; + # expenses from royalties + decimal? expense_royalties?; + # Occupancy + decimal? occupancy_total?; + # total expenses from travel + decimal? travel_total?; + # Payment of travel for officials + decimal? entertain_officials?; + # total expenses from meetings + decimal? meetings_total?; + # total expenses from interest accrued + decimal? interest_total?; + # expenses from payments + decimal? payments?; + # Depreciation, depletion, and amortization + decimal? depreciation_total?; + # expenses from insurance + decimal? insurance?; + # expenses from specially declared source a + decimal? expense_a_total?; + # expenses from specially declared source b + decimal? expense_b_total?; + # expenses from specially declared source c + decimal? expense_c_total?; + # expenses from specially declared source d + decimal? expense_d_total?; + # expenses from specially declared source e + decimal? expense_e_total?; + # total expenses + decimal? expenses_total?; + # total expenses from program services + decimal? total_program_services?; + # total management expenses + decimal? total_management?; + # total fundraising expenses + decimal? total_fundraising?; + # total joint expenses + decimal? expense_joint_total?; + # expenses from joint services + decimal? joint_services?; + # general joint expenses + decimal? joint_general?; + # joint fundraising expenses + decimal? joint_fundraising?; + # expenses from all other sources + decimal? all_other_expenses?; + # first specially declared source of expense + string? expense_a_description?; + # second specially declared source of expense + string? expense_b_description?; + # third specially declared source of expense + string? expense_c_description?; + # fourth specially declared source of expense + string? expense_d_description?; +}; + +# IRS form 990 financials +public type FinancialF990_3 record { + # Start date of the FY that this current financial object covers + string? period_begin?; + # End date of the fiscal year that this current financial object covers + string? period_end?; + # Revenue from recurring membership dues + decimal? membership_dues?; + # Contributions revenue, i.e. donations, in USD + decimal? revenue_contributions?; + # Government grants revenue, in USD + decimal? revenue_govt_grants?; + # Revenue derived from fees for program services + decimal? revenue_program_services?; + # Revenue from investments + decimal? revenue_investments?; + # Revenue from special events + decimal? revenue_special_events?; + # Revenue from sales of tangible items + decimal? revenue_sales?; + # Other revenue sources, not recorded elsewhere + decimal? revenue_other?; + # Total FY revenue + decimal? revenue_total?; + # Payments to affiliate organizations + decimal? affiliate_net_payments?; + # Expenses incurred from program services + decimal? expense_program_services?; + # Administration expenses + decimal? expense_administration?; + # Fundraising expenses + decimal? expense_fundraising?; + # Total FY expenses + decimal? expenses_total?; + # Difference between total revenue and total expenses + decimal? net_gain_loss?; + # Accounting expenses + decimal? expense_accounting?; + # Advertising/promotional expenses + decimal? expense_advertising_promotion?; + # IT expenses + decimal? expense_info_technology?; + # Insurance expenses + decimal? expense_insurance?; + # Interest expenses + decimal? expense_interest?; + # Investment management expenses + decimal? expense_investment_management?; + # Legal expenses + decimal? expense_legal?; + # Pension plan expenses + decimal? expense_pension_plan?; + # Publications expenses + decimal? expense_publications?; + # Professional fundraising expenses + decimal? expense_profesional_fundraising?; + # Total assets + decimal? assets_total?; + # Unrestricted new assets + decimal? unrestricted_net_assets?; + # Net fixed assets (Land, Buildings, equipment) + decimal? net_fixed_assets_LBE?; + # Net assets at the end of year + decimal? net_assets_end_of_year?; + # Expenses not recorded elsewhere + decimal? other_expense?; + # total amount of secured mortgages and notes payable to unrelated third parties that are secured by the organization's assets + decimal? notes_payable_mortgages?; + # Total liabilities at the end of year + decimal? liabilities_total?; + # A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months. + string? months_of_cash?; + # IRS 990 form Part VIII dealing with revenue + PartVIII? part_8_revenue?; + # IRS 990 form Part IX dealing with expenses + PartIX? part_9_expenses?; + # IRS 990 form Part X, Balance Sheet + PartX? part_10_balance_sheet?; +}; + +public type Contractor record { + # The contractors name. + string? name?; + # The contractors address. + string? address?; + # The contractors compensation. + string? compensation?; + # The type of service the contractor provided. + string? service_type?; +}; + +# list of key data checks enumerated below +public type Key_Data_Checks record { + # presence of data check errors + boolean? data_check_errors?; +}; + +# list of capital structure indicators enumerated below +public type Capital_Structure_Indicators record { + # liquidity capital structure indicator + Liquidity? liquidity?; + # balance sheet composition + Balance_Sheet_Composition? balance_sheet_composition?; +}; + +public type CharityCheck_organization_types record { + # Type of organization and use of contribution as it appears in the Publication 78. + string? organization_type?; + # In general, an individual who itemizes deductions may deduct contributions to most charitable organizations up to 50% of his or her adjusted gross income computed without regard to net operating loss carrybacks. Individuals generally may deduct charitable contributions to other organizations up to 30% of their adjusted gross income (computed without regard to net operating loss carrybacks). These limitations (and organizational status) are indicated. + string? deductibility_limitation?; + # Deductibility Status Codes. + string? deductibility_status_description?; +}; + +# IRS form 990-EZ financials +public type FinancialF990EZ record { + # Tax year begin date + string? period_begin?; + # Tax year end date + string? period_end?; + # Accounting Method + string? accounting_method?; + # Tax-exempt status + string? organization_type?; + # Candid use only + string? date_last_modified?; + # Contributions, gifts, grants, and similar amounts received . + decimal? revenue_contributions?; + # Program service revenue including government fees and contracts + decimal? revenue_program_services?; + # Membership dues and assessments revenues + decimal? revenue_membership_dues?; + # Investment income + decimal? revenue_investments?; + # Gain or (loss) from sale of assets other than inventory + decimal? revenue_sales_other?; + # Net income or (loss) from gaming and fundraising events + decimal? revenue_special_events?; + # Gross sales of inventory, less returns and allowances + decimal? revenue_sales_inventory?; + # Gross sales of inventory, less returns and allowances + decimal? revenue_sales?; + # Total all other revenue + decimal? revenue_other?; + # Total revenue - Current Year + decimal? total_revenue?; + # Grants and similar amounts paid + decimal? expense_grants?; + # Benefits paid to or for members + decimal? expense_benefits?; + # Salaries, other compensation, and employee benefits + decimal? expense_salaries_employee_benefits?; + # Professional fees and other payments to independent contractors + decimal? expense_professional_fees?; + # Occupancy, rent, utilities, and maintenance + decimal? expense_occupancy?; + # Printing, publications, postage, and shipping + decimal? expense_printing_publications_postage?; + # Other expenses + decimal? expense_other?; + # Total functional expenses + decimal? total_expenses?; + # Excess or (deficit) for the year + decimal? net_gain_loss?; + # Other changes in net assets or fund balances + decimal? other_changes?; + # Beginning of year cash, savings, and investments + decimal? cash_savings_investments_boy?; + # Beginning of year land and buildings assets + decimal? land_and_buidings_boy?; + # Beginning of year other assets + decimal? other_assets_boy?; + # Beginning of year total assets + decimal? total_assets_boy?; + # Beginning of year total liabilities + decimal? total_liabilities_boy?; + # Net assets or fund balances at the beginning of the year + decimal? net_assets_boy?; + # End of year cash, savings, and investments + decimal? cash_savings_investments_eoy?; + # End of year land and buildings assets + decimal? land_and_buidings_eoy?; + # End of year other assets + decimal? other_assets_eoy?; + # End of year total assets + decimal? total_assets_eoy?; + # End of year total liabilities + decimal? total_liabilities_eoy?; + # Net assets or fund balances at the end of the year + decimal? net_assets_eoy?; + # IRS Form 990 EZ Financials Part I, Revenue, Expenses, and Changes in Net Assets or Fund Balances + EZFinancialsPartI? part_1_revenue_expenses?; + # IRS Form 990 EZ Financials Part II, Balance Sheet + EZFinancialsPartII? part_2_balance_sheet?; +}; + +@deprecated +public type OtherStaff record { + # DEPRECATED + string? name?; + # DEPRECATED + string? title?; + # DEPRECATED + string? 'type?; +}; + +# IRS 990 document, possibly uploaded by the organization +public type Fin_Doc record { + # File name document uploaded as + string? form990_name?; + # Year file pertains to + string? form990_year?; + # URL to access this document + string? form990_url?; + # Source of document + string? form990_source?; +}; + +public type OK_PublicProfile3_ record { + # HTTP response status code. + string? code?; + # Description of the HTTP response status code. + string? status?; +}; + +# Contains the last change datetimes for several key data values +public type ProfileDataChangeDates record { + # Datetime of last update to primary address + string? primary_address_last_modified?; + # Datetime of last update to payment address + string? payment_address_last_modified?; + # Datetime of last update to primary contact email address + string? primary_contact_email_last_modified?; + # Datetime of last update to fundraising contact email address + string? fundraising_contact_email_last_modified?; + # Datetime of last update to organization website address + string? org_website_last_modified?; + # Datetime of last update to organization seal level + string? seal_last_modified?; + # Datetime of last update to organization demographics information + string? dei_last_modified?; +}; + +# A document the organization uploaded to GuideStar +public type OtherDocument record { + # Document name entered by organization + string? document_name?; + # Year document is associated with + string? document_year?; + # DEPRECATED + string? otherdocument_contents?; + # URL to document + string? document_url?; +}; + +# Financial Trends Analysis for 990 filers +public type FinancialTrends record { + # The fiscal year as a number + string? fiscal_year?; + # list of business model indicators enumerated below + Business_Model_Indicators? business_model_indicators?; + # list of capital structure indicators enumerated below + Capital_Structure_Indicators? capital_structure_indicators?; + # list of key data checks enumerated below + Key_Data_Checks? key_data_checks?; +}; + +# balance sheet composition +public type Balance_Sheet_Composition record { + # total cash + int? cash?; + # total investments + int? investments?; + # total receivables + int? receivables?; + # gross land buildings and equipment amount + int? gross_land_buildings_and_equipment_lbe?; + # accumulated depreciation as percent of land and buildings + string? accumulated_depreciation_as_percent_of_lbe?; + # liabilities as a percent of net assets + string? liabilities_as_percent_of_net_assets?; + # unrestrited net assets total + int? unrestricted_net_assets?; + # temporarily restricted net assets total + int? temporarily_restricted_net_assets?; + # permanently restricted net assets total + int? permanently_restricted_net_assets?; + # restricted net assets total + int? restricted_net_assets?; + # total net assets + int? total_net_assets?; +}; + +public type BadRequest record { + # HTTP response status code. + string? code?; + string? message?; +}; + +# demographic totals for staff +public type StaffLevelTotals record { + # total number of board members + string? total_board_members?; + # total number of staff + string? total_staff?; + # total number of senior staff + string? total_senior_staff?; +}; + +# Video information added by organization +public type Video record { + # Caption of video + string? video_caption?; + # URL to video + string? video_url?; +}; + +# DEPRECATED +# +# # Deprecated +@deprecated +public type DemographicsSubCategory record { + # DEPRECATED + string? subcategory?; + # DEPRECATED + DemographicsStaffLevel[]? staff_levels?; +}; + +# IRS form 990-PF financials +public type Financial990PF record { + # Candid use only + decimal? investments_us_state_government?; + # Tax year begin date + string? period_begin?; + # Tax year end date + string? period_end?; + # Cash—non-interest-bearing, Fair Market Value + Savings and temporary cash investments, Fair Market Value + decimal? cash_equivalent_investible_assets?; + # Net investment income + decimal? net_investment_income?; + # Adjusted Net Income + decimal? adjusted_net_income?; + # Total operating and administrative expenses + decimal? total_operating_expenses?; + # Contributions not included in 8a + decimal? contributions?; + # Total functional expenses + decimal? total_expenses?; + # Accounting fees + decimal? expense_accounting?; + # Interest expenses + decimal? expense_interest?; + # Legal fees + decimal? expense_legal?; + # Other professional fees + decimal? expense_professional_fees?; + # Pension plans, employee benefits expenses + decimal? expense_pension_plans?; + # Printing and publications expenses + decimal? expense_publications?; + # Investments—U.S. and state government obligations + decimal? investments_us_state_govt?; + # Investments—corporate stock + decimal? investments_stocks?; + # Investments—corporate bonds + decimal? investments_bonds?; + # Investments—other + decimal? investments_other?; + # Land, buildings, and equipment: basis + decimal? land_buildings_equipment?; + # Other assets + decimal? other_assets?; + # Total assets + decimal? total_assets?; + # Total liabilities + decimal? total_liabilities?; + # Total assets, Fair Market Value - Total liabilities, Book Value + decimal? net_assets?; + # Total revenue - Current Year + decimal? income_total?; +}; + +# Current, or most recent, fiscal year (FY) financial information. Since this could come from multiple 990 form types, many of the fields are normalized. +public type CurrentFinancial1 record { + # The FY as a number + int:Signed32? fiscal_year?; + # The IRS 990 form type the data in this CurrentFinancial object is based off of. + string? form_type?; + # Source of current financial information + string? data_source?; + # Total monetary amount of assets, in USD + decimal? assets_total?; + # Total monetary value of liabilities, in USD + decimal? total_liabilities?; + # Contributions revenue, i.e. donations, in USD + decimal? revenue_contributions?; + # Government grants revenue, in USD + decimal? revenue_govt_grants?; + # Program services revenue, in USD + decimal? revenue_program_services?; + # Investments revenue, in USD + decimal? revenue_investments?; + # Special events revenue, in USD + decimal? revenue_special_events?; + # Sales revenue, in USD + decimal? revenue_sales?; + # Other revenue, in USD + decimal? revenue_other?; + # Total revenue,, in USD + decimal? total_revenue?; + # Administration expenses, in USD + decimal? expense_administration?; + # Program services expenses, in USD + decimal? expense_program_services?; + # Fundraising expenses, in USD + decimal? expense_fundraising?; + # Accounting expenses, in USD + decimal? expense_accounting?; + # Advertising expenses, in USD + decimal? expense_advertising_promotion?; + # IT expenses, in USD + decimal? expense_info_technology?; + # Insurance expenses, in USD + decimal? expense_insurance?; + # Interest expenses, in USD + decimal? expense_interest?; + # Investment management expenses, in USD + decimal? expense_investment_management?; + # Legal expenses, in USD + decimal? expense_legal?; + # Pension plan expenses, in USD + decimal? expense_pension_plan?; + # Professional fundraising expenses, in USD + decimal? expense_professional_fundraising?; + # Professional fees expenses, in USD + decimal? expense_professional_fees?; + # Publication expenses, in USD + decimal? expense_publications?; + # Admin operating expenses, in USD + decimal? expense_operating_admin?; + # Gifts and grants paid expenses, in USD + decimal? expense_gifts_grants_paid?; + # Disbursement expenses, in USD + decimal? total_expense_disbursements?; + # Total expenses, in USD + decimal? expenses_total?; + # Net gain/loos this FY, in USD + decimal? net_gain_loss?; + # Cash and equivalent assets, in USD + decimal? cash_and_equivalent_assets?; + # U.S. bond investment gain/loss, in USD + decimal? investments_us_government?; + # Stock investment gain/loss, in USD + decimal? investments_stock?; + # Bond investments gain/loss, in USD + decimal? investments_bonds?; + # Other investments gain/loss, in USD + decimal? investments_other?; + # Land, buildings, equipment end of year value, in USD + decimal? land_buildings_equipment?; + # Other assets end of year value, in USD + decimal? other_assets?; +}; + +# The Philanthropy Classification System (PCS) is Candid’s (formerly Foundation Center and GuideStar) taxonomy, describing the work of grantmakers, recipient organizations and the philanthropic transactions between those entities. Candid’s Classification System is based on the National Taxonomy of Exempt Entities (NTEE) and has been expanded over the last three decades to include the emerging work we have evidenced while capturing and indexing the work of the sector on a global scale. +public type PCS record { + # PCS facet name + string? pcs_facet?; + # PCS code + string? pcs_code?; + # PCS code description + string? pcs_description?; + # PCS parent code + string? pcs_parent_code?; + # PCS parent code description + string? pcs_parent_description?; +}; + +# Current, or most recent, fiscal year (FY) financial information. Since this could come from multiple 990 form types, many of the fields are normalized. +public type CurrentFinancial record { + # Start date of the FY that this current financial object covers + string? period_begin?; + # End date of the fiscal year that this current financial object covers + string? period_end?; + # The FY as a number + int:Signed32? fiscal_year?; + # The IRS 990 form type the data in this CurrentFinancial object is based off of. + string? form_type?; + # Source of current financial information + string? data_source?; + # Total monetary amount of assets, in USD + decimal? assets_total?; + # Total monetary value of liabilities, in USD + decimal? total_liabilities?; + # Contributions revenue, i.e. donations, in USD + decimal? revenue_contributions?; + # Government grants revenue, in USD + decimal? revenue_govt_grants?; + # Program services revenue, in USD + decimal? revenue_program_services?; + # Investments revenue, in USD + decimal? revenue_investments?; + # Special events revenue, in USD + decimal? revenue_special_events?; + # Sales revenue, in USD + decimal? revenue_sales?; + # Other revenue, in USD + decimal? revenue_other?; + # Total revenue,, in USD + decimal? total_revenue?; + # Administration expenses, in USD + decimal? expense_administration?; + # Program services expenses, in USD + decimal? expense_program_services?; + # Fundraising expenses, in USD + decimal? expense_fundraising?; + # Accounting expenses, in USD + decimal? expense_accounting?; + # Advertising expenses, in USD + decimal? expense_advertising_promotion?; + # IT expenses, in USD + decimal? expense_info_technology?; + # Insurance expenses, in USD + decimal? expense_insurance?; + # Interest expenses, in USD + decimal? expense_interest?; + # Investment management expenses, in USD + decimal? expense_investment_management?; + # Legal expenses, in USD + decimal? expense_legal?; + # Pension plan expenses, in USD + decimal? expense_pension_plan?; + # Professional fundraising expenses, in USD + decimal? expense_professional_fundraising?; + # Unrestricted net asset, in USD + decimal? unrestricted_net_assets?; + # Land, buildings and equipment fixed assets, in USD + decimal? net_fixed_assets_LBE?; + # mortgages and notes payable to unrelated 3rd parties, in USD + decimal? notes_payable_mortgages?; + # A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months. + string? months_of_cash?; + # Professional fees expenses, in USD + decimal? expense_professional_fees?; + # Publication expenses, in USD + decimal? expense_publications?; + # Admin operating expenses, in USD + decimal? expense_operating_admin?; + # Gifts and grants paid expenses, in USD + decimal? expense_gifts_grants_paid?; + # Disbursement expenses, in USD + decimal? total_expense_disbursements?; + # Total expenses, in USD + decimal? expenses_total?; + # Net gain/loos this FY, in USD + decimal? net_gain_loss?; + # Salary and other employee benefit expense, in USD + decimal? expense_salaries_employee_benefits?; + # Cash and equivalent assets, in USD + decimal? cash_and_equivalent_assets?; + # U.S. bond investment gain/loss, in USD + decimal? investments_us_government?; + # Stock investment gain/loss, in USD + decimal? investments_stock?; + # Bond investments gain/loss, in USD + decimal? investments_bonds?; + # Other investments gain/loss, in USD + decimal? investments_other?; + # Land, buildings, equipment end of year value, in USD + decimal? land_buildings_equipment?; + # Other assets end of year value, in USD + decimal? other_assets?; +}; + +public type Forbidden record { + # HTTP response status code. + string? code?; + string? message?; +}; + +public type DEI2Demographics record { + # demographic totals for staff + StaffLevelTotals? staff_level_totals?; + # list of equity strategy items enumerated below + EquityStrategy? equity_strategies?; + DEI2Category[]? categories?; +}; + +# Organization Charity Check information +public type CharityCheck record { + # A unique number identifying organizations and organizational entities. + string? organization_id?; + # Date the organization’s information was last updated. + string? organization_info_last_modified?; + # Employer Identification Number. + string? ein?; + # The public name recognized by the IRS. + string? organization_name?; + # Organization name "Also Known As" + string? organization_name_aka?; + # Address of the organization. + string? address_line1?; + # Additional address information. + string? address_line2?; + # City of the organization's address. + string? city?; + # State (Abbreviation) of the organization's address. + string? state?; + # State (Full Name) of the organization's address. + string? state_name?; + # Zip code of the organization's address. + string? zip?; + # This indicates the primary return(s) the organization is required to file. + string? filing_req_code?; + # Date the Charity Check report was last modified. + string? charity_check_last_modified?; + # A message indicating that although the organization is not on the Pub78, their filing requirement code shows that they are a religious organization and are therefore not required to appear on the Pub78 to establish their status. + string? pub78_church_message?; + # Organization name as it appears in the Publication 78 data. + string? pub78_organization_name?; + # EIN (Employer Identification Number) as it appears in the Publication 78 data. + string? pub78_ein?; + # Whether the organization is listed on the most current Publication 78. Also known as the Cumulative List of Organizations, IRS Publication 78 lists all organizations to which charitable contributions are tax deductible. The Publication 78 record for each organization includes the organization's name, its city, and its current tax-exempt status, including what percentage of contributions to it are tax deductible. Subordinate organizations in group exemptions inherit the Pub78 status of the parent organization. + string? pub78_verified?; + # City of the organization as it appears in the Publication 78 data. + string? pub78_city?; + # State of the organization as it appears in the Publication 78 data. + string? pub78_state?; + # Indicator for understanding an organization’s Publication 78 data. Subordinate organizations in group exemptions inherit the Pub78 status of the parent organization. + string? pub78_indicator?; + CharityCheck_organization_types[]? organization_types?; + # Date of most recent Publication 78. + string? most_recent_pub78?; + # Date of the most recent Internal Revenue Bulletin. + string? most_recent_irb?; + # A message indicating that although the organization is not on the IRS BF, their filing requirement code shows that they are a church or religious organization and are therefore not required to appear on the IRS BMF to establish their status. + string? bmf_church_message?; + # Organization name as it appears in the Business Master File. + string? bmf_organization_name?; + # EIN (Employer Identification Number) as it appears in the Business Master File. + string? bmf_ein?; + # If the organization appears in the Business Master File. + string? bmf_status?; + # Date of the most recent IRS Business Master File. + string? most_recent_bmf?; + # Subsection code as it appears in Business Master File. This code identifies the type of tax-exempt organization. This is often used to determine if contributions to them are tax deductible. + string? bmf_subsection?; + # Subsection code description as it relates to the subsection code that appears in Business Master File. This code identifies the type of tax-exempt organization. This is often used to determine if contributions to them are tax deductible. + string? subsection_description?; + # Organizations can select IRS foundation codes to describe their organization type. + string? foundation_code?; + # Textual description of the foundation code. + string? foundation_code_description?; + # This is the month on a ruling or determination letter recognizing the organization's exempt status. + string? ruling_month?; + # This is the year on a ruling or determination letter recognizing the organization's exempt status. + string? ruling_year?; + # This is the month on an advanced ruling recognizing the organization’s exempt status. A section 501(c)(3) organization that has received an advance ruling with an expiration date on or after June 9, 2008, is classified as a publicly supported charity during its first five years. Such an organization and its donors may rely on the organization's advance ruling and the organization no longer needs to file Form 8734 with the IRS. Beginning with the organization's sixth year, it must establish that it met the public support test by showing that it is publicly supported on its Form 990, Return of Organization Exempt From Income Tax.On September 9, 2008, the IRS issued temporary Income Tax Regulations, which eliminated the advance ruling process for a section 501(c)(3) organization. Under the new regulations, a new 501(c)(3) organization will be classified as a publicly supported charity, and not a private foundation, if it can show that it reasonably can be expected to be publicly supported when it applies for tax-exempt status. + string? adv_ruling_month?; + # This is the year on an advanced ruling recognizing the organization’s exempt status. A section 501(c)(3) organization that has received an advance ruling with an expiration date on or after June 9, 2008, is classified as a publicly supported charity during its first five years. Such an organization and its donors may rely on the organization's advance ruling and the organization no longer needs to file Form 8734 with the IRS. Beginning with the organization's sixth year, it must establish that it met the public support test by showing that it is publicly supported on its Form 990, Return of Organization Exempt From Income Tax. On September 9, 2008, the IRS issued temporary Income Tax Regulations, which eliminated the advance ruling process for a section 501(c)(3) organization. Under the new regulations, a new 501(c)(3) organization will be classified as a publicly supported charity, and not a private foundation, if it can show that it reasonably can be expected to be publicly supported when it applies for tax-exempt status. + string? adv_ruling_year?; + # This is a 4-digit IRS-internal number assigned to parent organizations holding group exemption letters. Subordinate organizations in group exemptions inherit the Pub78 status of the parent organization. + string? group_exemption?; + # The EO Status Code defines the type of exemption held by the organization. + string? exempt_status_code?; + # Indicates whether this organization has been listed by OFAC on the Specially Designated National (SDN) List. Also known as the “Terrorist Watch List”. + string? ofac_status?; + # Indicates the revocation code provided by the IRS in the Automatic Revocation file. + string? revocation_code?; + # Date of revocation. + string? revocation_date?; + # Date of reinstatement, if any. + string? reinstatement_date?; + # Indicates whether the Business Master File and Publication 78 data are reporting the organization differently regarding its classification as a private foundation. + string? irs_bmf_pub78_conflict?; + # Non-private foundation status. + string? foundation_509a_status?; + # Candid Internal Use Only (Removed in Future API Versions). + string? irb_organization_id?; + # If the organization was listed in an Internal Revenue Bulletin, the bulletin number is listed here. + string? bulletin_number?; + # URL link to the IRB. + string? bulletin_url?; + # Effective date of the IRB. + string? effective_date?; + # The date that GuideStar IRB last modification date. + string? irb_last_modified?; + # Date and time the Charity Check API returned the result. Reported in Greenwich Mean Time (GMT). + string? report_date?; + # Organizations can select IRS foundation codes to describe their organization type. + string? foundation_type_code?; + # Textual description of the foundation code. + string? foundation_type_description?; + CharityCheck_parent_organizations[]? parent_organizations?; +}; + +# Images uploaded by organization +public type PhotoLink record { + # URL to image + string? picture_url?; + # Image caption + string? caption?; +}; + +public type Unauthorized record { + # HTTP response status code. + string? code?; + string? message?; +}; + +# list of equity strategy items enumerated below +public type EquityStrategy record { + # presence of compensation information + boolean? data_compensation?; + # presence of data disparities information + boolean? data_disparities?; + # presence of root cause information + boolean? data_root_cause?; + # presence of programming goals information + boolean? data_programming_goals?; + # presence of feedback information + boolean? data_feedback?; + # presence of demographics information + boolean? data_demographics?; + # presence of strategic plan information + boolean? data_strategic_plan?; + # presence of policy standards information + boolean? policy_standards?; + # presence of promotion policy information + boolean? policy_promotion?; + # presence of evaluation policy information + boolean? policy_evaluation?; + # presence of community policy information + boolean? policy_community?; + # presence of leadership policy information + boolean? policy_leadership?; + # presence of satisfaction policy information + boolean? policy_satisfaction?; + # presence of equity policy information + boolean? policy_equity?; + # equity strategy section's last modified date for the organization + string? equity_strategy_last_modified?; +}; + +public type V1PublicProfile record { + # HTTP response status code. + int? code?; + # Diagnostic message for response status + string? message?; + # Time taken for request to process + int? took?; + # List of errors encountered + string[]? errors?; + V1PublicProfile_data? data?; +}; + +# National taxonomy of exempt Entities (NTEE) code information +public type NteeCode record { + # NTEE code + string? ntee_code?; + # NTEE primary code + string? primary_code?; + # NTEE Primary description + string? primary_description?; + # NTEE subcode + string? sub_code?; + # NTEE subcode description + string? sub_description?; +}; + +public type V2PublicProfile_data record { + # Information about the non-profit, such as name and address + Summary2? summary?; + # Collection of an organizations programs and program metrics + Programs2? programs?; + # Organization financial information + Financials2? financials?; + # Organization operations information + Operations1? operations?; + # Organization Charity Check information + CharityCheck? charitycheck?; +}; + +public type Error record { + string? 'resource?; + string? reason?; +}; + +# Specific feedback response questions answered by organization +public type FBResponseText record { + # Feedback response question text + string? question_text?; + # Feedback response answer text + string? response_text?; +}; + +public type OrganizationType record { + # The type of organization it is. + string? organization_type?; + # The amount you can deduct from your taxes for donations towards this organization. + string? deductibility_limitation?; + # The code for the type of organization. + string? deductibility_status_description?; +}; + +@deprecated +public type OrganizationDemographics record { + # DEPRECATED + int:Signed32? total_board_members?; + # DEPRECATED + int:Signed32? total_fulltime_staff?; + # DEPRECATED + int:Signed32? total_parttime_staff?; + # DEPRECATED + int:Signed32? total_staff?; + # DEPRECATED + int:Signed32? total_senior_staff?; + # DEPRECATED + boolean? tracks_staffboardvol_retention?; + # DEPRECATED + boolean? tracks_staffboard_income?; + # DEPRECATED + boolean? tracks_staffboard_age?; + # DEPRECATED + boolean? tracks_vendor_diversity?; + # DEPRECATED + boolean? has_diversity_committee?; + # DEPRECATED + boolean? has_diversity_manager?; + # DEPRECATED + boolean? diversity_manager_fulltime?; + # DEPRECATED + boolean? diversity_plan?; + # DEPRECATED + boolean? supports_diversity_via_other_methods?; + # list of equity strategy items enumerated below + EquityStrategy? equity_strategies?; + # DEPRECATED + DemographicsCategory[]? categories?; +}; + +# IRS Form 990 EZ Financials Part I, Revenue, Expenses, and Changes in Net Assets or Fund Balances +public type EZFinancialsPartI record { + # total contributions + decimal? contributions_total?; + # service revenue + decimal? service_revenue?; + # revenue from membership dues + decimal? membership_dues?; + # revenue from income investments + decimal? income_investments?; + # gross revenue from other sources + decimal? gross_other?; + # Less cost of sales of assets- other + decimal? cost_other?; + # Gain or loss on sale of assets-other + decimal? gain_other?; + # gross gaming revenue + decimal? gross_gaming?; + # gross fundraising revenue + decimal? gross_fundraising?; + # gross special revenue + decimal? gross_special?; + # direct expenses + decimal? direct_expenses?; + # net special revenue + decimal? net_special?; + # gross revenue from sales + decimal? gross_sales?; + # cost of goods + decimal? cost_goods?; + # gross profit + decimal? gross_profit?; + # revenue from other sources + decimal? revenue_other?; + # total revenue + decimal? revenue_total?; + # total grants paid + decimal? grants_total?; + # total benefits paid + decimal? benefits_total?; + # total compensation expenses + decimal? compensation_total?; + # total fundraising expenses + decimal? fundraising_total?; + # total expenses from occupancy, rent, utilities, and maintenance + decimal? occupancy_total?; + # total printing expenses + decimal? printing_total?; + # total expenses from other sources + decimal? other_expenses_total?; + # total functional expenses + decimal? functional_expenses_total?; + # excess (or deficit) for the year + decimal? year_excess?; + # beginning of year net assets + decimal? net_assets_boy?; + # changes in assets + decimal? assets_change?; + # end of year net assets + decimal? net_assets_eoy?; +}; + +# DEPRECATED +# +# # Deprecated +@deprecated +public type Award record { + # DEPRECATED + string? awarding_external_org?; + # DEPRECATED + string? award_name?; + # Year award received + string? award_year?; +}; + +public type TooManyRequests record { + # HTTP response status code. + string? code?; + string? message?; +}; + +# IRS Form 990 EZ Financials Part II, Balance Sheet +public type EZFinancialsPartII record { + # beginning of year cash + decimal? cash_boy?; + # beginning of year land and buildings + decimal? lbe_boy?; + # beginning of year other assets + decimal? assets_other_boy?; + # beginning of year total assets + decimal? assets_total_boy?; + # beginning of year total liability + decimal? liability_total_boy?; + # beginning of year net total + decimal? net_total_boy?; + # end of year cash + decimal? cash_eoy?; + # end of year land and buildings + decimal? lbe_eoy?; + # end of year other assets + decimal? assets_other_eoy?; + # end of year total assets + decimal? assets_total_eoy?; + # end of year total liability + decimal? liability_total_eoy?; + # end of year net total + decimal? net_total_eoy?; +}; + +public type NotFound record { + # HTTP response status code. + string? code?; + string? message?; +}; diff --git a/ballerina/modules/premier/utils.bal b/ballerina/modules/premier/utils.bal new file mode 100644 index 0000000..e8d07cd --- /dev/null +++ b/ballerina/modules/premier/utils.bal @@ -0,0 +1,41 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +import ballerina/url; + +type SimpleBasicType string|boolean|int|float|decimal; + +# Get Encoded URI for a given value. +# +# + value - Value to be encoded +# + return - Encoded string +isolated function getEncodedUri(anydata value) returns string { + string|error encoded = url:encode(value.toString(), "UTF8"); + if (encoded is string) { + return encoded; + } else { + return value.toString(); + } +} + +# Generate header map for given header values. +# +# + headerParam - Headers map +# + return - Returns generated map or error at failure of client initialization +isolated function getMapForHeaders(map headerParam) returns map { + map headerMap = {}; + foreach var [key, value] in headerParam.entries() { + if value is string || value is string[] { + headerMap[key] = value; + } else if value is int[] { + string[] stringArray = []; + foreach int intValue in value { + stringArray.push(intValue.toString()); + } + headerMap[key] = stringArray; + } else if value is SimpleBasicType { + headerMap[key] = value.toString(); + } + } + return headerMap; +} diff --git a/docs/CharityCheckPdf_v1.0.json b/docs/CharityCheckPdf_v1.0.json new file mode 100644 index 0000000..239c736 --- /dev/null +++ b/docs/CharityCheckPdf_v1.0.json @@ -0,0 +1,285 @@ +{ + "openapi":"3.0.1", + "info":{ + "title":"CharityCheckPdf", + "description":"This end-point will allow you to retrieve organization's Charity Check information in PDF format. API returns the byte stream.", + "version":"1.0" + }, + "servers":[ + { + "url":"https://apidata.guidestar.org/charitycheckpdf" + }, + { + "url":"https://api.candid.org/charitycheckpdf" + } + ], + "paths":{ + "/v1/pdf/{ein}":{ + "get":{ + "summary":"/charitycheckpdf/v1/pdf", + "description":"Generate a PDF report to validate nonprofit status and eligibility with a 100% IRS-compliant charity check.", + "operationId":"charitycheckpdf_v1", + "parameters":[ + { + "name":"ein", + "in":"path", + "description":"Employer Identification Number.", + "example":"13-1837418", + "required":true, + "schema":{ + "type":"string", + "default":"13-1837418" + } + } + ], + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/pdf":{ + "schema":{ + "type":"object", + "description":"PDF containing charity check information for the organization with the given ein" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + } + }, + "components":{ + "schemas":{ + "BadRequest":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":400 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"The request cannot be fulfilled due to bad syntax." + } + } + }, + "Unauthorized":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":401 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." + } + } + }, + "Forbidden":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":403 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Forbidden, we found insufficient permissions to grant access to the resources. Please check the detailed message of the response." + } + } + }, + "NotFound":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":404 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully but we could not find the resource ein" + } + } + }, + "NotAcceptable":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":406 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request." + } + } + }, + "TooManyRequests":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":429 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Rate limit is exceeded. Try again later." + } + } + }, + "InternalServerError":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":500 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Oh no!, this is bad, something went wrong... please contact API support!" + } + } + } + }, + "securitySchemes":{ + "apiKeyHeader":{ + "type":"apiKey", + "name":"Subscription-Key", + "in":"header" + } + } + }, + "security":[ + { + "apiKeyHeader":[ + + ] + } + ], + "x-readme":{ + "explorer-enabled":true, + "proxy-enabled":true, + "samples-enabled":true + } + } + \ No newline at end of file diff --git a/docs/Essentials_v1.0.json b/docs/Essentials_v1.0.json new file mode 100644 index 0000000..fa2f550 --- /dev/null +++ b/docs/Essentials_v1.0.json @@ -0,0 +1,2669 @@ +{ + "openapi":"3.0.0", + "info":{ + "title":"Essentials", + "description":"Search GuideStar’s most common set of data about nonprofits to quickly find organizations most relevant to your users, and use those results to get more data from our other APIs. API returns search result in JSON format.", + "version":"1.0" + }, + "servers":[ + { + "url":"https://api.candid.org/essentials" + }, + { + "url":"https://apidata.guidestar.org/essentials" + } + ], + "paths":{ + "/v1":{ + "post":{ + "summary":"/essentials/v1", + "description":"Find nonprofits using variable search criteria and explore essential information.", + "operationId":"essentials_v1", + "requestBody":{ + "description":"Below JSON request body is an example showing all available elements. Please use the examples from the API Documentation.", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Query" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Query" + } + }, + "application/x-www-form-urlencoded":{ + + } + } + }, + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/V1EssentialsResponse" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/V1EssentialsResponse" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + }, + "/v2":{ + "post":{ + "summary":"/essentials/v2", + "description":"Find nonprofits using variable search criteria and explore essential information.", + "operationId":"essentials_v2", + "requestBody":{ + "description":"Below JSON request body is an example showing all available elements. Please use the examples from the API Documentation.", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Query" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Query" + } + }, + "application/x-www-form-urlencoded":{ + + } + } + }, + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/V2EssentialsResponse" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/V2EssentialsResponse" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + }, + "/v3":{ + "post":{ + "summary":"/essentials/v3", + "description":"Make your searches more relevant and real-time with access to new filters and fields.", + "operationId":"essentials_v3", + "requestBody":{ + "description":"Below JSON request body is an example showing all available elements. Please use the examples from the API Documentation.", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/v3Query" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/v3Query" + } + }, + "application/x-www-form-urlencoded":{ + + } + } + }, + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/V3EssentialsResponse" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/V3EssentialsResponse" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + }, + "/lookup":{ + "get":{ + "summary":"/essentials/lookup", + "description":"Use the /lookup endpoint to retrieve a list of the tables that can be passed as a filter_name to the lookup detail endpoints. The tables and their contents can be used to generate dropdowns and filters in your system when using the Essentials API.", + "operationId":"essentials_lookup", + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/EssentialsLookupResponse" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + }, + "/lookup/{filter_name}":{ + "get":{ + "summary":"/essentials/lookup/{filter_name}", + "description":"Provides a list of all the human-readable search values within a specific filter_name table, which can then be used in search queries with the Essentials endpoints. Each array contains a table key, name value, and search value. The resulting search_value(s) can be passed as search values in the Essentials API.", + "operationId":"essentials_lookup_{filter_name}", + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/EssentialsFilteredLookupResponse" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + }, + "parameters":[ + { + "name":"filter_name", + "x-global":true, + "in":"path", + "example":"ntee_major", + "required":true, + "schema":{ + "type":"string" + } + } + ] + } + }, + "/lookup/{filter_name}/{key_or_value}":{ + "get":{ + "summary":"/essentials/lookup/{filter_name}/{key_or_value}", + "description":"Lookup details on a specific filter using the known filter_name and key_or_value. The resulting search_value can be passed as a search value in the Essentials API.", + "operationId":"essentials_lookup_{filter_name}_{key_or_value}", + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/EssentialsFilteredLookupResponse" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + }, + "parameters":[ + { + "name":"filter_name", + "x-global":true, + "in":"path", + "description":"A list of all filters that can be used in Essentials endpoints. Found in the response of /essentials/lookup.", + "example":"ntee_major", + "required":true, + "schema":{ + "type":"string" + } + }, + { + "name":"key_or_value", + "x-global":true, + "in":"path", + "description":"Key of filterable items. Found in the response of /essentials/lookup/{filter_name}", + "example":"C00", + "required":true, + "schema":{ + "type":"string" + } + } + ] + } + } + }, + "components":{ + "schemas":{ + "Query":{ + "type":"object", + "properties":{ + "search_terms":{ + "type":"string", + "description":"Can be any string you'd like to search on, including EIN, organization name, keywords, etc.", + "example":"candid" + }, + "from":{ + "type":"integer", + "description":"The offset from the first result. Defaults to 0.", + "example":0 + }, + "size":{ + "type":"integer", + "description":"The maximum number of hits to be returned. Defaults to 25. The maximum number allowed is 25.", + "example":25 + }, + "sort":{ + "$ref":"#/components/schemas/Sort" + }, + "filters":{ + "$ref":"#/components/schemas/Filters" + } + } + }, + "v3Query":{ + "type":"object", + "properties":{ + "search_terms":{ + "type":"string", + "description":"Can be any string you'd like to search on, including EIN, organization name, keywords, etc.", + "example":"candid" + }, + "from":{ + "type":"integer", + "description":"The offset from the first result. Defaults to 0.", + "example":0 + }, + "size":{ + "type":"integer", + "description":"The maximum number of hits to be returned. Defaults to 25. The maximum number allowed is 25.", + "example":25 + }, + "sort":{ + "$ref":"#/components/schemas/v3Sort" + }, + "filters":{ + "$ref":"#/components/schemas/v3Filters" + } + } + }, + "Sort":{ + "type":"object", + "properties":{ + "sort_by":{ + "type":"string", + "description":"Leave blank to sort by relevance.", + "enum":[ + "organization_name", + "bmf_gross_receipts", + "bmf_assets" + ], + "example":"organization_name" + }, + "ascending":{ + "type":"boolean", + "description":"Default value is true (ascending). Set to false to sort by descending value.", + "example":true + } + } + }, + "v3Sort":{ + "type":"object", + "properties":{ + "sort_by":{ + "type":"string", + "description":"Leave blank to sort by relevance.", + "enum":[ + "organization_name", + "bmf_gross_receipts", + "bmf_assets", + "distance", + "year_founded" + ], + "example":"organization_name" + }, + "sort_order":{ + "type":"string", + "description":"Default value is ascending. Allowed values are \"asc\" (ascending) and \"desc\" (descending).", + "enum":[ + "asc", + "desc" + ], + "example":"asc" + } + } + }, + "Filters":{ + "type":"object", + "properties":{ + "geography":{ + "$ref":"#/components/schemas/GeographyFilter" + }, + "organization":{ + "$ref":"#/components/schemas/OrganizationFilter" + }, + "financials":{ + "$ref":"#/components/schemas/FinancialsFilter" + } + } + }, + "v3Filters":{ + "type":"object", + "properties":{ + "geography":{ + "$ref":"#/components/schemas/GeographyFilter" + }, + "organization":{ + "$ref":"#/components/schemas/v3OrganizationFilter" + }, + "financials":{ + "$ref":"#/components/schemas/v3FinancialsFilter" + }, + "last_updated":{ + "$ref":"#/components/schemas/LastUpdated" + } + } + }, + "GeographyFilter":{ + "type":"object", + "properties":{ + "state":{ + "type":"array", + "items":{ + "type":"string", + "description":"State code, comma separated", + "example":"NY" + } + }, + "zip":{ + "type":"string", + "description":"Five digit ZIP code", + "example":10005 + }, + "radius":{ + "type":"integer", + "description":"Radius from the specified ZIP code in miles. Allowed range is between 1 and 50 miles. Values exceeding 50 will default to a radius of 50 miles.", + "example":50 + }, + "msa":{ + "type":"array", + "items":{ + "type":"string", + "description":"Metropolitan statistical area, comma separated", + "example":"NY-NJ" + } + }, + "city":{ + "type":"array", + "items":{ + "type":"string", + "description":"US cities, comma separated", + "example":"New York" + } + }, + "county":{ + "type":"array", + "items":{ + "type":"string", + "description":"US counties, comma separated", + "example":"New York, NY" + } + } + } + }, + "OrganizationFilter":{ + "type":"object", + "properties":{ + "profile_levels":{ + "type":"array", + "description":"GuideStar seal levels, comma separated.", + "enum":[ + "bronze", + "silver", + "gold", + "platinum" + ], + "items":{ + "type":"string", + "example":"platinum" + } + }, + "ntee_major_codes":{ + "type":"array", + "description":"National Taxonomy of Exempt Entities (NTEE) major codes, comma separated.", + "items":{ + "type":"string", + "example":"T" + } + }, + "ntee_minor_codes":{ + "type":"array", + "description":"National Taxonomy of Exempt Entities (NTEE) minor codes, comma separated.", + "items":{ + "type":"string", + "example":"50" + } + }, + "subsection_codes":{ + "type":"array", + "description":"IRS subsection codes and/or descriptions, comma separated.", + "items":{ + "type":"string", + "example":"501(c)(3) Public Charity" + } + }, + "foundation_codes":{ + "type":"array", + "description":"Foundation codes and/or descriptions, comma separated.", + "items":{ + "type":"string", + "example":"15" + } + }, + "bmf_status":{ + "type":"boolean", + "description":"Flag indicating the organization has the most recent IRS BMF. Defaults to null. Otherwise true or false.", + "example":true + }, + "pub78_verified":{ + "type":"boolean", + "description":"Flag indicating the organization is pub78 verified. Value set as true or false.", + "example":true + }, + "affiliation_type":{ + "$ref":"#/components/schemas/AffiliationTypeFilter" + }, + "specific_exclusions":{ + "$ref":"#/components/schemas/SpecificExclusionsFilter" + }, + "number_of_employees_range":{ + "$ref":"#/components/schemas/NumberRangeFilter" + }, + "form_types":{ + "$ref":"#/components/schemas/IrsFormTypesFilter" + }, + "audits":{ + "$ref":"#/components/schemas/AuditsFilter" + } + } + }, + "v3OrganizationFilter":{ + "type":"object", + "properties":{ + "profile_levels":{ + "type":"array", + "description":"GuideStar seal levels, comma separated.", + "enum":[ + "bronze", + "silver", + "gold", + "platinum" + ], + "items":{ + "type":"string", + "example":"platinum" + } + }, + "subject_codes":{ + "type":"array", + "description":"Subject codes, comma separated.", + "items":{ + "type":"string", + "example":"SN04" + } + }, + "population_served_codes":{ + "type":"array", + "description":"Population served codes, comma separated.", + "items":{ + "type":"string", + "example":"PG0302" + } + }, + "ntee_major_codes":{ + "type":"array", + "description":"National Taxonomy of Exempt Entities (NTEE) major codes, comma separated.", + "items":{ + "type":"string", + "example":"T" + } + }, + "ntee_minor_codes":{ + "type":"array", + "description":"National Taxonomy of Exempt Entities (NTEE) minor codes, comma separated.", + "items":{ + "type":"string", + "example":"50" + } + }, + "subsection_codes":{ + "type":"array", + "description":"IRS subsection codes and/or descriptions, comma separated.", + "items":{ + "type":"string", + "example":"501(c)(3) Public Charity" + } + }, + "foundation_codes":{ + "type":"array", + "description":"Foundation codes and/or descriptions, comma separated.", + "items":{ + "type":"string", + "example":"15" + } + }, + "group_exemption":{ + "type":"array", + "description":"Group exemption codes, comma separated.", + "items":{ + "type":"string", + "example":"9334" + } + }, + "number_of_employees":{ + "$ref":"#/components/schemas/NumberRangeFilter" + }, + "ruling_year":{ + "type":"object", + "description":"Range specifying the year the granted organization tax exempt status (a.k.a. Ruling Year)", + "$ref":"#/components/schemas/NumberRangeFilter" + }, + "properties":{ + "$ref":"#/components/schemas/v3OrgProperties" + } + } + }, + "v3OrgProperties":{ + "type":"object", + "properties":{ + "bmf_status":{ + "type":"boolean", + "description":"Flag indicating the organization has the most recent IRS BMF. Defaults to null. Otherwise true or false.", + "example":true + }, + "pub78_verified":{ + "type":"boolean", + "description":"Flag indicating the organization is pub78 verified. Value set as true or false.", + "example":true + }, + "allow_online_giving":{ + "type":"boolean", + "description":"Flag indicating the organization allows online giving. Value set as true or false.", + "example":true + }, + "dei_submitted":{ + "type":"boolean", + "description":"Flag indicating the organization has submitted demographics information. Value set as true or false.", + "example":false + }, + "exclude_revoked_organizations":{ + "type":"boolean", + "description":"Flag to exclude revoked organizations. Value set as true or false.", + "example":false + }, + "exclude_defunct_or_merged_organizations":{ + "type":"boolean", + "description":"Flag to exclude defunct or merged organizations. Value set as true or false.", + "example":false + }, + "relationship_type":{ + "$ref":"#/components/schemas/AffiliationTypeFilter" + } + } + }, + "v3FinancialsFilter":{ + "type":"object", + "properties":{ + "most_recent_year":{ + "type":"object", + "properties":{ + "form_types":{ + "type":"object", + "properties":{ + "f990":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990. Value set as true or false.", + "example":true + }, + "f990pf":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990-PF. Value set as true or false.", + "example":false + }, + "f990ez":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990ez. Value set as true or false.", + "example":true + }, + "f990n":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990n. Value set as true or false.", + "example":false + } + } + }, + "total_revenue":{ + "$ref":"#/components/schemas/NumberRangeFilter" + }, + "total_expenses":{ + "$ref":"#/components/schemas/NumberRangeFilter" + }, + "total_assets":{ + "$ref":"#/components/schemas/NumberRangeFilter" + } + } + }, + "required_to_file_990t":{ + "type":"boolean", + "description":"Flag indicating the organization is required to file a 990-T. Value set as true or false.", + "example":false + }, + "a_133_audit_performed":{ + "type":"boolean", + "description":"Flag indicating the organization performed A-133 audit. Value set as true or false.", + "example":false + } + } + }, + "FinancialsFilter":{ + "type":"object", + "properties":{ + "total_revenue":{ + "$ref":"#/components/schemas/NumberRangeFilter" + }, + "total_expenses":{ + "$ref":"#/components/schemas/NumberRangeFilter" + }, + "total_assets":{ + "$ref":"#/components/schemas/NumberRangeFilter" + } + } + }, + "AffiliationTypeFilter":{ + "type":"object", + "properties":{ + "parent":{ + "type":"boolean", + "description":"Flag indicating the organization is a parent. Value set as true or false.", + "example":false + }, + "subordinate":{ + "type":"boolean", + "description":"Flag indicating the organization is a subordinate. Value set as true or false.", + "example":false + }, + "independent":{ + "type":"boolean", + "description":"Flag indicating the organization is independent. Value set as true or false.", + "example":true + }, + "headquarter":{ + "type":"boolean", + "description":"Flag indicating the organization is a headquarter. Value set as true or false.", + "example":false + } + } + }, + "SpecificExclusionsFilter":{ + "type":"object", + "properties":{ + "exclude_revoked_organizations":{ + "type":"boolean", + "description":"Flag to exclude revoked organizations. Value set as true or false.", + "example":false + }, + "exclude_defunct_or_merged_organizations":{ + "type":"boolean", + "description":"Flag to exclude defunct or merged organizations. Value set as true or false.", + "example":false + } + } + }, + "NumberRangeFilter":{ + "type":"object", + "properties":{ + "min":{ + "type":"integer", + "description":"Minimum number", + "example":5 + }, + "max":{ + "type":"integer", + "description":"Maximum number", + "example":987654321 + } + } + }, + "IrsFormTypesFilter":{ + "type":"object", + "properties":{ + "f990":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990. Value set as true or false.", + "example":true + }, + "f990pf":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990-PF. Value set as true or false.", + "example":false + }, + "f990ez":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990 EZ. Value set as true or false.", + "example":false + }, + "f990n":{ + "type":"boolean", + "description":"Flag indicating the organization files a form 990N. Value set as true or false.", + "example":false + }, + "required_to_file_990t":{ + "type":"boolean", + "description":"Flag indicating the organization is required to file a 990-T. Value set as true or false.", + "example":false + } + } + }, + "AuditsFilter":{ + "type":"object", + "properties":{ + "a_133_audit_performed":{ + "type":"boolean", + "description":"Flag indicating the organization performed A-133 audit. Value set as true or false.", + "example":false + } + } + }, + "LastUpdated":{ + "type":"object", + "properties":{ + "start_date":{ + "type":"string", + "description":"A filter, along with end_date, defines a range on date_type, in the format yyyy-MM-ddTHH:mm:ss.", + "example":"2020-01-01T01:01:01:01" + }, + "end_date":{ + "type":"string", + "description":"A filter, along with start_date, defines a range on date_type, in the format yyyy-MM-ddTHH:mm:ss.", + "example":"2020-01-01T01:01:01:01" + }, + "date_type":{ + "type":"string", + "description":"A filter, to specify updates made to a organization over the specified end_date and start_date.", + "enum":[ + "seal_last_modified", + "profile_last_modified", + "dei_last_modified", + "financials_last_modified", + "last_modified" + ], + "example":"seal_last_modified" + } + } + }, + "V1EssentialsResponse":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"Response Code", + "example":200 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "description":"Time taken for request to process", + "example":24 + }, + "errors":{ + "type":"array", + "description":"List of errors encountered", + "items":{ + "type":"string" + } + }, + "data":{ + "type":"object", + "properties":{ + "took":{ + "type":"integer", + "description":"Elapsed time to calculate results", + "example":22 + }, + "total_hits":{ + "type":"integer", + "description":"Number of results returned by search", + "example":1 + }, + "hits":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "organization_id":{ + "type":"string", + "description":"A unique number identifying organizations and organizational entities", + "example":"9938979" + }, + "bridge_id":{ + "type":"string", + "description":"Deprecated Bridge ID", + "example":null + }, + "ein":{ + "type":"string", + "description":"Employer Identification Number", + "example":"82-4267025" + }, + "organization_name":{ + "type":"string", + "description":"The public name recognized by the IRS", + "example":"Illinois Youth Rugby Association" + }, + "also_known_as":{ + "type":"string", + "description":"Organization name Also Known As", + "example":"chillicothe rugby football club" + }, + "mission":{ + "type":"string", + "description":"Mission statement for the organization", + "example":"To assist those in need" + }, + "address_line_1":{ + "type":"string", + "description":"Address line 1 of the organization", + "example":"123 West 1st Street" + }, + "address_line_2":{ + "type":"string", + "description":"Address line 2 of the organization", + "example":"Suite 201" + }, + "city":{ + "type":"string", + "description":"City of the organization's address", + "example":"Chicago" + }, + "state":{ + "type":"string", + "description":"State (Abbreviation) of the organization's address", + "example":"IL" + }, + "zip":{ + "type":"string", + "description":"Zip code of the organization's address", + "example":"23185" + }, + "county":{ + "type":"string", + "description":"County of the organization's address", + "example":"Peoria, IL" + }, + "msa":{ + "type":"string", + "description":"Metropolitan statistical area of the organization's adresss", + "example":"IL - Peoria-Pekin" + }, + "lat_long":{ + "type":"string", + "description":"latitude and longitude of the organization's adress", + "example":"40.9052,-89.5866" + }, + "ntee_code":{ + "type":"string", + "description":"National Taxonomy of Exempt Entities", + "example":"N60 Amateur Sports Clubs, Leagues, N.E.C." + }, + "profile_level":{ + "type":"string", + "description":"GuideStar seal levels.", + "enum":[ + "bronze", + "silver", + "gold", + "platinum" + ], + "example":"bronze" + }, + "public_report":{ + "type":"string", + "description":"GuideStar's public profile URL", + "example":"https://www.guidestar.org/profile/82-4267025" + }, + "subsection_code":{ + "type":"string", + "description":"IRS subsection code of the organization", + "example":"501(c)(3) Public Charity" + }, + "number_of_employees":{ + "type":"string", + "description":"Number of employees at the organization", + "example":"55" + }, + "form_type":{ + "type":"string", + "description":"Tax form filing type. ", + "example":"990" + }, + "website_url":{ + "type":"string", + "description":"URL for the organization's website", + "example":"candid.org" + }, + "foundation_code":{ + "type":"string", + "description":"Foundation code that describes the organization", + "example":"15" + }, + "parent_orgs":{ + "type":"string", + "description":"Names of parent organizations, comma seperated", + "example":"Parent Org, Parent Org 2" + }, + "bmf_gross_receipts":{ + "type":"string", + "description":"Gross receipts of the organization reported on the BMF", + "example":"2349999" + }, + "bmf_assets":{ + "type":"string", + "description":"Assets of the organization reported on the BMF", + "example":"1849900" + }, + "form990_total_revenue":{ + "type":"string", + "description":"Total revenue filed on the most recent Form 990, 990-PF, or 990-EZ filing", + "example":"2349999" + }, + "form990_total_expenses":{ + "type":"string", + "description":"Total expenses filed on the most recent Form 990, 990-PF, or 990-EZ filing", + "example":"22224499" + }, + "form990_total_assets":{ + "type":"string", + "description":"Total assets filed on the most recent Form 990, 990-PF, or 990-EZ filing", + "example":"12348855" + }, + "contact_email":{ + "type":"string", + "description":"Email of the primary contact at the organization", + "example":"help@orgname.org" + }, + "contact_name":{ + "type":"string", + "description":"Name of the primary contact at the organization", + "example":"John Smith" + }, + "contact_phone":{ + "type":"string", + "description":"Phone number of the primary contact at the organization", + "example":"(555) 111-5555" + }, + "contact_title":{ + "type":"string", + "description":"Title of the primary contact at the organization", + "example":"Support Lead" + }, + "properties":{ + "type":"object", + "properties":{ + "parent":{ + "type":"boolean", + "description":"If the organization is a parent", + "example":true + }, + "subordinate":{ + "type":"boolean", + "description":"If the organization is a subordinate", + "example":false + }, + "independent":{ + "type":"boolean", + "description":"If the organization is independent", + "example":false + }, + "national_hq":{ + "type":"boolean", + "description":"If the organization is a national headquarter", + "example":true + }, + "revoked":{ + "type":"boolean", + "description":"If the organization is revoked", + "example":false + }, + "defuncted_or_merged":{ + "type":"boolean", + "description":"If the organization is defuncted or merged", + "example":false + }, + "audit_a133_performed":{ + "type":"boolean", + "description":"If the organization performed a A-133 audit", + "example":true + }, + "bmf_status":{ + "type":"boolean", + "description":"If the organization is present on the BMF", + "example":true + }, + "pub78_verified":{ + "type":"boolean", + "description":"If the organization is Pub78 verified", + "example":true + }, + "allow_online_giving":{ + "type":"boolean", + "description":"If the organization allows online giving", + "example":true + } + } + } + } + } + } + } + } + } + }, + "V2EssentialsResponse":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"Response Code", + "example":200 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "description":"Time taken for request to process", + "example":24 + }, + "errors":{ + "type":"array", + "description":"List of errors encountered", + "items":{ + "type":"string" + } + }, + "data":{ + "type":"object", + "properties":{ + "took":{ + "type":"integer", + "description":"Elapsed time to calculate results", + "example":22 + }, + "total_hits":{ + "type":"integer", + "description":"Number of results returned by search", + "example":1 + }, + "hits":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "organization_id":{ + "type":"string", + "description":"A unique number identifying organizations and organizational entities", + "example":"9938979" + }, + "bridge_id":{ + "type":"string", + "description":"Deprecated Bridge ID", + "example":null + }, + "ein":{ + "type":"string", + "description":"Employer Identification Number", + "example":"82-4267025" + }, + "organization_name":{ + "type":"string", + "description":"The public name recognized by the IRS", + "example":"Illinois Youth Rugby Association" + }, + "also_known_as":{ + "type":"string", + "description":"Organization name Also Known As", + "example":"chillicothe rugby football club" + }, + "mission":{ + "type":"string", + "description":"Mission statement for the organization", + "example":"To assist those in need" + }, + "address_line_1":{ + "type":"string", + "description":"Address line 1 of the organization", + "example":"123 West 1st Street" + }, + "address_line_2":{ + "type":"string", + "description":"Address line 2 of the organization", + "example":"Suite 201" + }, + "city":{ + "type":"string", + "description":"City of the organization's address", + "example":"Chicago" + }, + "state":{ + "type":"string", + "description":"State (Abbreviation) of the organization's address", + "example":"IL" + }, + "zip":{ + "type":"string", + "description":"Zip code of the organization's address", + "example":"23185" + }, + "county":{ + "type":"string", + "description":"County of the organization's address", + "example":"Peoria, IL" + }, + "msa":{ + "type":"string", + "description":"Metropolitan statistical area of the organization's adresss", + "example":"IL - Peoria-Pekin" + }, + "lat_long":{ + "type":"string", + "description":"latitude and longitude of the organization's adress", + "example":"40.9052,-89.5866" + }, + "ntee_code":{ + "type":"string", + "description":"National Taxonomy of Exempt Entities", + "example":"N60 Amateur Sports Clubs, Leagues, N.E.C." + }, + "profile_level":{ + "type":"string", + "description":"GuideStar seal levels.", + "enum":[ + "bronze", + "silver", + "gold", + "platinum" + ], + "example":"bronze" + }, + "public_report":{ + "type":"string", + "description":"GuideStar's public profile URL", + "example":"https://www.guidestar.org/profile/82-4267025" + }, + "subsection_code":{ + "type":"string", + "description":"IRS subsection code of the organization", + "example":"501(c)(3) Public Charity" + }, + "number_of_employees":{ + "type":"string", + "description":"Number of employees at the organization", + "example":"55" + }, + "form_type":{ + "type":"string", + "description":"Tax form filing type. ", + "example":"990" + }, + "website_url":{ + "type":"string", + "description":"URL for the organization's website", + "example":"candid.org" + }, + "logo_url":{ + "type":"string", + "description":"URL for the organization's logo", + "example":"candid.org" + }, + "foundation_code":{ + "type":"string", + "description":"Foundation code that describes the organization", + "example":"15" + }, + "parent_orgs":{ + "type":"string", + "description":"Names of parent organizations, comma seperated", + "example":"Parent Org, Parent Org 2" + }, + "bmf_gross_receipts":{ + "type":"string", + "description":"Gross receipts of the organization reported on the BMF", + "example":"2349999" + }, + "bmf_assets":{ + "type":"string", + "description":"Assets of the organization reported on the BMF", + "example":"1849900" + }, + "form990_total_revenue":{ + "type":"string", + "description":"Total revenue filed on the most recent Form 990, 990-PF, or 990-EZ filing", + "example":"2349999" + }, + "form990_total_expenses":{ + "type":"string", + "description":"Total expenses filed on the most recent Form 990, 990-PF, or 990-EZ filing", + "example":"22224499" + }, + "form990_total_assets":{ + "type":"string", + "description":"Total assets filed on the most recent Form 990, 990-PF, or 990-EZ filing", + "example":"12348855" + }, + "contact_email":{ + "type":"string", + "description":"Email of the primary contact at the organization", + "example":"help@orgname.org" + }, + "contact_name":{ + "type":"string", + "description":"Name of the primary contact at the organization", + "example":"John Smith" + }, + "contact_phone":{ + "type":"string", + "description":"Phone number of the primary contact at the organization", + "example":"(555) 111-5555" + }, + "contact_title":{ + "type":"string", + "description":"Title of the primary contact at the organization", + "example":"Support Lead" + }, + "properties":{ + "type":"object", + "properties":{ + "parent":{ + "type":"boolean", + "description":"If the organization is a parent", + "example":true + }, + "subordinate":{ + "type":"boolean", + "description":"If the organization is a subordinate", + "example":false + }, + "independent":{ + "type":"boolean", + "description":"If the organization is independent", + "example":false + }, + "national_hq":{ + "type":"boolean", + "description":"If the organization is a national headquarter", + "example":true + }, + "revoked":{ + "type":"boolean", + "description":"If the organization is revoked", + "example":false + }, + "defuncted_or_merged":{ + "type":"boolean", + "description":"If the organization is defuncted or merged", + "example":false + }, + "audit_a133_performed":{ + "type":"boolean", + "description":"If the organization performed a A-133 audit", + "example":true + }, + "bmf_status":{ + "type":"boolean", + "description":"If the organization is present on the BMF", + "example":true + }, + "pub78_verified":{ + "type":"boolean", + "description":"If the organization is Pub78 verified", + "example":true + }, + "allow_online_giving":{ + "type":"boolean", + "description":"If the organization allows online giving", + "example":true + } + } + } + } + } + } + } + } + } + }, + "V3EssentialsResponse":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"Response Code", + "example":200 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "description":"Time taken for request to process", + "example":24 + }, + "time":{ + "type":"string", + "description":"Time of API call.", + "example":"2020-01-01T01:01:01:01.000Z" + }, + "results_count":{ + "type":"integer", + "description":"Number of results returned by search", + "example":2541 + }, + "page_count":{ + "type":"integer", + "description":"Number of pages returned by the search.", + "example":67 + }, + "errors":{ + "type":"array", + "description":"List of errors encountered", + "items":{ + "type":"string" + } + }, + "hits":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "organization":{ + "type":"object", + "properties":{ + "organization_id":{ + "type":"string", + "description":"A unique number identifying organizations and organizational entities", + "example":"7578046" + }, + "ein":{ + "type":"string", + "description":"Employer Identification Number", + "example":"39-1731296" + }, + "organization_name":{ + "type":"string", + "description":"The public name recognized by the IRS", + "example":"Candid" + }, + "also_known_as":{ + "type":"string", + "description":"Organization name Also Known As", + "example":"Foundation Center, Guidestar" + }, + "group_exemption":{ + "type":"string", + "description":"Four-digit number assigned to a group of organizations falling under a central/parent organization holding group exemption letters.", + "example":"3297" + }, + "mission":{ + "type":"string", + "description":"Mission statement for the organization", + "example":"Get you the information to do good" + }, + "website_url":{ + "type":"string", + "description":"URL for the organization's website", + "example":"candid.org" + }, + "logo_url":{ + "type":"string", + "description":"URL for the organization's logo", + "example":"candid.org" + }, + "profile_level":{ + "type":"string", + "description":"GuideStar seal level", + "example":"Platinum" + }, + "profile_year":{ + "type":"number", + "description":"GuideStar seal year", + "example":2020 + }, + "profile_link":{ + "type":"string", + "description":"GuideStar's public profile URL", + "example":"https://www.guidestar.org/profile/82-4267025" + }, + "profile_logo":{ + "type":"string", + "description":"GuideStar's seal logo", + "example":"https://www.guidestar.org/App_Themes/MainSite2/images/ProfilePageSvgs/profile-PLATINUM2021-seal.svg" + }, + "leader_name":{ + "type":"string", + "description":"Name of leader", + "example":"Ann Mei Chang" + }, + "leader_title":{ + "type":"string", + "description":"Leader's title", + "example":"CEO" + }, + "contact_name":{ + "type":"string", + "description":"Name of the primary contact at the organization", + "example":"John smith" + }, + "contact_email":{ + "type":"string", + "description":"Email of the primary contact at the organization", + "example":"help@orgnam.org" + }, + "contact_phone":{ + "type":"string", + "description":"Phone number of the primary contact at the organization", + "example":"(555) 111-5555" + }, + "contact_title":{ + "type":"string", + "description":"Title of the primary contact at the organization", + "example":"Support lead" + }, + "number_of_employees":{ + "type":"number", + "description":"Number of employees at the organization", + "example":55 + }, + "ruling_year":{ + "type":"number", + "description":"The year the IRS granted organization tax exempt status (a.k.a. Ruling Year)", + "example":2019 + } + } + }, + "properties":{ + "type":"object", + "properties":{ + "bmf_status":{ + "type":"boolean", + "description":"If the organization is present on the BMF", + "example":false + }, + "pub78_verified":{ + "type":"boolean", + "description":"If the organization is Pub78 verified", + "example":false + }, + "allow_online_giving":{ + "type":"boolean", + "description":"If the organization allows online giving", + "example":true + }, + "dei_submitted":{ + "type":"boolean", + "description":"If the organization has submitted demographics information", + "example":false + }, + "revoked":{ + "type":"boolean", + "description":"If the organization is revoked", + "example":false + }, + "defuncted_or_merged":{ + "type":"boolean", + "description":"If the organization is defuncted or merged", + "example":false + }, + "relationship_type":{ + "type":"object", + "properties":{ + "parent":{ + "type":"boolean", + "description":"If the organization is a parent", + "example":true + }, + "subordinate":{ + "type":"boolean", + "description":"If the organization is a subordinate", + "example":false + }, + "independent":{ + "type":"boolean", + "description":"If the organization is independent", + "example":false + }, + "headquarters":{ + "type":"boolean", + "description":"If the organization is a national headquarter", + "example":true + } + } + }, + "relationship_details":{ + "type":"object", + "description":"Organization's relation with other organizations.", + "properties":{ + "relationship_type":{ + "type":"string", + "description":"Relationship type of organization.", + "enum":[ + "parent", + "subordinate" + ], + "example":"parent" + }, + "organization_name":{ + "type":"string", + "description":"Name of organization.", + "example":"Candid 2" + }, + "ein":{ + "type":"string", + "description":"Employer Identification Number", + "example":"12-4566789" + } + } + } + } + }, + "geography":{ + "type":"object", + "properties":{ + "address_line_1":{ + "type":"string", + "description":"Address line 1 of the organization", + "example":"1 Financial Sq" + }, + "address_line_2":{ + "type":"string", + "description":"Address line 2 of the organization", + "example":"Floor 24" + }, + "city":{ + "type":"string", + "description":"City of the organization's address", + "example":"New York" + }, + "state":{ + "type":"string", + "description":"State (Abbreviation) of the organization's address", + "example":"NY" + }, + "zip":{ + "type":"number", + "description":"Zip code of the organization's address", + "example":10005 + }, + "msa":{ + "type":"string", + "description":"Metropolitan statistical area of the organization's adresss", + "example":"IL - Peoria-Pekin" + }, + "congressional_district":{ + "type":"string", + "description":"Congressional district of the organization's address", + "example":"District 45, CA" + }, + "county":{ + "type":"string", + "description":"County of the organization's address", + "example":"Peoria, IL" + }, + "latitude":{ + "type":"number", + "description":"latitude of the organization's adress", + "example":40.9052 + }, + "longitude":{ + "type":"number", + "description":"longitude of the organization's adress", + "example":-89.5866 + } + } + }, + "taxonomies":{ + "type":"object", + "properties":{ + "subject_codes":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "subject_code":{ + "type":"string", + "description":"Subject code", + "example":"SP030000" + }, + "subject_code_description":{ + "type":"string", + "description":"Description of subject code", + "example":"SP030000" + } + } + } + }, + "population_served_codes":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "population_served_code":{ + "type":"string", + "description":"Population served code", + "example":"PG030000" + }, + "population_served_description":{ + "type":"string", + "description":"Description of Population served code", + "example":"People with Physical Disabilities " + } + } + } + }, + "ntee_codes":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "ntee_code":{ + "type":"string", + "description":"National Taxonomy of Exempt Entities", + "example":"A00" + }, + "ntee_code_description":{ + "type":"string", + "description":"Description of NTEE code", + "example":"Humanities" + } + } + } + }, + "subsection_code":{ + "type":"object", + "properties":{ + "subsection_code":{ + "type":"string", + "description":"IRS subsection code of the organization", + "example":"03" + }, + "subsection_code_description":{ + "type":"string", + "description":"Description of IRS subsection code", + "example":"501(c)(3) Public Charity" + } + } + }, + "foundation_code":{ + "type":"object", + "properties":{ + "foundation_code":{ + "type":"string", + "description":"Foundation code that describes the organization", + "example":"15" + }, + "foundation_code_description":{ + "type":"string", + "description":"Description of foundation code", + "example":"50% tax deductible" + } + } + } + } + }, + "financials":{ + "type":"object", + "properties":{ + "most_recent_year":{ + "type":"object", + "properties":{ + "form_types":{ + "type":"string", + "description":"Tax form filing type", + "example":"990" + }, + "fiscal_year":{ + "type":"number", + "description":"Fiscal year of the most recent tax filing", + "example":2020 + }, + "total_revenue":{ + "type":"number", + "description":"Most recent year total revenue", + "example":2349999 + }, + "total_expenses":{ + "type":"number", + "description":"Most recent year total expenses", + "example":22224499 + }, + "total_assets":{ + "type":"number", + "description":"Most recent year total assets", + "example":57426592 + } + } + }, + "bmf_gross_receipts":{ + "type":"number", + "description":"Gross receipts of the organization reported on the BMF", + "example":2349999 + }, + "bmf_assets":{ + "type":"number", + "description":"Assets of the organization reported on the BMF", + "example":1849900 + }, + "required_to_file_990t":{ + "type":"boolean", + "description":"Flag indicating the organization is required to file a 990-T.", + "example":false + }, + "a_133_audit_performed":{ + "type":"boolean", + "description":"Flag indicating the organization performed A-133 audit.", + "example":false + } + } + }, + "dates":{ + "type":"object", + "properties":{ + "seal_last_modified":{ + "type":"string", + "description":"Date when Candid seal status was last modified.", + "example":"2020-01-01T01:01:01:01.000Z" + }, + "profile_last_modified":{ + "type":"string", + "description":"Datetime of last update to Candid profile.", + "example":"2020-01-01T01:01:01:01.000Z" + }, + "dei_last_modified":{ + "type":"string", + "description":"Datetime of last update to organization demographics information", + "example":"2020-01-01T01:01:01:01.000Z" + }, + "financials_last_modified":{ + "type":"string", + "description":"Datetime of last update to organization's financial information", + "example":"2020-01-01T01:01:01:01.000Z" + }, + "last_published":{ + "type":"string", + "description":"Datetime of organization's last publication", + "example":"2020-01-01T01:01:01:01.000Z" + } + } + } + } + } + } + } + }, + "EssentialsLookupResponse":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"Response Code", + "example":200 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "description":"Time taken for request to process", + "example":20 + }, + "errors":{ + "type":"array", + "description":"List of errors encountered", + "example":[ + + ], + "items":{ + "type":"string", + "description":"error messaging" + } + }, + "data":{ + "type":"array", + "items":{ + "type":"string", + "description":"field names and values", + "example":[ + "ntee_minor", + "msa_codes", + "ntee_major", + "subsections", + "filing_type", + "foundation_type" + ] + } + } + } + }, + "EssentialsFilteredLookupResponse":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"HTTP response status code.", + "example":200 + }, + "message":{ + "type":"string", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "example":20 + }, + "errors":{ + "type":"array", + "example":[ + + ], + "items":{ + "type":"string", + "description":"error messaging" + } + }, + "data":{ + "type":"array", + "description":"A list of all the tables used as a filter_name with the Essentials Lookup endpoints", + "items":{ + "type":"object", + "description":"Key value pair for filter name, value, and search_value", + "properties":{ + "key":{ + "type":"string", + "description":"Code for the filter_name results", + "example":"A00" + }, + "value":{ + "type":"string", + "description":"Text for the filter_name results", + "example":"Arts, Culture, and Humanities" + }, + "search_value":{ + "type":"string", + "description":"Value to pass in Essential's API filters", + "example":"A_artsCulturesAndHumanities" + } + } + } + } + } + }, + "BadRequest":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":400 + }, + "message":{ + "type":"string", + "example":"The request cannot be fulfilled due to bad syntax." + } + } + }, + "Unauthorized":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":401 + }, + "message":{ + "type":"string", + "example":"Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." + } + } + }, + "Forbidden":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":403 + }, + "message":{ + "type":"string", + "example":"Forbidden, we found insufficient permissions to grant access to the resources. Please check the detailed message of the response." + } + } + }, + "NotFound":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":404 + }, + "message":{ + "type":"string", + "example":"Request was processed successfully but we could not find the resource ein" + } + } + }, + "NotAcceptable":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":406 + }, + "message":{ + "type":"string", + "example":"The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request." + } + } + }, + "TooManyRequests":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":429 + }, + "message":{ + "type":"string", + "example":"Rate limit is exceeded. Try again later." + } + } + }, + "InternalServerError":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":500 + }, + "message":{ + "type":"string", + "example":"Oh no!, this is bad, something went wrong... please contact API support!" + } + } + } + }, + "securitySchemes":{ + "apiKeyHeader":{ + "type":"apiKey", + "name":"Subscription-Key", + "in":"header" + } + } + }, + "security":[ + { + "apiKeyHeader":[ + + ] + } + ], + "x-readme":{ + "explorer-enabled":true, + "proxy-enabled":true, + "samples-enabled":true + } +} \ No newline at end of file diff --git a/docs/Premier_v1.0.json b/docs/Premier_v1.0.json new file mode 100644 index 0000000..8079db9 --- /dev/null +++ b/docs/Premier_v1.0.json @@ -0,0 +1,7347 @@ +{ + "openapi":"3.0.1", + "info":{ + "version":"1.0", + "title":"Premier API", + "description":"Enhance your apps, records, or experience with robust nonprofit profile financials, people, DEI, and IRS compliance validation.", + "license":{ + "name":"Candid API License Agreement" + } + }, + "servers":[ + { + "url":"https://api.candid.org/premier" + }, + { + "url":"https://apidata.guidestar.org/premier" + } + ], + "paths":{ + "/v1/{ein}":{ + "get":{ + "summary":"/premier/v1", + "description":"Use an EIN in the path parameter to retrieve data on a nonprofit's financials, people, DEI, and IRS compliance validation. This endpoint is deprecated; use /premier/v3 instead.", + "operationId":"premier_v1", + "parameters":[ + { + "name":"ein", + "in":"path", + "description":"Employer Identification Number.", + "example":"13-1837418", + "required":true, + "schema":{ + "type":"string" + } + } + ], + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/V1PublicProfile" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + }, + "deprecated":true + } + }, + "/v1/propdf/{ein}":{ + "get":{ + "summary":"/premier/v1/propdf", + "description":"Use an EIN in the path parameter to retrieve a PDF of a nonprofit's financials, people, DEI, and IRS compliance validation.", + "operationId":"premier_v1_propdf", + "parameters":[ + { + "name":"ein", + "in":"path", + "description":"Employer Identification Number.", + "example":"13-1837418", + "required":true, + "schema":{ + "type":"string" + } + } + ], + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/pdf":{ + "schema":{ + "type":"object", + "description":"PDF containing information for the organization with the given ein" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + }, + "/v1/ftapdf/{ein}":{ + "get":{ + "summary":"/premier/v1/ftapdf", + "description":"Use an EIN in the path parameter to get a PDF of a nonprofit's financial trends analysis.", + "operationId":"premier_v1_ftapdf", + "parameters":[ + { + "name":"ein", + "in":"path", + "description":"Employer Identification Number.", + "example":"13-1837418", + "required":true, + "schema":{ + "type":"string" + } + } + ], + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/pdf":{ + "schema":{ + "type":"object", + "description":"PDF containing financial analysis trend for the organization with the given ein" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + }, + "/v2/{ein}":{ + "get":{ + "summary":"/premier/v2", + "description":"Use an EIN in the path parameter to retrieve data on a nonprofit's financials, people, DEI, and IRS compliance validation. This endpoint is deprecated; use /premier/v3 instead.", + "operationId":"premier_v2", + "parameters":[ + { + "name":"ein", + "in":"path", + "description":"Employer Identification Number.", + "example":"13-1837418", + "required":true, + "schema":{ + "type":"string" + } + } + ], + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/V2PublicProfile" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + }, + "deprecated":true + } + }, + "/v3/{ein}":{ + "get":{ + "summary":"/premier/v3", + "description":"Use an EIN in the path parameter to retrieve data on a nonprofit's financials, people, DEI, and IRS compliance validation.", + "operationId":"premier_v3", + "parameters":[ + { + "name":"ein", + "in":"path", + "description":"Employer Identification Number.", + "example":"13-1837418", + "required":true, + "schema":{ + "type":"string", + "example":null + } + } + ], + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/V3PublicProfile" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + }, + "deprecated":false + } + } + }, + "components":{ + "securitySchemes":{ + "apiKeyHeader":{ + "type":"apiKey", + "name":"Subscription-Key", + "in":"header" + } + }, + "schemas":{ + "Object":{ + "type":"object", + "properties":{ + + } + }, + "Error":{ + "type":"object", + "properties":{ + "resource":{ + "type":"string" + }, + "reason":{ + "type":"string" + } + } + }, + "V1PublicProfile":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"HTTP response status code.", + "example":200 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "description":"Time taken for request to process", + "example":24 + }, + "errors":{ + "type":"array", + "description":"List of errors encountered", + "items":{ + "type":"string" + } + }, + "data":{ + "type":"object", + "properties":{ + "summary":{ + "$ref":"#/components/schemas/Summary1" + }, + "programs":{ + "$ref":"#/components/schemas/Programs1" + }, + "financials":{ + "$ref":"#/components/schemas/Financials2" + }, + "operations":{ + "$ref":"#/components/schemas/Operations1" + }, + "charitycheck":{ + "$ref":"#/components/schemas/CharityCheck" + } + } + } + } + }, + "V2PublicProfile":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"HTTP response status code.", + "example":200 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "description":"Time taken for request to process", + "example":24 + }, + "errors":{ + "type":"array", + "description":"List of errors encountered", + "items":{ + "type":"string" + } + }, + "data":{ + "type":"object", + "properties":{ + "summary":{ + "$ref":"#/components/schemas/Summary2" + }, + "programs":{ + "$ref":"#/components/schemas/Programs2" + }, + "financials":{ + "$ref":"#/components/schemas/Financials2" + }, + "operations":{ + "$ref":"#/components/schemas/Operations1" + }, + "charitycheck":{ + "$ref":"#/components/schemas/CharityCheck" + } + } + } + } + }, + "V3PublicProfile":{ + "type":"object", + "properties":{ + "code":{ + "type":"integer", + "description":"HTTP response status code.", + "example":200 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully!" + }, + "took":{ + "type":"integer", + "description":"Time taken for request to process", + "example":24 + }, + "errors":{ + "type":"array", + "description":"List of errors encountered", + "items":{ + "type":"string" + } + }, + "data":{ + "type":"object", + "properties":{ + "summary":{ + "$ref":"#/components/schemas/Summary3" + }, + "programs":{ + "$ref":"#/components/schemas/Programs3" + }, + "financials":{ + "$ref":"#/components/schemas/Financials3" + }, + "operations":{ + "$ref":"#/components/schemas/Operations2" + }, + "charitycheck":{ + "$ref":"#/components/schemas/CharityCheck" + } + } + } + } + }, + "Programs1":{ + "type":"object", + "description":"Collection of an organizations programs and program metrics", + "properties":{ + "programs":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Program2" + } + }, + "platinum_metrics":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PlatinumMetrics1" + } + }, + "charting_impact_answers":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Question" + } + } + } + }, + "Summary1":{ + "type":"object", + "description":"Information about the non-profit, such as name and address", + "properties":{ + "organization_id":{ + "type":"integer", + "description":"GuideStar internal organization ID", + "example":6908122 + }, + "organization_name":{ + "type":"string", + "description":"Organization name", + "example":"Candid" + }, + "ein":{ + "type":"string", + "description":"Employee identification number", + "example":"13-1837418" + }, + "bridge_id":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "address_line_1":{ + "type":"string", + "description":"Organization address street name", + "example":"32 Old Slip" + }, + "address_line_2":{ + "type":"string", + "description":"Organization address Suite or Apartment number", + "example":"24th Floor" + }, + "city":{ + "type":"string", + "description":"Organization address city", + "example":"New York" + }, + "state":{ + "type":"string", + "description":"Organization address state", + "example":"NY" + }, + "zip":{ + "type":"string", + "description":"Organization address zip code", + "example":"10005" + }, + "fax":{ + "type":"string", + "description":"Organization fax number", + "example":"(212)807-3677" + }, + "govt_registered_name":{ + "type":"string", + "description":"Legal organization name", + "example":"Candid" + }, + "also_known_as":{ + "type":"string", + "description":"Comma separated string of names associated with the organization", + "example":"The Foundation Center, Foundation Center, GuideStar, GuideStar USA" + }, + "fiscal_year_end":{ + "type":"string", + "description":"When the fiscal year ends for the organization", + "example":"Dec 31" + }, + "fiscal_year_start":{ + "type":"string", + "description":"When the fiscal year begins for the organization", + "example":"Jan 1" + }, + "affiliation_code":{ + "type":"string", + "description":"Single digit code designating the type of organization (Central, Intermediate, or Independent) if there is no group exemption or (Central, Intermediate, Independent, or Subordinate) if there is a group exemption.", + "example":"3" + }, + "affiliation_description":{ + "type":"string", + "description":"Description of what the affiliation code means", + "example":"This code is used if the organization is an independent organization or an independent auxiliary (i.e., not affiliated with a a National, Regional, or Geographic grouping of organizations)." + }, + "contact_name":{ + "type":"string", + "description":"Primary contact name", + "example":"Gabe Cohen" + }, + "contact_title":{ + "type":"string", + "description":"Primary contact title", + "example":"Senior Director of Brand and Marketing" + }, + "contact_email":{ + "type":"string", + "description":"Primary contact email", + "example":"answers@candid.org" + }, + "contact_phone":{ + "type":"string", + "description":"Primary contact phone number", + "example":"212-620-4230" + }, + "contact_fax":{ + "type":"string", + "description":"Primary contact fax number", + "example":"212-807-3677" + }, + "gs_profile_update_level":{ + "type":"string", + "description":"Guidestar.org organization profile seal of transparency level", + "example":"Platinum 2021" + }, + "gs_profile_update_level_logo":{ + "type":"string", + "description":"Url to Guidestar.org seal image", + "example":"https://www.guidestar.org/App_Themes/MainSite2/images/ProfilePageSvgs/profile-PLATINUM2021-seal.svg" + }, + "deductibility_code":{ + "type":"string", + "description":"Deductibility code signifies whether contributions made to an organization are deductible", + "example":"1" + }, + "deductibility_description":{ + "type":"string", + "description":"Deductibility code description", + "example":"Contributions are deductible, as provided by law" + }, + "donation_to_ein":{ + "type":"string", + "description":"EIN that should be used for charitable donations", + "example":"13-1837418" + }, + "donation_to_name":{ + "type":"string", + "description":"Organization name that should be used for charitable donations", + "example":"Candid" + }, + "areas_served_narrative":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "ruling_year":{ + "type":"string", + "description":"Year that organization started operating as a non-profit", + "example":"1957" + }, + "gs_public_report":{ + "type":"string", + "description":"Guidestar.org organization profile URL", + "example":"https://www.guidestar.org/profile/13-1837418" + }, + "gs_pro_pdf":{ + "type":"string", + "description":"URL of API call to the Pro PDF API endpoint to download the organization's profile PDF", + "example":"https://apidata.guidestar.org/premier/v1/propdf/13-1837418" + }, + "impact_statement":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "subsection_code":{ + "type":"string", + "description":"Subsection Codes are the codes shown under section 501(c) of the Internal Revenue Code of 1986, which define the category under which an organization may be exempt.", + "example":"03" + }, + "subsection_description":{ + "type":"string", + "description":"Description of organization subsection code", + "example":"501(c)(3) Public Charity" + }, + "keywords":{ + "type":"string", + "description":"Keywords added by the organization to their profile", + "example":"philanthropy, data, transparency, capacity building, research, education, foundations, foundation, charitable giving, data driven decisions, nonprofits, transparency, nonprofit sector, organizational effectiveness, organizational efficiency, nonprofit information hub, Forms 990, GuideStar, Foundation Center" + }, + "logo_url":{ + "type":"string", + "description":"Organization logo URL", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6645385&approved=True" + }, + "mission":{ + "type":"string", + "description":"Organization mission statement", + "example":"Candid gets you the information you need to do good." + }, + "is_national_hq":{ + "type":"boolean", + "description":"Whether or not this organization is the national headquarters", + "example":false + }, + "ntee_code":{ + "type":"string", + "description":"National Taxonomy of Exempt Entities (NTEE) Code", + "example":"T50 - Philanthropy, Voluntarism, and Grantmaking" + }, + "website_url":{ + "type":"string", + "description":"Organization website URL", + "example":"candid.org" + }, + "year_founded":{ + "type":"string", + "description":"Year that an organization was founded", + "example":"1956" + }, + "year_incorporated":{ + "type":"string", + "description":"Year that an organization was incorporated", + "example":"1956" + }, + "addresses":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Address" + } + }, + "affiliations":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Affiliation" + } + }, + "awards":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Award" + } + }, + "formerly_known_as":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FormerName" + } + }, + "forms_1023_1024":{ + "type":"array", + "items":{ + "type":"string", + "description":"Application for the organization to gain tax-exempt status", + "example":[ + "https://www.guidestar.org/ViewEdoc.aspx?eDocId=7077922&approved=True" + ] + } + }, + "letters_of_determination":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/LetterOfDetermination" + } + }, + "letters_of_dissolution":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/LetterOfDissolution" + } + }, + "ntee_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/nteeCode" + } + }, + "naics_code":{ + "$ref":"#/components/schemas/NAICSCode" + }, + "sic_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/SICCode" + } + }, + "other_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/OtherDocument" + } + }, + "photos":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PhotoLink" + } + }, + "social_media_urls":{ + "type":"array", + "items":{ + "type":"string", + "description":"A social media URL related to the organization", + "example":"https://www.facebook.com/CandidDotOrg/" + } + }, + "telephone_numbers":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/TelephoneNumber" + } + }, + "videos":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Video" + } + } + } + }, + "Summary2":{ + "type":"object", + "description":"Information about the non-profit, such as name and address", + "properties":{ + "organization_id":{ + "type":"integer", + "description":"GuideStar internal organization ID", + "example":6908122 + }, + "organization_name":{ + "type":"string", + "description":"Organization name", + "example":"Candid" + }, + "ein":{ + "type":"string", + "description":"Employee identification number", + "example":"13-1837418" + }, + "bridge_id":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "address_line_1":{ + "type":"string", + "description":"Organization address street name", + "example":"32 Old Slip" + }, + "address_line_2":{ + "type":"string", + "description":"Organization address Suite or Apartment number", + "example":"24th Floor" + }, + "city":{ + "type":"string", + "description":"Organization address city", + "example":"New York" + }, + "state":{ + "type":"string", + "description":"Organization address state", + "example":"NY" + }, + "zip":{ + "type":"string", + "description":"Organization address zip code", + "example":"10005" + }, + "fax":{ + "type":"string", + "description":"Organization fax number", + "example":"(212)807-3677" + }, + "govt_registered_name":{ + "type":"string", + "description":"Legal organization name", + "example":"Candid" + }, + "also_known_as":{ + "type":"string", + "description":"Comma separated string of names associated with the organization", + "example":"The Foundation Center, Foundation Center, GuideStar, GuideStar USA" + }, + "fiscal_year_end":{ + "type":"string", + "description":"When the fiscal year ends for the organization", + "example":"Dec 31" + }, + "fiscal_year_start":{ + "type":"string", + "description":"When the fiscal year begins for the organization", + "example":"Jan 1" + }, + "affiliation_code":{ + "type":"string", + "description":"Single digit code designating the type of organization (Central, Intermediate, or Independent) if there is no group exemption or (Central, Intermediate, Independent, or Subordinate) if there is a group exemption.", + "example":"3" + }, + "affiliation_description":{ + "type":"string", + "description":"Description of what the affiliation code means", + "example":"This code is used if the organization is an independent organization or an independent auxiliary (i.e., not affiliated with a a National, Regional, or Geographic grouping of organizations)." + }, + "contact_name":{ + "type":"string", + "description":"Primary contact name", + "example":"Gabe Cohen" + }, + "contact_title":{ + "type":"string", + "description":"Primary contact title", + "example":"Senior Director of Brand and Marketing" + }, + "contact_email":{ + "type":"string", + "description":"Primary contact email", + "example":"answers@candid.org" + }, + "contact_phone":{ + "type":"string", + "description":"Primary contact phone number", + "example":"212-620-4230" + }, + "contact_fax":{ + "type":"string", + "description":"Primary contact fax number", + "example":"212-807-3677" + }, + "gs_profile_update_level":{ + "type":"string", + "description":"Guidestar.org organization profile seal of transparency level", + "example":"Platinum 2021" + }, + "gs_profile_update_level_logo":{ + "type":"string", + "description":"Url to Guidestar.org seal image", + "example":"https://www.guidestar.org/App_Themes/MainSite2/images/ProfilePageSvgs/profile-PLATINUM2021-seal.svg" + }, + "deductibility_code":{ + "type":"string", + "description":"Deductibility code signifies whether contributions made to an organization are deductible", + "example":"1" + }, + "deductibility_description":{ + "type":"string", + "description":"Deductibility code description", + "example":"Contributions are deductible, as provided by law" + }, + "donation_to_ein":{ + "type":"string", + "description":"EIN that should be used for charitable donations", + "example":"13-1837418" + }, + "donation_to_name":{ + "type":"string", + "description":"Organization name that should be used for charitable donations", + "example":"Candid" + }, + "areas_served_narrative":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "ruling_year":{ + "type":"string", + "description":"Year that organization started operating as a non-profit", + "example":"1957" + }, + "gs_public_report":{ + "type":"string", + "description":"Guidestar.org organization profile URL", + "example":"https://www.guidestar.org/profile/13-1837418" + }, + "gs_pro_pdf":{ + "type":"string", + "description":"URL of API call to the Pro PDF API endpoint to download the organization's profile PDF", + "example":"https://apidata.guidestar.org/premier/v1/propdf/13-1837418" + }, + "gs_financial_trends_analysis_pdf":{ + "type":"string", + "description":"URL of API call to the FTA PDF API endpoint to download the organization's financial trends analysis PDF", + "example":"https://apidata.guidestar.org/premier/v1/ftapdf/13-1837418" + }, + "impact_statement":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "subsection_code":{ + "type":"string", + "description":"Subsection Codes are the codes shown under section 501(c) of the Internal Revenue Code of 1986, which define the category under which an organization may be exempt.", + "example":"03" + }, + "subsection_description":{ + "type":"string", + "description":"Description of organization subsection code", + "example":"501(c)(3) Public Charity" + }, + "keywords":{ + "type":"string", + "description":"Keywords added by the organization to their profile", + "example":"philanthropy, data, transparency, capacity building, research, education, foundations, foundation, charitable giving, data driven decisions, nonprofits, transparency, nonprofit sector, organizational effectiveness, organizational efficiency, nonprofit information hub, Forms 990, GuideStar, Foundation Center" + }, + "logo_url":{ + "type":"string", + "description":"Organization logo URL", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6645385&approved=True" + }, + "mission":{ + "type":"string", + "description":"Organization mission statement", + "example":"Candid gets you the information you need to do good." + }, + "is_national_hq":{ + "type":"boolean", + "description":"Whether or not this organization is the national headquarters", + "example":false + }, + "ntee_code":{ + "type":"string", + "description":"National Taxonomy of Exempt Entities (NTEE) Code", + "example":"T50 - Philanthropy, Voluntarism, and Grantmaking" + }, + "website_url":{ + "type":"string", + "description":"Organization website URL", + "example":"candid.org" + }, + "year_founded":{ + "type":"string", + "description":"Year that an organization was founded", + "example":"1956" + }, + "year_incorporated":{ + "type":"string", + "description":"Year that an organization was incorporated", + "example":"1956" + }, + "is_non_bmf_org":{ + "type":"boolean", + "description":"Is the organization not on the BMF", + "example":false + }, + "first_on_bmf_date":{ + "format":"date-time", + "type":"string", + "description":"First time organization appeared on the BMF", + "example":"1998-07-31T04:00:00Z" + }, + "last_on_bmf_date":{ + "format":"date-time", + "type":"string", + "description":"Last time an organization appeared on the BMF", + "example":"2021-04-12T04:00:00Z" + }, + "profile_data_change_dates":{ + "$ref":"#/components/schemas/ProfileDataChangeDates" + }, + "addresses":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Address" + } + }, + "affiliations":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Affiliation" + } + }, + "awards":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Award" + } + }, + "formerly_known_as":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FormerName" + } + }, + "forms_1023_1024":{ + "type":"array", + "items":{ + "type":"string", + "description":"Application for the organization to gain tax-exempt status", + "example":[ + "https://www.guidestar.org/ViewEdoc.aspx?eDocId=7077922&approved=True" + ] + } + }, + "letters_of_determination":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/LetterOfDetermination" + } + }, + "letters_of_dissolution":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/LetterOfDissolution" + } + }, + "ntee_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/nteeCode" + } + }, + "naics_code":{ + "$ref":"#/components/schemas/NAICSCode" + }, + "sic_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/SICCode" + } + }, + "platinum_evaluation_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PlatinumEvaluationDocument" + } + }, + "other_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/OtherDocument" + } + }, + "photos":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PhotoLink" + } + }, + "social_media_urls":{ + "type":"array", + "items":{ + "type":"string", + "description":"A social media URL related to the organization", + "example":"https://www.facebook.com/CandidDotOrg/" + } + }, + "telephone_numbers":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/TelephoneNumber" + } + }, + "videos":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Video" + } + } + } + }, + "Programs2":{ + "type":"object", + "description":"Collection of an organizations programs and program metrics", + "properties":{ + "programs":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Program2" + } + }, + "platinum_metrics":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PlatinumMetrics" + } + }, + "charting_impact_answers":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Question" + } + } + } + }, + "Program2":{ + "type":"object", + "description":"Information about an organization's program as entered by the organization", + "properties":{ + "name":{ + "type":"string", + "description":"Program name", + "example":"Knowledge Tools" + }, + "description":{ + "type":"string", + "description":"Program description", + "example":"Through data, research, and our collective experience, Candid provides our users with the knowledge they need to make strategic decisions and develop practical solutions to achieve their missions. \n\nOur GuideStar searchable database currently includes data on 1.9 million 501c3 entities, making it easier to understand who they are and what they do. We support ongoing learning and research by gathering, indexing, and sharing the sector’s collective knowledge on IssueLab while also producing our own research that shares insights on issues affecting the social sector. We provide data and knowledge to the philanthropic field by creating new issue-based web portals known as “Foundation Landscapes” on the topics that matter most to the sector. Through Glasspockets we provide the data, resources, examples, and action steps foundations need to understand the value of transparency, be more open in their own communications, and help shed more light on how private organizations are serving the public good. Candid works closely with organizations around the globe to assist them in collecting and organizing their region’s philanthropy data by sharing what we have learned over the past 60 years about data acquisition and data architecture. \n\nCandid’s CF Insights program is the leader in data collection and research for the community foundation field in the U.S. with a reputation for benchmarking and analysis of trends. Through CF Insights, we continue to deliver a high level of service to our members and worked with partners to release groundbreaking research on the need for increased collaboration amongst leaders of community foundations.\n\nWe also have a number of blogs across our platforms (including the GuideStar blog, GrantSpace blog, GrantCraft blog, GlassPockets blog, Philanthropy News Digest Blog, and more!) that shine a light on relevant topics and trends affecting the sector." + }, + "target_population":{ + "type":"string", + "description":"First target population that the program is targeting", + "example":"General/Unspecified" + }, + "budget":{ + "type":"string", + "description":"Program budget in dollars", + "example":"3002061" + }, + "areas_served":{ + "type":"array", + "description":"Geographic area served by program", + "items":{ + "type":"string", + "description":"Name of the geographic area served by the program", + "example":"United States" + } + } + } + }, + "Summary3":{ + "type":"object", + "description":"Information about the non-profit, such as name and address", + "properties":{ + "organization_id":{ + "type":"integer", + "description":"GuideStar internal organization ID", + "example":6908122 + }, + "organization_name":{ + "type":"string", + "description":"Organization name", + "example":"Candid" + }, + "ein":{ + "type":"string", + "description":"Employee identification number", + "example":"13-1837418" + }, + "bridge_id":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "address_line_1":{ + "type":"string", + "description":"Organization address street name", + "example":"32 Old Slip" + }, + "address_line_2":{ + "type":"string", + "description":"Organization address Suite or Apartment number", + "example":"24th Floor" + }, + "city":{ + "type":"string", + "description":"Organization address city", + "example":"New York" + }, + "state":{ + "type":"string", + "description":"Organization address state", + "example":"NY" + }, + "zip":{ + "type":"string", + "description":"Organization address zip code", + "example":"10005" + }, + "county":{ + "type":"string", + "description":"Organization address county", + "example":"New York" + }, + "latitude":{ + "type":"string", + "description":"Latitude of the center of the zip code of an organizations mailing address", + "example":"40.705966" + }, + "longitude":{ + "type":"string", + "description":"Longitude of the center of the zip code of an organizations mailing address", + "example":"-74.008849" + }, + "fax":{ + "type":"string", + "description":"Organization fax number", + "example":"(212)807-3677" + }, + "govt_registered_name":{ + "type":"string", + "description":"Legal organization name", + "example":"Candid" + }, + "also_known_as":{ + "type":"string", + "description":"Comma separated string of names associated with the organization", + "example":"The Foundation Center, Foundation Center, GuideStar, GuideStar USA" + }, + "fiscal_year_end":{ + "type":"string", + "description":"When the fiscal year ends for the organization", + "example":"Dec 31" + }, + "fiscal_year_start":{ + "type":"string", + "description":"When the fiscal year begins for the organization", + "example":"Jan 1" + }, + "affiliation_code":{ + "type":"string", + "description":"Single digit code designating the type of organization (Central, Intermediate, or Independent) if there is no group exemption or (Central, Intermediate, Independent, or Subordinate) if there is a group exemption.", + "example":"3" + }, + "affiliation_description":{ + "type":"string", + "description":"Description of what the affiliation code means", + "example":"This code is used if the organization is an independent organization or an independent auxiliary (i.e., not affiliated with a a National, Regional, or Geographic grouping of organizations)." + }, + "contact_name":{ + "type":"string", + "description":"Primary contact name", + "example":"Gabe Cohen" + }, + "contact_title":{ + "type":"string", + "description":"Primary contact title", + "example":"Senior Director of Brand and Marketing" + }, + "contact_email":{ + "type":"string", + "description":"Primary contact email", + "example":"answers@candid.org" + }, + "contact_phone":{ + "type":"string", + "description":"Primary contact phone number", + "example":"212-620-4230" + }, + "contact_fax":{ + "type":"string", + "description":"Primary contact fax number", + "example":"212-807-3677" + }, + "gs_profile_update_level":{ + "type":"string", + "description":"Guidestar.org organization profile seal of transparency level", + "example":"Platinum 2021" + }, + "gs_profile_update_level_logo":{ + "type":"string", + "description":"Url to Guidestar.org seal image", + "example":"https://www.guidestar.org/App_Themes/MainSite2/images/ProfilePageSvgs/profile-PLATINUM2021-seal.svg" + }, + "deductibility_code":{ + "type":"string", + "description":"Deductibility code signifies whether contributions made to an organization are deductible", + "example":"1" + }, + "deductibility_description":{ + "type":"string", + "description":"Deductibility code description", + "example":"Contributions are deductible, as provided by law" + }, + "donation_to_ein":{ + "type":"string", + "description":"EIN that should be used for charitable donations", + "example":"13-1837418" + }, + "donation_to_name":{ + "type":"string", + "description":"Organization name that should be used for charitable donations", + "example":"Candid" + }, + "areas_served_narrative":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "ruling_year":{ + "type":"string", + "description":"Year that organization started operating as a non-profit", + "example":"1957" + }, + "gs_public_report":{ + "type":"string", + "description":"Guidestar.org organization profile URL", + "example":"https://www.guidestar.org/profile/13-1837418" + }, + "gs_pro_pdf":{ + "type":"string", + "description":"URL of API call to the Pro PDF API endpoint to download the organization's profile PDF", + "example":"https://apidata.guidestar.org/premier/v1/propdf/13-1837418" + }, + "gs_financial_trends_analysis_pdf":{ + "type":"string", + "description":"URL of API call to the FTA PDF API endpoint to download the organization's financial trends analysis PDF", + "example":"https://apidata.guidestar.org/premier/v1/ftapdf/13-1837418" + }, + "impact_statement":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "subsection_code":{ + "type":"string", + "description":"Subsection Codes are the codes shown under section 501(c) of the Internal Revenue Code of 1986, which define the category under which an organization may be exempt.", + "example":"03" + }, + "subsection_description":{ + "type":"string", + "description":"Description of organization subsection code", + "example":"501(c)(3) Public Charity" + }, + "keywords":{ + "type":"string", + "description":"Keywords added by the organization to their profile", + "example":"philanthropy, data, transparency, capacity building, research, education, foundations, foundation, charitable giving, data driven decisions, nonprofits, transparency, nonprofit sector, organizational effectiveness, organizational efficiency, nonprofit information hub, Forms 990, GuideStar, Foundation Center" + }, + "logo_url":{ + "type":"string", + "description":"Organization logo URL", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6645385&approved=True" + }, + "mission":{ + "type":"string", + "description":"Organization mission statement", + "example":"Candid gets you the information you need to do good." + }, + "is_national_hq":{ + "type":"boolean", + "description":"Whether or not this organization is the national headquarters", + "example":false + }, + "demographics_status":{ + "type":"string", + "description":"Description of demographics status that can be displayed to a funder or donor", + "example":"This organization has provided Candid demographics data on 06/23/2023" + }, + "demographics_status_nonprofit":{ + "type":"string", + "description":"Description of demographics status that can be displayed to a nonprofit", + "example":"Your organization has provided Candid demographics data on 06/23/2023" + }, + "ntee_code":{ + "type":"string", + "description":"National Taxonomy of Exempt Entities (NTEE) Code", + "example":"T50 - Philanthropy, Voluntarism, and Grantmaking" + }, + "sdg":{ + "$ref":"#/components/schemas/SDG" + }, + "website_url":{ + "type":"string", + "description":"Organization website URL", + "example":"candid.org" + }, + "year_founded":{ + "type":"string", + "description":"Year that an organization was founded", + "example":"1956" + }, + "year_incorporated":{ + "type":"string", + "description":"Year that an organization was incorporated", + "example":"1956" + }, + "is_non_bmf_org":{ + "type":"boolean", + "description":"Is the organization not on the BMF", + "example":false + }, + "first_on_bmf_date":{ + "format":"date-time", + "type":"string", + "description":"First time organization appeared on the BMF", + "example":"1998-07-31T04:00:00Z" + }, + "last_on_bmf_date":{ + "format":"date-time", + "type":"string", + "description":"Last time an organization appeared on the BMF", + "example":"2021-04-12T04:00:00Z" + }, + "profile_data_change_dates":{ + "$ref":"#/components/schemas/ProfileDataChangeDates" + }, + "addresses":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Address" + } + }, + "affiliations":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Affiliation" + } + }, + "awards":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Award" + } + }, + "formerly_known_as":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FormerName" + } + }, + "forms_1023_1024":{ + "type":"array", + "items":{ + "type":"string", + "description":"Application for the organization to gain tax-exempt status", + "example":[ + "https://www.guidestar.org/ViewEdoc.aspx?eDocId=7077922&approved=True" + ] + } + }, + "letters_of_determination":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/LetterOfDetermination" + } + }, + "letters_of_dissolution":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/LetterOfDissolution" + } + }, + "ntee_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/nteeCode" + } + }, + "naics_code":{ + "$ref":"#/components/schemas/NAICSCode" + }, + "sic_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/SICCode" + } + }, + "platinum_evaluation_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PlatinumEvaluationDocument" + } + }, + "other_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/OtherDocument" + } + }, + "photos":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PhotoLink" + } + }, + "social_media_urls":{ + "type":"array", + "items":{ + "type":"string", + "description":"A social media URL related to the organization", + "example":"https://www.facebook.com/CandidDotOrg/" + } + }, + "telephone_numbers":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/TelephoneNumber" + } + }, + "videos":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Video" + } + }, + "org_collect_feedback":{ + "type":"boolean", + "description":"Has this organization filled the 'How we listen' section of their profile", + "example":true + }, + "org_feedback_example":{ + "type":"string", + "description":"Response to 'How is your organization collecting feedback?'", + "example":"We collect org feedback through customer surveys" + }, + "org_quiz_interest":{ + "type":"boolean", + "description":"Did the organization indicate they had an interest in taking guidestar's feedback quiz", + "example":false + }, + "org_learn_more":{ + "type":"boolean", + "description":"Did the organization indicate they had an interest in learning more about feedback practices", + "example":false + }, + "feedback_responses":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FBResponseText" + } + }, + "pcs_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PCS" + } + }, + "profile_sdg_codes":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/SDG" + } + } + } + }, + "Programs3":{ + "type":"object", + "description":"Collection of an organizations programs and program metrics", + "properties":{ + "programs":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Program3" + } + }, + "platinum_metrics":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/PlatinumMetrics" + } + }, + "charting_impact_answers":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Question" + } + } + } + }, + "Financials3":{ + "type":"object", + "description":"Organization financial information", + "properties":{ + "most_recent_year_financials":{ + "$ref":"#/components/schemas/CurrentFinancial" + }, + "f990_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialF990_3" + } + }, + "pf990_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Financial990PF" + } + }, + "f990ez_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialF990EZ" + } + }, + "financial_trends_analysis":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialTrends" + } + }, + "financial_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Fin_Doc" + } + }, + "forms_990T":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Form990T" + } + }, + "funding_needs":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FundingNeed" + } + }, + "funding_sources":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FundingSource" + } + }, + "financial_statements":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialStatement" + } + }, + "annual_reports":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/AnnualReport" + } + }, + "accounting_ratios":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Ratios" + } + } + } + }, + "Financials2":{ + "type":"object", + "description":"Organization financial information", + "properties":{ + "most_recent_year_financials":{ + "$ref":"#/components/schemas/CurrentFinancial" + }, + "f990_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialF990_2" + } + }, + "pf990_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Financial990PF" + } + }, + "f990ez_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialF990EZ" + } + }, + "financial_trends_analysis":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialTrends" + } + }, + "financial_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Fin_Doc" + } + }, + "forms_990T":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Form990T" + } + }, + "funding_needs":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FundingNeed" + } + }, + "funding_sources":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FundingSource" + } + }, + "financial_statements":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialStatement" + } + }, + "annual_reports":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/AnnualReport" + } + }, + "accounting_ratios":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Ratios" + } + } + } + }, + "Financials1":{ + "type":"object", + "description":"Organization financial information", + "properties":{ + "most_recent_year_financials":{ + "$ref":"#/components/schemas/CurrentFinancial1" + }, + "f990_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialF990_1" + } + }, + "pf990_financials":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Financial990PF" + } + }, + "financial_documents":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Fin_Doc" + } + }, + "forms_990T":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Form990T" + } + }, + "funding_needs":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FundingNeed" + } + }, + "funding_sources":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/FundingSource" + } + }, + "financial_statements":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/FinancialStatement" + } + }, + "annual_reports":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/AnnualReport" + } + }, + "accounting_ratios":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Ratios" + } + } + } + }, + "Operations1":{ + "type":"object", + "description":"Organization operations information", + "properties":{ + "leader_name":{ + "type":"string", + "description":"Organization leader name", + "example":"Mr. Bradford K. Smith" + }, + "leader_profile":{ + "type":"string", + "description":"Organization leader profile", + "example":"Bradford K. Smith leads Candid as its President. Mr. Smith joined Candid (formerly Foundation Center) as President in October 2008.\n\nPreviously, he was president of the Oak Foundation in Geneva, Switzerland. Prior to that, he developed and led Ford Foundation's Peace and Social Justice Program. During his 10-year tenure as vice president, he distributed hundreds of millions of dollars to organizations working on human rights, international cooperation, governance, and civil society in the U.S. and around the world.\n\nMr. Smith has devoted his entire career to the philanthropic and nonprofit sectors. He serves on the board of directors of the Tinker Foundation and the advisory board of the United Nations Trust Fund for Human Security. He holds an M.A. in economics from the New School for Social Research in New York and a B.A. in anthropology and ethnomusicology from the University of Michigan." + }, + "co_leader_name":{ + "type":"string", + "description":"Organization co-leader name", + "example":"" + }, + "co_leader_profile":{ + "type":"string", + "description":"Organization co-leader profile", + "example":"" + }, + "no_of_employees":{ + "format":"int32", + "type":"integer", + "description":"Number of employees of the organization", + "example":178 + }, + "no_of_volunteers":{ + "format":"int32", + "type":"integer", + "description":"Number of volunteers at an organization", + "example":15 + }, + "organization_email":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "organization_details_year":{ + "format":"int32", + "type":"integer", + "description":"The year details in operations are from", + "example":2018 + }, + "officers_directors_key_employees":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Person" + } + }, + "highest_paid_employees":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Person" + } + }, + "employees_greater_than_100K":{ + "format":"int32", + "type":"integer", + "description":"Number of employees that are paid at least $100k", + "example":8 + }, + "board_chair_name":{ + "type":"string", + "description":"Name of the board chairperson", + "example":"T. Sylvester John" + }, + "board_chair_affiliation":{ + "type":"string", + "description":"Company board chairperson is associated with", + "example":"Walmart" + }, + "board_chair_term_start":{ + "type":"string", + "description":"Start year of board chair term", + "example":"2017" + }, + "board_chair_term_end":{ + "type":"string", + "description":"End year of board chair term", + "example":"2019" + }, + "board_co_chair_name":{ + "type":"string", + "description":"Name of board co-chairperson", + "example":"T. Sylvester John" + }, + "board_co_chair_affiliation":{ + "type":"string", + "description":"Company board co-chairperson is associated with", + "example":"Walmart" + }, + "board_co_chair_term_start":{ + "type":"string", + "description":"Start year of board co-chair term", + "example":"2017" + }, + "board_co_chair_term_end":{ + "type":"string", + "description":"End year of board co-chair term", + "example":"2019" + }, + "board_of_directors":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/BoardMember" + } + }, + "board_leadership_practices":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Question" + } + }, + "organization_demographics":{ + "$ref":"#/components/schemas/OrganizationDemographics" + }, + "contractors":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Contractor" + } + }, + "blog_url":{ + "type":"string", + "description":"URL of organization blog", + "example":"https://blog.candid.org/" + }, + "fundraising_contact_name":{ + "type":"string", + "description":"Name of primary fundraising contact", + "example":"Aleda Gagarin" + }, + "fundraising_contact_title":{ + "type":"string", + "description":"Title of primary fundraising contact", + "example":"Senior Director of Development" + }, + "fundraising_contact_email":{ + "type":"string", + "description":"Email address of primary fundraising contact", + "example":"donate@candid.org" + }, + "fundraising_contact_phone":{ + "type":"string", + "description":"Phone number of primary fundraising contact", + "example":"212 620-4230" + }, + "preparer_firm_name":{ + "type":"string", + "description":"Tax preparation firm name", + "example":"PKF O'CONNOR DAVIES LLP" + }, + "preparer_firm_address":{ + "type":"string", + "description":"Tax preparation firm address", + "example":"500 MAMARONECK AVENUE HARRISON NY 105281633" + }, + "preparer_firm_ein":{ + "type":"string", + "description":"Tax preparation firm EIN", + "example":"27-1728945" + }, + "preparer_firm_phone":{ + "type":"string", + "description":"Tax preparation firm phone number", + "example":"914-381-8900" + }, + "senior_staff":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/SeniorStaff" + } + }, + "other_staff":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/OtherStaff" + } + }, + "accreditations":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Accreditation" + } + } + } + }, + "Operations2":{ + "type":"object", + "description":"Organization operations information", + "properties":{ + "leader_name":{ + "type":"string", + "description":"Organization leader name", + "example":"Mr. Bradford K. Smith" + }, + "leader_profile":{ + "type":"string", + "description":"Organization leader profile", + "example":"Bradford K. Smith leads Candid as its President. Mr. Smith joined Candid (formerly Foundation Center) as President in October 2008.\n\nPreviously, he was president of the Oak Foundation in Geneva, Switzerland. Prior to that, he developed and led Ford Foundation's Peace and Social Justice Program. During his 10-year tenure as vice president, he distributed hundreds of millions of dollars to organizations working on human rights, international cooperation, governance, and civil society in the U.S. and around the world.\n\nMr. Smith has devoted his entire career to the philanthropic and nonprofit sectors. He serves on the board of directors of the Tinker Foundation and the advisory board of the United Nations Trust Fund for Human Security. He holds an M.A. in economics from the New School for Social Research in New York and a B.A. in anthropology and ethnomusicology from the University of Michigan." + }, + "co_leader_name":{ + "type":"string", + "description":"Organization co-leader name", + "example":"" + }, + "co_leader_profile":{ + "type":"string", + "description":"Organization co-leader profile", + "example":"" + }, + "no_of_employees":{ + "format":"int32", + "type":"integer", + "description":"Number of employees of the organization", + "example":178 + }, + "no_of_volunteers":{ + "format":"int32", + "type":"integer", + "description":"Number of volunteers at an organization", + "example":15 + }, + "organization_email":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + }, + "organization_details_year":{ + "format":"int32", + "type":"integer", + "description":"The year details in operations are from", + "example":2018 + }, + "officers_directors_key_employees":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Person" + } + }, + "highest_paid_employees":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Person" + } + }, + "employees_greater_than_100K":{ + "format":"int32", + "type":"integer", + "description":"Number of employees that are paid at least $100k", + "example":8 + }, + "board_chair_name":{ + "type":"string", + "description":"Name of the board chairperson", + "example":"T. Sylvester John" + }, + "board_chair_affiliation":{ + "type":"string", + "description":"Company board chairperson is associated with", + "example":"Walmart" + }, + "board_chair_term_start":{ + "type":"string", + "description":"Start year of board chair term", + "example":"2017" + }, + "board_chair_term_end":{ + "type":"string", + "description":"End year of board chair term", + "example":"2019" + }, + "board_co_chair_name":{ + "type":"string", + "description":"Name of board co-chairperson", + "example":"T. Sylvester John" + }, + "board_co_chair_affiliation":{ + "type":"string", + "description":"Company board co-chairperson is associated with", + "example":"Walmart" + }, + "board_co_chair_term_start":{ + "type":"string", + "description":"Start year of board co-chair term", + "example":"2017" + }, + "board_co_chair_term_end":{ + "type":"string", + "description":"End year of board co-chair term", + "example":"2019" + }, + "board_of_directors":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/BoardMember" + } + }, + "board_leadership_practices":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Question" + } + }, + "organization_demographics":{ + "$ref":"#/components/schemas/OrganizationDemographics" + }, + "demographics":{ + "$ref":"#/components/schemas/DEI2Demographics" + }, + "contractors":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/Contractor" + } + }, + "blog_url":{ + "type":"string", + "description":"URL of organization blog", + "example":"https://blog.candid.org/" + }, + "fundraising_contact_name":{ + "type":"string", + "description":"Name of primary fundraising contact", + "example":"Aleda Gagarin" + }, + "fundraising_contact_title":{ + "type":"string", + "description":"Title of primary fundraising contact", + "example":"Senior Director of Development" + }, + "fundraising_contact_email":{ + "type":"string", + "description":"Email address of primary fundraising contact", + "example":"donate@candid.org" + }, + "fundraising_contact_phone":{ + "type":"string", + "description":"Phone number of primary fundraising contact", + "example":"212 620-4230" + }, + "preparer_firm_name":{ + "type":"string", + "description":"Tax preparation firm name", + "example":"PKF O'CONNOR DAVIES LLP" + }, + "preparer_firm_address":{ + "type":"string", + "description":"Tax preparation firm address", + "example":"500 MAMARONECK AVENUE HARRISON NY 105281633" + }, + "preparer_firm_ein":{ + "type":"string", + "description":"Tax preparation firm EIN", + "example":"27-1728945" + }, + "preparer_firm_phone":{ + "type":"string", + "description":"Tax preparation firm phone number", + "example":"914-381-8900" + }, + "senior_staff":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/SeniorStaff" + } + }, + "other_staff":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/OtherStaff" + } + }, + "accreditations":{ + "type":"array", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/Accreditation" + } + } + } + }, + "CharityCheck":{ + "type":"object", + "description":"Organization Charity Check information", + "properties":{ + "organization_id":{ + "type":"string", + "description":"A unique number identifying organizations and organizational entities.", + "example":"6908122" + }, + "organization_info_last_modified":{ + "type":"string", + "description":"Date the organization’s information was last updated.", + "example":"4/15/2021 12:22:44 PM" + }, + "ein":{ + "type":"string", + "description":"Employer Identification Number.", + "example":"13-1837418" + }, + "organization_name":{ + "type":"string", + "description":"The public name recognized by the IRS.", + "example":"Candid" + }, + "organization_name_aka":{ + "type":"string", + "description":"Organization name \"Also Known As\" ", + "example":"The Foundation Center, Foundation Center, GuideStar, GuideStar USA" + }, + "address_line1":{ + "type":"string", + "description":"Address of the organization.", + "example":"32 Old Slip" + }, + "address_line2":{ + "type":"string", + "description":"Additional address information.", + "example":"24th Floor" + }, + "city":{ + "type":"string", + "description":"City of the organization's address. ", + "example":"New York" + }, + "state":{ + "type":"string", + "description":"State (Abbreviation) of the organization's address.", + "example":"NY" + }, + "state_name":{ + "type":"string", + "description":"State (Full Name) of the organization's address.", + "example":"New York" + }, + "zip":{ + "type":"string", + "description":"Zip code of the organization's address.", + "example":"10005" + }, + "filing_req_code":{ + "type":"string", + "description":"This indicates the primary return(s) the organization is required to file.", + "example":"010" + }, + "charity_check_last_modified":{ + "type":"string", + "description":"Date the Charity Check report was last modified.", + "example":"4/15/2021 12:19:28 PM" + }, + "pub78_church_message":{ + "type":"string", + "description":"A message indicating that although the organization is not on the Pub78, their filing requirement code shows that they are a religious organization and are therefore not required to appear on the Pub78 to establish their status.", + "example":"This organization is a church or religious organization. Churches and religious organizations qualify for exemption from federal income tax under IRC Section 501(c)(3) and are generally eligible to receive tax-deductible contributions." + }, + "pub78_organization_name":{ + "type":"string", + "description":"Organization name as it appears in the Publication 78 data.", + "example":"Candid" + }, + "pub78_ein":{ + "type":"string", + "description":"EIN (Employer Identification Number) as it appears in the Publication 78 data. ", + "example":"13-1837418" + }, + "pub78_verified":{ + "type":"string", + "description":"Whether the organization is listed on the most current Publication 78. Also known as the Cumulative List of Organizations, IRS Publication 78 lists all organizations to which charitable contributions are tax deductible. The Publication 78 record for each organization includes the organization's name, its city, and its current tax-exempt status, including what percentage of contributions to it are tax deductible. Subordinate organizations in group exemptions inherit the Pub78 status of the parent organization. ", + "example":"True" + }, + "pub78_city":{ + "type":"string", + "description":"City of the organization as it appears in the Publication 78 data.", + "example":"New York" + }, + "pub78_state":{ + "type":"string", + "description":"State of the organization as it appears in the Publication 78 data.", + "example":"NY" + }, + "pub78_indicator":{ + "type":"string", + "description":"Indicator for understanding an organization’s Publication 78 data. Subordinate organizations in group exemptions inherit the Pub78 status of the parent organization.", + "example":"0" + }, + "organization_types":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "organization_type":{ + "type":"string", + "description":"Type of organization and use of contribution as it appears in the Publication 78.", + "example":"A public charity (50% deductibility limitation)." + }, + "deductibility_limitation":{ + "type":"string", + "description":"In general, an individual who itemizes deductions may deduct contributions to most charitable organizations up to 50% of his or her adjusted gross income computed without regard to net operating loss carrybacks. Individuals generally may deduct charitable contributions to other organizations up to 30% of their adjusted gross income (computed without regard to net operating loss carrybacks). These limitations (and organizational status) are indicated.", + "example":"50%" + }, + "deductibility_status_description":{ + "type":"string", + "description":"Deductibility Status Codes.", + "example":"PC" + } + } + } + }, + "most_recent_pub78":{ + "type":"string", + "description":"Date of most recent Publication 78.", + "example":"4/13/2021 4:00:00 AM" + }, + "most_recent_irb":{ + "type":"string", + "description":"Date of the most recent Internal Revenue Bulletin.", + "example":"4/26/2021 12:00:00 AM" + }, + "bmf_church_message":{ + "type":"string", + "description":"A message indicating that although the organization is not on the IRS BF, their filing requirement code shows that they are a church or religious organization and are therefore not required to appear on the IRS BMF to establish their status.", + "example":"This organization is a church or religious organization. Churches and religious organizations qualify for exemption from federal income tax under IRC Section 501(c)(3) and are generally eligible to receive tax-deductible contributions." + }, + "bmf_organization_name":{ + "type":"string", + "description":"Organization name as it appears in the Business Master File.", + "example":"CANDID" + }, + "bmf_ein":{ + "type":"string", + "description":"EIN (Employer Identification Number) as it appears in the Business Master File.", + "example":"13-1837418" + }, + "bmf_status":{ + "type":"string", + "description":"If the organization appears in the Business Master File.", + "example":"True" + }, + "most_recent_bmf":{ + "type":"string", + "description":"Date of the most recent IRS Business Master File.", + "example":"4/12/2021 4:00:00 AM" + }, + "bmf_subsection":{ + "type":"string", + "description":"Subsection code as it appears in Business Master File. This code identifies the type of tax-exempt organization. This is often used to determine if contributions to them are tax deductible. ", + "example":"03" + }, + "subsection_description":{ + "type":"string", + "description":"Subsection code description as it relates to the subsection code that appears in Business Master File. This code identifies the type of tax-exempt organization. This is often used to determine if contributions to them are tax deductible.", + "example":"501(c)(3) Public Charity" + }, + "foundation_code":{ + "type":"string", + "description":"Organizations can select IRS foundation codes to describe their organization type.", + "example":"15" + }, + "foundation_code_description":{ + "type":"string", + "description":"Textual description of the foundation code. ", + "example":"Organization which receives a substantial part of its support from a governmental unit or the general public" + }, + "ruling_month":{ + "type":"string", + "description":"This is the month on a ruling or determination letter recognizing the organization's exempt status.", + "example":"06" + }, + "ruling_year":{ + "type":"string", + "description":"This is the year on a ruling or determination letter recognizing the organization's exempt status.", + "example":"1957" + }, + "adv_ruling_month":{ + "type":"string", + "description":"This is the month on an advanced ruling recognizing the organization’s exempt status. A section 501(c)(3) organization that has received an advance ruling with an expiration date on or after June 9, 2008, is classified as a publicly supported charity during its first five years. Such an organization and its donors may rely on the organization's advance ruling and the organization no longer needs to file Form 8734 with the IRS. Beginning with the organization's sixth year, it must establish that it met the public support test by showing that it is publicly supported on its Form 990, Return of Organization Exempt From Income Tax.On September 9, 2008, the IRS issued temporary Income Tax Regulations, which eliminated the advance ruling process for a section 501(c)(3) organization. Under the new regulations, a new 501(c)(3) organization will be classified as a publicly supported charity, and not a private foundation, if it can show that it reasonably can be expected to be publicly supported when it applies for tax-exempt status.", + "example":"00" + }, + "adv_ruling_year":{ + "type":"string", + "description":"This is the year on an advanced ruling recognizing the organization’s exempt status. A section 501(c)(3) organization that has received an advance ruling with an expiration date on or after June 9, 2008, is classified as a publicly supported charity during its first five years. Such an organization and its donors may rely on the organization's advance ruling and the organization no longer needs to file Form 8734 with the IRS. Beginning with the organization's sixth year, it must establish that it met the public support test by showing that it is publicly supported on its Form 990, Return of Organization Exempt From Income Tax. On September 9, 2008, the IRS issued temporary Income Tax Regulations, which eliminated the advance ruling process for a section 501(c)(3) organization. Under the new regulations, a new 501(c)(3) organization will be classified as a publicly supported charity, and not a private foundation, if it can show that it reasonably can be expected to be publicly supported when it applies for tax-exempt status. ", + "example":"0000" + }, + "group_exemption":{ + "type":"string", + "description":"This is a 4-digit IRS-internal number assigned to parent organizations holding group exemption letters. Subordinate organizations in group exemptions inherit the Pub78 status of the parent organization.", + "example":"0000" + }, + "exempt_status_code":{ + "type":"string", + "description":"The EO Status Code defines the type of exemption held by the organization.", + "example":"01" + }, + "ofac_status":{ + "type":"string", + "description":"Indicates whether this organization has been listed by OFAC on the Specially Designated National (SDN) List. Also known as the “Terrorist Watch List”. ", + "example":"This organization was not included in the Office of Foreign Assets Control Specially Designated Nationals(SDN) list." + }, + "revocation_code":{ + "type":"string", + "description":"Indicates the revocation code provided by the IRS in the Automatic Revocation file.", + "example":"F" + }, + "revocation_date":{ + "type":"string", + "description":"Date of revocation.", + "example":"1/12/2021 2:23:09 PM" + }, + "reinstatement_date":{ + "type":"string", + "description":"Date of reinstatement, if any.", + "example":"1/12/2021 2:23:09 PM" + }, + "irs_bmf_pub78_conflict":{ + "type":"string", + "description":"Indicates whether the Business Master File and Publication 78 data are reporting the organization differently regarding its classification as a private foundation. ", + "example":"False" + }, + "foundation_509a_status":{ + "type":"string", + "description":"Non-private foundation status. ", + "example":"Section 509(a)(1) organization as referred to in Section 170(b)(1)(A)(vi)" + }, + "irb_organization_id":{ + "type":"string", + "description":"Candid Internal Use Only (Removed in Future API Versions). ", + "example":"12345" + }, + "bulletin_number":{ + "type":"string", + "description":"If the organization was listed in an Internal Revenue Bulletin, the bulletin number is listed here.", + "example":"2020-05" + }, + "bulletin_url":{ + "type":"string", + "description":"URL link to the IRB.", + "example":"https://www.irs.gov/pub/irs-irbs/irb20-05.pdf" + }, + "effective_date":{ + "type":"string", + "description":"Effective date of the IRB.", + "example":"1/12/2021 2:23:09 PM" + }, + "irb_last_modified":{ + "type":"string", + "description":"The date that GuideStar IRB last modification date.", + "example":"1/12/2021 2:23:09 PM" + }, + "report_date":{ + "type":"string", + "description":"Date and time the Charity Check API returned the result. Reported in Greenwich Mean Time (GMT).", + "example":"4/27/2021 2:23:09 PM" + }, + "foundation_type_code":{ + "type":"string", + "description":"Organizations can select IRS foundation codes to describe their organization type. ", + "example":"PC" + }, + "foundation_type_description":{ + "type":"string", + "description":"Textual description of the foundation code.", + "example":"Public charity described in section 509(a)(1) or (2)" + }, + "parent_organizations":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "ein":{ + "type":"string", + "description":"EIN of parent organization.", + "example":"13-1837418" + }, + "organization_name":{ + "type":"string", + "description":"Name of Parent Organization.", + "example":"Candid" + }, + "group_exemption":{ + "type":"string", + "description":"This is a four-digit internal number assigned to parent organizations holding group exemption letters.", + "example":"1234" + } + } + } + } + } + }, + "SDG":{ + "type":"object", + "description":"UN sustainable development goals", + "properties":{ + "id":{ + "format":"int32", + "type":"integer", + "description":"UN sustainable development goal number", + "example":17 + }, + "description":{ + "type":"string", + "description":"UN sustainable development goal description", + "example":"Partnerships for the Goals" + } + } + }, + "ProfileDataChangeDates":{ + "type":"object", + "description":"Contains the last change datetimes for several key data values", + "properties":{ + "primary_address_last_modified":{ + "format":"date-time", + "type":"string", + "description":"Datetime of last update to primary address", + "example":"2020-11-12T14:28:48" + }, + "payment_address_last_modified":{ + "format":"date-time", + "type":"string", + "description":"Datetime of last update to payment address", + "example":"2020-11-12T14:28:48" + }, + "primary_contact_email_last_modified":{ + "format":"date-time", + "type":"string", + "description":"Datetime of last update to primary contact email address", + "example":"2020-11-12T14:28:48" + }, + "fundraising_contact_email_last_modified":{ + "format":"date-time", + "type":"string", + "description":"Datetime of last update to fundraising contact email address", + "example":"2020-11-12T14:28:48" + }, + "org_website_last_modified":{ + "format":"date-time", + "type":"string", + "description":"Datetime of last update to organization website address", + "example":"2020-11-12T14:28:48" + }, + "seal_last_modified":{ + "format":"date-time", + "type":"string", + "description":"Datetime of last update to organization seal level", + "example":"2020-11-12T14:28:48" + }, + "dei_last_modified":{ + "format":"date-time", + "type":"string", + "description":"Datetime of last update to organization demographics information", + "example":"2020-11-12T14:28:48" + } + } + }, + "Address":{ + "type":"object", + "description":"Address entry in summary.addresses. Usually an office of an organization.", + "properties":{ + "address_line_1":{ + "type":"string", + "description":"Address line 1", + "example":"32 Old Slip" + }, + "address_line_2":{ + "type":"string", + "description":"Address line 2", + "example":"24th Floor" + }, + "city":{ + "type":"string", + "description":"Address city", + "example":"New York" + }, + "state":{ + "type":"string", + "description":"Address state", + "example":"NY" + }, + "postal_code":{ + "type":"string", + "description":"Address postal code", + "example":"10005" + }, + "country":{ + "type":"string", + "description":"Address country", + "example":"USA" + }, + "address_type":{ + "type":"string", + "description":"Address type", + "example":"Main Address" + } + } + }, + "Affiliation":{ + "type":"object", + "description":"DEPRECATED", + "deprecated":true, + "properties":{ + "affiliation":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "year":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + } + } + }, + "Award":{ + "type":"object", + "description":"DEPRECATED", + "deprecated":true, + "properties":{ + "awarding_external_org":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "award_name":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "award_year":{ + "type":"string", + "description":"Year award received", + "example":"2017" + } + } + }, + "FormerName":{ + "type":"object", + "description":"DEPRECATED", + "deprecated":true, + "properties":{ + "former_name":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "year":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + } + } + }, + "LetterOfDetermination":{ + "type":"object", + "description":"IRS letter of determination information", + "properties":{ + "letter_of_determination_doc_name":{ + "type":"string", + "description":"Document name of the letter of determination", + "example":"Candid IRS Letter of Determination" + }, + "letter_of_determination_url":{ + "type":"string", + "description":"URL to the letter of determination", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6645380&approved=True" + } + } + }, + "LetterOfDissolution":{ + "type":"object", + "description":"IRS letter of dissolution information", + "properties":{ + "name":{ + "type":"string", + "description":"Document name of the letter of dissolution", + "example":"Letter of Dissolution" + }, + "year":{ + "type":"string", + "description":"Year of dissolution", + "example":"2017" + }, + "letter_of_dissolution_url":{ + "type":"string", + "description":"URL to letter of dissolution", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6645380&approved=True" + } + } + }, + "nteeCode":{ + "type":"object", + "description":"National taxonomy of exempt Entities (NTEE) code information", + "properties":{ + "ntee_code":{ + "type":"string", + "description":"NTEE code", + "example":"T50" + }, + "primary_code":{ + "type":"string", + "description":"NTEE primary code", + "example":"T" + }, + "primary_description":{ + "type":"string", + "description":"NTEE Primary description", + "example":"Philanthropy, Voluntarism, and Grantmaking" + }, + "sub_code":{ + "type":"string", + "description":"NTEE subcode", + "example":"50" + }, + "sub_description":{ + "type":"string", + "description":"NTEE subcode description", + "example":"Philanthropy / Charity / Voluntarism Promotion (General)" + } + } + }, + "NAICSCode":{ + "type":"object", + "description":"North American Industry Classification System (NAICS) information", + "properties":{ + "naics_code":{ + "type":"string", + "description":"NAICS code", + "example":"813219" + }, + "naics_description":{ + "type":"string", + "description":"NAICS code description", + "example":"Other Grantmaking and Giving Services" + } + } + }, + "SICCode":{ + "type":"object", + "description":"Standard Industrial Classification (SIC) information", + "properties":{ + "sic_code":{ + "type":"string", + "description":"SIC code", + "example":"8399" + }, + "sic_description":{ + "type":"string", + "description":"SIC code description", + "example":"Social Services, NEC" + } + } + }, + "PlatinumEvaluationDocument":{ + "type":"object", + "description":"External evaluations support your organization's progress or results", + "properties":{ + "document_name":{ + "type":"string", + "description":"Name of evaluation document", + "example":"Evaluation.pdf" + }, + "document_year":{ + "type":"string", + "description":"Year of evaluation document", + "example":"2017" + }, + "document_url":{ + "type":"string", + "description":"URL of evaluation document", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6645380&approved=True" + }, + "document_type":{ + "type":"string", + "description":"DEPRECATED", + "example":"", + "deprecated":true + } + } + }, + "OtherDocument":{ + "type":"object", + "description":"A document the organization uploaded to GuideStar", + "properties":{ + "document_name":{ + "type":"string", + "description":"Document name entered by organization", + "example":"Candid's 2030 Vision" + }, + "document_year":{ + "type":"string", + "description":"Year document is associated with", + "example":"2020" + }, + "otherdocument_contents":{ + "type":"string", + "description":"DEPRECATED", + "deprecated":true, + "example":"" + }, + "document_url":{ + "type":"string", + "description":"URL to document", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6645386&approved=True" + } + } + }, + "PhotoLink":{ + "type":"object", + "description":"Images uploaded by organization", + "properties":{ + "picture_url":{ + "type":"string", + "description":"URL to image", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=5449398&approved=True" + }, + "caption":{ + "type":"string", + "description":"Image caption", + "example":"Jacob Harold" + } + } + }, + "TelephoneNumber":{ + "type":"object", + "description":"Telephone number associated with organization", + "properties":{ + "telephone_number":{ + "type":"string", + "description":"Telephone number entered by organization", + "example":"757-941-1444" + }, + "telephone_type":{ + "type":"string", + "description":"Description of telephone number", + "example":"Preferred" + } + } + }, + "Video":{ + "type":"object", + "description":"Video information added by organization", + "properties":{ + "video_caption":{ + "type":"string", + "description":"Caption of video", + "example":"GuideStar: Better Data, for Better Decisions, for a Better World" + }, + "video_url":{ + "type":"string", + "description":"URL to video", + "example":"https://www.youtube.com/embed/W0rUzE6Yms4" + } + } + }, + "FBResponseText":{ + "type":"object", + "description":"Specific feedback response questions answered by organization", + "properties":{ + "question_text":{ + "type":"string", + "description":"Feedback response question text", + "example":"How is your organization collecting feedback from the people you serve?" + }, + "response_text":{ + "type":"string", + "description":"Feedback response answer text", + "example":"We regularly collect feedback through: Electronic surveys (by email, tablet, etc.), Focus groups or interviews (by phone or in person), Community meetings/Town halls, Constituent (client or resident, etc.) advisory committees, other: Online Chat" + } + } + }, + "PCS":{ + "type":"object", + "description":"The Philanthropy Classification System (PCS) is Candid’s (formerly Foundation Center and GuideStar) taxonomy, describing the work of grantmakers, recipient organizations and the philanthropic transactions between those entities. Candid’s Classification System is based on the National Taxonomy of Exempt Entities (NTEE) and has been expanded over the last three decades to include the emerging work we have evidenced while capturing and indexing the work of the sector on a global scale.", + "properties":{ + "pcs_facet":{ + "type":"string", + "description":"PCS facet name", + "example":"Population with Gender/Age" + }, + "pcs_code":{ + "type":"string", + "description":"PCS code", + "example":"PA020000" + }, + "pcs_description":{ + "type":"string", + "description":"PCS code description", + "example":"Adults" + }, + "pcs_parent_code":{ + "type":"string", + "description":"PCS parent code", + "example":"PA000000" + }, + "pcs_parent_description":{ + "type":"string", + "description":"PCS parent code description", + "example":"Age groups" + } + } + }, + "Program3":{ + "type":"object", + "description":"Information about an organization's program as entered by the organization", + "properties":{ + "name":{ + "type":"string", + "description":"Program name", + "example":"Knowledge Tools" + }, + "description":{ + "type":"string", + "description":"Program description", + "example":"Through data, research, and our collective experience, Candid provides our users with the knowledge they need to make strategic decisions and develop practical solutions to achieve their missions. \n\nOur GuideStar searchable database currently includes data on 1.9 million 501c3 entities, making it easier to understand who they are and what they do. We support ongoing learning and research by gathering, indexing, and sharing the sector’s collective knowledge on IssueLab while also producing our own research that shares insights on issues affecting the social sector. We provide data and knowledge to the philanthropic field by creating new issue-based web portals known as “Foundation Landscapes” on the topics that matter most to the sector. Through Glasspockets we provide the data, resources, examples, and action steps foundations need to understand the value of transparency, be more open in their own communications, and help shed more light on how private organizations are serving the public good. Candid works closely with organizations around the globe to assist them in collecting and organizing their region’s philanthropy data by sharing what we have learned over the past 60 years about data acquisition and data architecture. \n\nCandid’s CF Insights program is the leader in data collection and research for the community foundation field in the U.S. with a reputation for benchmarking and analysis of trends. Through CF Insights, we continue to deliver a high level of service to our members and worked with partners to release groundbreaking research on the need for increased collaboration amongst leaders of community foundations.\n\nWe also have a number of blogs across our platforms (including the GuideStar blog, GrantSpace blog, GrantCraft blog, GlassPockets blog, Philanthropy News Digest Blog, and more!) that shine a light on relevant topics and trends affecting the sector." + }, + "target_population":{ + "type":"string", + "description":"First target population that the program is targeting", + "example":"General/Unspecified" + }, + "target_population2":{ + "type":"string", + "description":"Second target population that the program is targeting", + "example":"General/Unspecified" + }, + "budget":{ + "type":"string", + "description":"Program budget in dollars", + "example":"3002061" + }, + "areas_served":{ + "type":"array", + "description":"Geographic area served by program", + "items":{ + "type":"string", + "description":"Name of the geographic area served by the program", + "example":"United States" + } + } + } + }, + "PlatinumMetrics1":{ + "type":"object", + "description":"Program metrics entered by the organization", + "properties":{ + "metric":{ + "type":"string", + "description":"Metric name", + "example":"Number of organizations you can find on GuideStar" + }, + "years":{ + "type":"array", + "description":"The years this metric was captured and the values for a given year", + "items":{ + "$ref":"#/components/schemas/MetricYear" + } + }, + "target_population_served":{ + "type":"array", + "description":"The target populations that the metric supports", + "items":{ + "type":"string", + "description":"A Target population", + "example":"General/Unspecified" + } + } + } + }, + "PlatinumMetrics":{ + "type":"object", + "description":"Program metrics entered by the organization", + "properties":{ + "metric":{ + "type":"string", + "description":"Metric name", + "example":"Number of organizations you can find on GuideStar" + }, + "years":{ + "type":"array", + "description":"The years this metric was captured and the values for a given year", + "items":{ + "$ref":"#/components/schemas/MetricYear" + } + }, + "target_population_served":{ + "type":"array", + "description":"The target populations that the metric supports", + "items":{ + "type":"string", + "description":"A Target population", + "example":"General/Unspecified" + } + }, + "type_of_metric":{ + "type":"string", + "description":"How this metric is being measured", + "example":"Output - describing our activities and reach" + }, + "direction_of_success":{ + "type":"string", + "description":"How to determine if this metric is showing a successful trend", + "example":"Increasing" + } + } + }, + "Question":{ + "type":"object", + "description":"General question and answer pair, used in multiple places", + "properties":{ + "question":{ + "type":"string", + "description":"Question text", + "example":"How would you summarize the problem or need your organization is working to address?" + }, + "answer":{ + "type":"string", + "description":"Answer text", + "example":"As of February 2019, GuideStar joined forces with Foundation Center to become a new organization called Candid. The below reflects GuideStar’s historical programs as of January 31, 2019.\n\nAcross the globe, nonprofits play an important role within the evolving social contract: they provide services, drive innovation, and shape political discourse. Unfortunately, the culture and systems of the nonprofit sector do not always drive excellence, learning, or collaboration. The whole is less than the sum of its parts. For example: \n\n- proven impact rarely draws additional capital; \n- failure seldom drives learning; \n- shared goals rarely inspire collaboration; \n- the voices of those we try to serve are lost. \n\nThese obstacles limit the overall impact of the field. Until we fix these problems the nonprofit sector will continue to underperform—with profound consequences across society." + } + } + }, + "CurrentFinancial1":{ + "type":"object", + "description":"Current, or most recent, fiscal year (FY) financial information. Since this could come from multiple 990 form types, many of the fields are normalized.", + "properties":{ + "fiscal_year":{ + "format":"int32", + "type":"integer", + "description":"The FY as a number", + "example":2019 + }, + "form_type":{ + "type":"string", + "description":"The IRS 990 form type the data in this CurrentFinancial object is based off of.", + "example":"F990" + }, + "data_source":{ + "type":"string", + "description":"Source of current financial information", + "example":"IRS Form 990" + }, + "assets_total":{ + "format":"double", + "type":"number", + "description":"Total monetary amount of assets, in USD", + "example":1096532 + }, + "total_liabilities":{ + "format":"double", + "type":"number", + "description":"Total monetary value of liabilities, in USD", + "example":37801 + }, + "revenue_contributions":{ + "format":"double", + "type":"number", + "description":"Contributions revenue, i.e. donations, in USD", + "example":87214 + }, + "revenue_govt_grants":{ + "format":"double", + "type":"number", + "description":"Government grants revenue, in USD", + "example":0 + }, + "revenue_program_services":{ + "format":"double", + "type":"number", + "description":"Program services revenue, in USD", + "example":1100117 + }, + "revenue_investments":{ + "format":"double", + "type":"number", + "description":"Investments revenue, in USD", + "example":9513 + }, + "revenue_special_events":{ + "format":"double", + "type":"number", + "description":"Special events revenue, in USD", + "example":0 + }, + "revenue_sales":{ + "format":"double", + "type":"number", + "description":"Sales revenue, in USD", + "example":0 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"Other revenue, in USD", + "example":0 + }, + "total_revenue":{ + "format":"double", + "type":"number", + "description":"Total revenue,, in USD", + "example":1196844 + }, + "expense_administration":{ + "format":"double", + "type":"number", + "description":"Administration expenses, in USD", + "example":589718 + }, + "expense_program_services":{ + "format":"double", + "type":"number", + "description":"Program services expenses, in USD", + "example":1011531 + }, + "expense_fundraising":{ + "format":"double", + "type":"number", + "description":"Fundraising expenses, in USD", + "example":38989 + }, + "expense_accounting":{ + "format":"double", + "type":"number", + "description":"Accounting expenses, in USD", + "example":49383 + }, + "expense_advertising_promotion":{ + "format":"double", + "type":"number", + "description":"Advertising expenses, in USD", + "example":15678 + }, + "expense_info_technology":{ + "format":"double", + "type":"number", + "description":"IT expenses, in USD", + "example":88971 + }, + "expense_insurance":{ + "format":"double", + "type":"number", + "description":"Insurance expenses, in USD", + "example":32213 + }, + "expense_interest":{ + "format":"double", + "type":"number", + "description":"Interest expenses, in USD", + "example":32213 + }, + "expense_investment_management":{ + "format":"double", + "type":"number", + "description":"Investment management expenses, in USD", + "example":73893 + }, + "expense_legal":{ + "format":"double", + "type":"number", + "description":"Legal expenses, in USD", + "example":90500 + }, + "expense_pension_plan":{ + "format":"double", + "type":"number", + "description":"Pension plan expenses, in USD", + "example":16922 + }, + "expense_professional_fundraising":{ + "format":"double", + "type":"number", + "description":"Professional fundraising expenses, in USD", + "example":83345 + }, + "expense_professional_fees":{ + "format":"double", + "type":"number", + "description":"Professional fees expenses, in USD", + "example":46753 + }, + "expense_publications":{ + "format":"double", + "type":"number", + "description":"Publication expenses, in USD", + "example":9857 + }, + "expense_operating_admin":{ + "format":"double", + "type":"number", + "description":"Admin operating expenses, in USD", + "example":86905 + }, + "expense_gifts_grants_paid":{ + "format":"double", + "type":"number", + "description":"Gifts and grants paid expenses, in USD", + "example":57493 + }, + "total_expense_disbursements":{ + "format":"double", + "type":"number", + "description":"Disbursement expenses, in USD", + "example":86734 + }, + "expenses_total":{ + "format":"double", + "type":"number", + "description":"Total expenses, in USD", + "example":1640238 + }, + "net_gain_loss":{ + "format":"double", + "type":"number", + "description":"Net gain/loos this FY, in USD", + "example":-443394 + }, + "cash_and_equivalent_assets":{ + "format":"double", + "type":"number", + "description":"Cash and equivalent assets, in USD", + "example":1081985 + }, + "investments_us_government":{ + "format":"double", + "type":"number", + "description":"U.S. bond investment gain/loss, in USD", + "example":583843 + }, + "investments_stock":{ + "format":"double", + "type":"number", + "description":"Stock investment gain/loss, in USD", + "example":28264 + }, + "investments_bonds":{ + "format":"double", + "type":"number", + "description":"Bond investments gain/loss, in USD", + "example":39567 + }, + "investments_other":{ + "format":"double", + "type":"number", + "description":"Other investments gain/loss, in USD", + "example":974785 + }, + "land_buildings_equipment":{ + "format":"double", + "type":"number", + "description":"Land, buildings, equipment end of year value, in USD", + "example":9840347 + }, + "other_assets":{ + "format":"double", + "type":"number", + "description":"Other assets end of year value, in USD", + "example":60948 + } + } + }, + "CurrentFinancial":{ + "type":"object", + "description":"Current, or most recent, fiscal year (FY) financial information. Since this could come from multiple 990 form types, many of the fields are normalized.", + "properties":{ + "period_begin":{ + "format":"date-time", + "type":"string", + "description":"Start date of the FY that this current financial object covers", + "example":"2019-01-01T05:00:00Z" + }, + "period_end":{ + "format":"date-time", + "type":"string", + "description":"End date of the fiscal year that this current financial object covers", + "example":"2019-12-31T05:00:00Z" + }, + "fiscal_year":{ + "format":"int32", + "type":"integer", + "description":"The FY as a number", + "example":2019 + }, + "form_type":{ + "type":"string", + "description":"The IRS 990 form type the data in this CurrentFinancial object is based off of.", + "example":"F990" + }, + "data_source":{ + "type":"string", + "description":"Source of current financial information", + "example":"IRS Form 990" + }, + "assets_total":{ + "format":"double", + "type":"number", + "description":"Total monetary amount of assets, in USD", + "example":1096532 + }, + "total_liabilities":{ + "format":"double", + "type":"number", + "description":"Total monetary value of liabilities, in USD", + "example":37801 + }, + "revenue_contributions":{ + "format":"double", + "type":"number", + "description":"Contributions revenue, i.e. donations, in USD", + "example":87214 + }, + "revenue_govt_grants":{ + "format":"double", + "type":"number", + "description":"Government grants revenue, in USD", + "example":0 + }, + "revenue_program_services":{ + "format":"double", + "type":"number", + "description":"Program services revenue, in USD", + "example":1100117 + }, + "revenue_investments":{ + "format":"double", + "type":"number", + "description":"Investments revenue, in USD", + "example":9513 + }, + "revenue_special_events":{ + "format":"double", + "type":"number", + "description":"Special events revenue, in USD", + "example":0 + }, + "revenue_sales":{ + "format":"double", + "type":"number", + "description":"Sales revenue, in USD", + "example":0 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"Other revenue, in USD", + "example":0 + }, + "total_revenue":{ + "format":"double", + "type":"number", + "description":"Total revenue,, in USD", + "example":1196844 + }, + "expense_administration":{ + "format":"double", + "type":"number", + "description":"Administration expenses, in USD", + "example":589718 + }, + "expense_program_services":{ + "format":"double", + "type":"number", + "description":"Program services expenses, in USD", + "example":1011531 + }, + "expense_fundraising":{ + "format":"double", + "type":"number", + "description":"Fundraising expenses, in USD", + "example":38989 + }, + "expense_accounting":{ + "format":"double", + "type":"number", + "description":"Accounting expenses, in USD", + "example":49383 + }, + "expense_advertising_promotion":{ + "format":"double", + "type":"number", + "description":"Advertising expenses, in USD", + "example":15678 + }, + "expense_info_technology":{ + "format":"double", + "type":"number", + "description":"IT expenses, in USD", + "example":88971 + }, + "expense_insurance":{ + "format":"double", + "type":"number", + "description":"Insurance expenses, in USD", + "example":32213 + }, + "expense_interest":{ + "format":"double", + "type":"number", + "description":"Interest expenses, in USD", + "example":32213 + }, + "expense_investment_management":{ + "format":"double", + "type":"number", + "description":"Investment management expenses, in USD", + "example":73893 + }, + "expense_legal":{ + "format":"double", + "type":"number", + "description":"Legal expenses, in USD", + "example":90500 + }, + "expense_pension_plan":{ + "format":"double", + "type":"number", + "description":"Pension plan expenses, in USD", + "example":16922 + }, + "expense_professional_fundraising":{ + "format":"double", + "type":"number", + "description":"Professional fundraising expenses, in USD", + "example":83345 + }, + "unrestricted_net_assets":{ + "format":"double", + "type":"number", + "description":"Unrestricted net asset, in USD", + "example":1058731 + }, + "net_fixed_assets_LBE":{ + "format":"double", + "type":"number", + "description":"Land, buildings and equipment fixed assets, in USD", + "example":0 + }, + "notes_payable_mortgages":{ + "format":"double", + "type":"number", + "description":"mortgages and notes payable to unrelated 3rd parties, in USD", + "example":0 + }, + "months_of_cash":{ + "type":"string", + "description":"A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months.", + "example":"8.1" + }, + "expense_professional_fees":{ + "format":"double", + "type":"number", + "description":"Professional fees expenses, in USD", + "example":46753 + }, + "expense_publications":{ + "format":"double", + "type":"number", + "description":"Publication expenses, in USD", + "example":9857 + }, + "expense_operating_admin":{ + "format":"double", + "type":"number", + "description":"Admin operating expenses, in USD", + "example":86905 + }, + "expense_gifts_grants_paid":{ + "format":"double", + "type":"number", + "description":"Gifts and grants paid expenses, in USD", + "example":57493 + }, + "total_expense_disbursements":{ + "format":"double", + "type":"number", + "description":"Disbursement expenses, in USD", + "example":86734 + }, + "expenses_total":{ + "format":"double", + "type":"number", + "description":"Total expenses, in USD", + "example":1640238 + }, + "net_gain_loss":{ + "format":"double", + "type":"number", + "description":"Net gain/loos this FY, in USD", + "example":-443394 + }, + "expense_salaries_employee_benefits":{ + "format":"double", + "type":"number", + "description":"Salary and other employee benefit expense, in USD", + "example":995858 + }, + "cash_and_equivalent_assets":{ + "format":"double", + "type":"number", + "description":"Cash and equivalent assets, in USD", + "example":1081985 + }, + "investments_us_government":{ + "format":"double", + "type":"number", + "description":"U.S. bond investment gain/loss, in USD", + "example":583843 + }, + "investments_stock":{ + "format":"double", + "type":"number", + "description":"Stock investment gain/loss, in USD", + "example":28264 + }, + "investments_bonds":{ + "format":"double", + "type":"number", + "description":"Bond investments gain/loss, in USD", + "example":39567 + }, + "investments_other":{ + "format":"double", + "type":"number", + "description":"Other investments gain/loss, in USD", + "example":974785 + }, + "land_buildings_equipment":{ + "format":"double", + "type":"number", + "description":"Land, buildings, equipment end of year value, in USD", + "example":9840347 + }, + "other_assets":{ + "format":"double", + "type":"number", + "description":"Other assets end of year value, in USD", + "example":60948 + } + } + }, + "FinancialF990_1":{ + "type":"object", + "description":"IRS form 990 financials", + "properties":{ + "period_begin":{ + "format":"date-time", + "type":"string", + "description":"Start date of the FY that this current financial object covers", + "example":"2019-01-01T05:00:00Z" + }, + "period_end":{ + "format":"date-time", + "type":"string", + "description":"End date of the fiscal year that this current financial object covers", + "example":"2019-12-31T05:00:00Z" + }, + "membership_dues":{ + "format":"double", + "type":"number", + "description":"Revenue from recurring membership dues", + "example":73764 + }, + "revenue_contributions":{ + "format":"double", + "type":"number", + "description":"Contributions revenue, i.e. donations, in USD", + "example":87214 + }, + "revenue_govt_grants":{ + "format":"double", + "type":"number", + "description":"Government grants revenue, in USD", + "example":0 + }, + "revenue_program_services":{ + "format":"double", + "type":"number", + "description":"Revenue derived from fees for program services", + "example":1100117 + }, + "revenue_investments":{ + "format":"double", + "type":"number", + "description":"Revenue from investments", + "example":9513 + }, + "revenue_special_events":{ + "format":"double", + "type":"number", + "description":"Revenue from special events", + "example":0 + }, + "revenue_sales":{ + "format":"double", + "type":"number", + "description":"Revenue from sales of tangible items", + "example":0 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"Other revenue sources, not recorded elsewhere", + "example":0 + }, + "revenue_total":{ + "format":"double", + "type":"number", + "description":"Total FY revenue", + "example":1196844 + }, + "affiliate_net_payments":{ + "format":"double", + "type":"number", + "description":"Payments to affiliate organizations", + "example":1038494 + }, + "expense_program_services":{ + "format":"double", + "type":"number", + "description":"Expenses incurred from program services", + "example":1011531 + }, + "expense_administration":{ + "format":"double", + "type":"number", + "description":"Administration expenses", + "example":589718 + }, + "expense_fundraising":{ + "format":"double", + "type":"number", + "description":"Fundraising expenses", + "example":38989 + }, + "expenses_total":{ + "format":"double", + "type":"number", + "description":"Total FY expenses", + "example":1640238 + }, + "net_gain_loss":{ + "format":"double", + "type":"number", + "description":"Difference between total revenue and total expenses", + "example":-443394 + }, + "expense_accounting":{ + "format":"double", + "type":"number", + "description":"Accounting expenses", + "example":49383 + }, + "expense_advertising_promotion":{ + "format":"double", + "type":"number", + "description":"Advertising/promotional expenses", + "example":15678 + }, + "expense_info_technology":{ + "format":"double", + "type":"number", + "description":"IT expenses", + "example":88971 + }, + "expense_insurance":{ + "format":"double", + "type":"number", + "description":"Insurance expenses", + "example":32213 + }, + "expense_interest":{ + "format":"double", + "type":"number", + "description":"Interest expenses", + "example":436352 + }, + "expense_investment_management":{ + "format":"double", + "type":"number", + "description":"Investment management expenses", + "example":366732 + }, + "expense_legal":{ + "format":"double", + "type":"number", + "description":"Legal expenses", + "example":90500 + }, + "expense_pension_plan":{ + "format":"double", + "type":"number", + "description":"Pension plan expenses", + "example":16922 + }, + "expense_publications":{ + "format":"double", + "type":"number", + "description":"Publications expenses", + "example":15678 + }, + "expense_profesional_fundraising":{ + "format":"double", + "type":"number", + "description":"Professional fundraising expenses", + "example":873753 + }, + "net_assets_eoy":{ + "format":"double", + "type":"number", + "description":"Net assets at the end of year", + "example":1058731 + }, + "assets_total":{ + "format":"double", + "type":"number", + "description":"Total assets", + "example":1096532 + }, + "other_expense":{ + "format":"double", + "type":"number", + "description":"Expenses not recorded elsewhere", + "example":0 + }, + "liabilities_total":{ + "format":"double", + "type":"number", + "description":"Total liabilities at the end of year", + "example":37801 + }, + "months_of_cash":{ + "type":"string", + "description":"A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months.", + "example":"8.1" + } + } + }, + "FinancialF990_2":{ + "type":"object", + "description":"IRS form 990 financials", + "properties":{ + "period_begin":{ + "format":"date-time", + "type":"string", + "description":"Start date of the FY that this current financial object covers", + "example":"2019-01-01T05:00:00Z" + }, + "period_end":{ + "format":"date-time", + "type":"string", + "description":"End date of the fiscal year that this current financial object covers", + "example":"2019-12-31T05:00:00Z" + }, + "membership_dues":{ + "format":"double", + "type":"number", + "description":"Revenue from recurring membership dues", + "example":73764 + }, + "revenue_contributions":{ + "format":"double", + "type":"number", + "description":"Contributions revenue, i.e. donations, in USD", + "example":87214 + }, + "revenue_govt_grants":{ + "format":"double", + "type":"number", + "description":"Government grants revenue, in USD", + "example":0 + }, + "revenue_program_services":{ + "format":"double", + "type":"number", + "description":"Revenue derived from fees for program services", + "example":1100117 + }, + "revenue_investments":{ + "format":"double", + "type":"number", + "description":"Revenue from investments", + "example":9513 + }, + "revenue_special_events":{ + "format":"double", + "type":"number", + "description":"Revenue from special events", + "example":0 + }, + "revenue_sales":{ + "format":"double", + "type":"number", + "description":"Revenue from sales of tangible items", + "example":0 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"Other revenue sources, not recorded elsewhere", + "example":0 + }, + "revenue_total":{ + "format":"double", + "type":"number", + "description":"Total FY revenue", + "example":1196844 + }, + "affiliate_net_payments":{ + "format":"double", + "type":"number", + "description":"Payments to affiliate organizations", + "example":1038494 + }, + "expense_program_services":{ + "format":"double", + "type":"number", + "description":"Expenses incurred from program services", + "example":1011531 + }, + "expense_administration":{ + "format":"double", + "type":"number", + "description":"Administration expenses", + "example":589718 + }, + "expense_fundraising":{ + "format":"double", + "type":"number", + "description":"Fundraising expenses", + "example":38989 + }, + "expenses_total":{ + "format":"double", + "type":"number", + "description":"Total FY expenses", + "example":1640238 + }, + "net_gain_loss":{ + "format":"double", + "type":"number", + "description":"Difference between total revenue and total expenses", + "example":-443394 + }, + "expense_accounting":{ + "format":"double", + "type":"number", + "description":"Accounting expenses", + "example":49383 + }, + "expense_advertising_promotion":{ + "format":"double", + "type":"number", + "description":"Advertising/promotional expenses", + "example":15678 + }, + "expense_info_technology":{ + "format":"double", + "type":"number", + "description":"IT expenses", + "example":88971 + }, + "expense_insurance":{ + "format":"double", + "type":"number", + "description":"Insurance expenses", + "example":32213 + }, + "expense_interest":{ + "format":"double", + "type":"number", + "description":"Interest expenses", + "example":436352 + }, + "expense_investment_management":{ + "format":"double", + "type":"number", + "description":"Investment management expenses", + "example":366732 + }, + "expense_legal":{ + "format":"double", + "type":"number", + "description":"Legal expenses", + "example":90500 + }, + "expense_pension_plan":{ + "format":"double", + "type":"number", + "description":"Pension plan expenses", + "example":16922 + }, + "expense_publications":{ + "format":"double", + "type":"number", + "description":"Publications expenses", + "example":15678 + }, + "expense_profesional_fundraising":{ + "format":"double", + "type":"number", + "description":"Professional fundraising expenses", + "example":873753 + }, + "assets_total":{ + "format":"double", + "type":"number", + "description":"Total assets", + "example":1096532 + }, + "unrestricted_net_assets":{ + "format":"double", + "type":"number", + "description":"Unrestricted new assets", + "example":1058731 + }, + "net_fixed_assets_LBE":{ + "format":"double", + "type":"number", + "description":"Net fixed assets (Land, Buildings, equipment)", + "example":323467 + }, + "net_assets_end_of_year":{ + "format":"double", + "type":"number", + "description":"Net assets at the end of year", + "example":1058731 + }, + "other_expense":{ + "format":"double", + "type":"number", + "description":"Expenses not recorded elsewhere", + "example":0 + }, + "notes_payable_mortgages":{ + "format":"double", + "type":"number", + "description":"total amount of secured mortgages and notes payable to unrelated third parties that are secured by the organization's assets", + "example":0 + }, + "liabilities_total":{ + "format":"double", + "type":"number", + "description":"Total liabilities at the end of year", + "example":37801 + }, + "months_of_cash":{ + "type":"string", + "description":"A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months.", + "example":"8.1" + } + } + }, + "FinancialF990_3":{ + "type":"object", + "description":"IRS form 990 financials", + "properties":{ + "period_begin":{ + "format":"date-time", + "type":"string", + "description":"Start date of the FY that this current financial object covers", + "example":"2019-01-01T05:00:00Z" + }, + "period_end":{ + "format":"date-time", + "type":"string", + "description":"End date of the fiscal year that this current financial object covers", + "example":"2019-12-31T05:00:00Z" + }, + "membership_dues":{ + "format":"double", + "type":"number", + "description":"Revenue from recurring membership dues", + "example":73764 + }, + "revenue_contributions":{ + "format":"double", + "type":"number", + "description":"Contributions revenue, i.e. donations, in USD", + "example":87214 + }, + "revenue_govt_grants":{ + "format":"double", + "type":"number", + "description":"Government grants revenue, in USD", + "example":0 + }, + "revenue_program_services":{ + "format":"double", + "type":"number", + "description":"Revenue derived from fees for program services", + "example":1100117 + }, + "revenue_investments":{ + "format":"double", + "type":"number", + "description":"Revenue from investments", + "example":9513 + }, + "revenue_special_events":{ + "format":"double", + "type":"number", + "description":"Revenue from special events", + "example":0 + }, + "revenue_sales":{ + "format":"double", + "type":"number", + "description":"Revenue from sales of tangible items", + "example":0 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"Other revenue sources, not recorded elsewhere", + "example":0 + }, + "revenue_total":{ + "format":"double", + "type":"number", + "description":"Total FY revenue", + "example":1196844 + }, + "affiliate_net_payments":{ + "format":"double", + "type":"number", + "description":"Payments to affiliate organizations", + "example":1038494 + }, + "expense_program_services":{ + "format":"double", + "type":"number", + "description":"Expenses incurred from program services", + "example":1011531 + }, + "expense_administration":{ + "format":"double", + "type":"number", + "description":"Administration expenses", + "example":589718 + }, + "expense_fundraising":{ + "format":"double", + "type":"number", + "description":"Fundraising expenses", + "example":38989 + }, + "expenses_total":{ + "format":"double", + "type":"number", + "description":"Total FY expenses", + "example":1640238 + }, + "net_gain_loss":{ + "format":"double", + "type":"number", + "description":"Difference between total revenue and total expenses", + "example":-443394 + }, + "expense_accounting":{ + "format":"double", + "type":"number", + "description":"Accounting expenses", + "example":49383 + }, + "expense_advertising_promotion":{ + "format":"double", + "type":"number", + "description":"Advertising/promotional expenses", + "example":15678 + }, + "expense_info_technology":{ + "format":"double", + "type":"number", + "description":"IT expenses", + "example":88971 + }, + "expense_insurance":{ + "format":"double", + "type":"number", + "description":"Insurance expenses", + "example":32213 + }, + "expense_interest":{ + "format":"double", + "type":"number", + "description":"Interest expenses", + "example":436352 + }, + "expense_investment_management":{ + "format":"double", + "type":"number", + "description":"Investment management expenses", + "example":366732 + }, + "expense_legal":{ + "format":"double", + "type":"number", + "description":"Legal expenses", + "example":90500 + }, + "expense_pension_plan":{ + "format":"double", + "type":"number", + "description":"Pension plan expenses", + "example":16922 + }, + "expense_publications":{ + "format":"double", + "type":"number", + "description":"Publications expenses", + "example":15678 + }, + "expense_profesional_fundraising":{ + "format":"double", + "type":"number", + "description":"Professional fundraising expenses", + "example":873753 + }, + "assets_total":{ + "format":"double", + "type":"number", + "description":"Total assets", + "example":1096532 + }, + "unrestricted_net_assets":{ + "format":"double", + "type":"number", + "description":"Unrestricted new assets", + "example":1058731 + }, + "net_fixed_assets_LBE":{ + "format":"double", + "type":"number", + "description":"Net fixed assets (Land, Buildings, equipment)", + "example":323467 + }, + "net_assets_end_of_year":{ + "format":"double", + "type":"number", + "description":"Net assets at the end of year", + "example":1058731 + }, + "other_expense":{ + "format":"double", + "type":"number", + "description":"Expenses not recorded elsewhere", + "example":0 + }, + "notes_payable_mortgages":{ + "format":"double", + "type":"number", + "description":"total amount of secured mortgages and notes payable to unrelated third parties that are secured by the organization's assets", + "example":0 + }, + "liabilities_total":{ + "format":"double", + "type":"number", + "description":"Total liabilities at the end of year", + "example":37801 + }, + "months_of_cash":{ + "type":"string", + "description":"A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula - Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months.", + "example":"8.1" + }, + "part_8_revenue":{ + "$ref":"#/components/schemas/PartVIII" + }, + "part_9_expenses":{ + "$ref":"#/components/schemas/PartIX" + }, + "part_10_balance_sheet":{ + "$ref":"#/components/schemas/PartX" + } + } + }, + "Financial990PF":{ + "type":"object", + "description":"IRS form 990-PF financials ", + "properties":{ + "investments_us_state_government":{ + "format":"double", + "type":"number", + "description":"Candid use only", + "example":892373 + }, + "period_begin":{ + "format":"date-time", + "type":"string", + "description":"Tax year begin date", + "example":"2017-08-01T04:00:00Z" + }, + "period_end":{ + "format":"date-time", + "type":"string", + "description":"Tax year end date", + "example":"2019-07-31T04:00:00Z" + }, + "cash_equivalent_investible_assets":{ + "format":"double", + "type":"number", + "description":"Cash—non-interest-bearing, Fair Market Value + Savings and temporary cash investments, Fair Market Value", + "example":3823794 + }, + "net_investment_income":{ + "format":"double", + "type":"number", + "description":"Net investment income", + "example":3983424 + }, + "adjusted_net_income":{ + "format":"double", + "type":"number", + "description":"Adjusted Net Income", + "example":4564354 + }, + "total_operating_expenses":{ + "format":"double", + "type":"number", + "description":"Total operating and administrative expenses", + "example":8689503 + }, + "contributions":{ + "format":"double", + "type":"number", + "description":"Contributions not included in 8a", + "example":678893 + }, + "total_expenses":{ + "format":"double", + "type":"number", + "description":"Total functional expenses", + "example":689233 + }, + "expense_accounting":{ + "format":"double", + "type":"number", + "description":"Accounting fees", + "example":767367 + }, + "expense_interest":{ + "format":"double", + "type":"number", + "description":"Interest expenses", + "example":588345 + }, + "expense_legal":{ + "format":"double", + "type":"number", + "description":"Legal fees", + "example":209348 + }, + "expense_professional_fees":{ + "format":"double", + "type":"number", + "description":"Other professional fees", + "example":88833 + }, + "expense_pension_plans":{ + "format":"double", + "type":"number", + "description":"Pension plans, employee benefits expenses", + "example":87573 + }, + "expense_publications":{ + "format":"double", + "type":"number", + "description":"Printing and publications expenses", + "example":0 + }, + "investments_us_state_govt":{ + "format":"double", + "type":"number", + "description":"Investments—U.S. and state government obligations", + "example":0 + }, + "investments_stocks":{ + "format":"double", + "type":"number", + "description":"Investments—corporate stock", + "example":4533 + }, + "investments_bonds":{ + "format":"double", + "type":"number", + "description":"Investments—corporate bonds", + "example":489579 + }, + "investments_other":{ + "format":"double", + "type":"number", + "description":"Investments—other", + "example":894584 + }, + "land_buildings_equipment":{ + "format":"double", + "type":"number", + "description":"Land, buildings, and equipment: basis", + "example":938083 + }, + "other_assets":{ + "format":"double", + "type":"number", + "description":"Other assets", + "example":943823 + }, + "total_assets":{ + "format":"double", + "type":"number", + "description":"Total assets", + "example":9387373 + }, + "total_liabilities":{ + "format":"double", + "type":"number", + "description":"Total liabilities", + "example":869590 + }, + "net_assets":{ + "format":"double", + "type":"number", + "description":"Total assets, Fair Market Value - Total liabilities, Book Value", + "example":75845 + }, + "income_total":{ + "format":"double", + "type":"number", + "description":"Total revenue - Current Year", + "example":29347485 + } + } + }, + "FinancialF990EZ":{ + "type":"object", + "description":"IRS form 990-EZ financials", + "properties":{ + "period_begin":{ + "type":"string", + "description":"Tax year begin date", + "example":2017 + }, + "period_end":{ + "type":"string", + "description":"Tax year end date", + "example":2019 + }, + "accounting_method":{ + "type":"string", + "description":"Accounting Method", + "example":"C" + }, + "organization_type":{ + "type":"string", + "description":"Tax-exempt status", + "example":"03" + }, + "date_last_modified":{ + "type":"string", + "description":"Candid use only", + "example":"Wednesday, July 7, 2021" + }, + "revenue_contributions":{ + "format":"double", + "type":"number", + "description":"Contributions, gifts, grants, and similar amounts received .", + "example":93474 + }, + "revenue_program_services":{ + "format":"double", + "type":"number", + "description":"Program service revenue including government fees and contracts", + "example":8374 + }, + "revenue_membership_dues":{ + "format":"double", + "type":"number", + "description":"Membership dues and assessments revenues", + "example":783489 + }, + "revenue_investments":{ + "format":"double", + "type":"number", + "description":"Investment income", + "example":83845 + }, + "revenue_sales_other":{ + "format":"double", + "type":"number", + "description":"Gain or (loss) from sale of assets other than inventory ", + "example":8769598 + }, + "revenue_special_events":{ + "format":"double", + "type":"number", + "description":"Net income or (loss) from gaming and fundraising events", + "example":94785 + }, + "revenue_sales_inventory":{ + "format":"double", + "type":"number", + "description":"Gross sales of inventory, less returns and allowances", + "example":849487 + }, + "revenue_sales":{ + "format":"double", + "type":"number", + "description":"Gross sales of inventory, less returns and allowances", + "example":973272 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"Total all other revenue", + "example":342345 + }, + "total_revenue":{ + "format":"double", + "type":"number", + "description":"Total revenue - Current Year", + "example":54523 + }, + "expense_grants":{ + "format":"double", + "type":"number", + "description":"Grants and similar amounts paid", + "example":56765 + }, + "expense_benefits":{ + "format":"double", + "type":"number", + "description":"Benefits paid to or for members", + "example":85748 + }, + "expense_salaries_employee_benefits":{ + "format":"double", + "type":"number", + "description":"Salaries, other compensation, and employee benefits", + "example":98393467 + }, + "expense_professional_fees":{ + "format":"double", + "type":"number", + "description":"Professional fees and other payments to independent contractors", + "example":435643 + }, + "expense_occupancy":{ + "format":"double", + "type":"number", + "description":"Occupancy, rent, utilities, and maintenance", + "example":0 + }, + "expense_printing_publications_postage":{ + "format":"double", + "type":"number", + "description":"Printing, publications, postage, and shipping", + "example":0 + }, + "expense_other":{ + "format":"double", + "type":"number", + "description":"Other expenses", + "example":0 + }, + "total_expenses":{ + "format":"double", + "type":"number", + "description":"Total functional expenses", + "example":0 + }, + "net_gain_loss":{ + "format":"double", + "type":"number", + "description":"Excess or (deficit) for the year", + "example":0 + }, + "other_changes":{ + "format":"double", + "type":"number", + "description":"Other changes in net assets or fund balances", + "example":0 + }, + "cash_savings_investments_boy":{ + "format":"double", + "type":"number", + "description":"Beginning of year cash, savings, and investments", + "example":0 + }, + "land_and_buidings_boy":{ + "format":"double", + "type":"number", + "description":"Beginning of year land and buildings assets", + "example":0 + }, + "other_assets_boy":{ + "format":"double", + "type":"number", + "description":"Beginning of year other assets", + "example":0 + }, + "total_assets_boy":{ + "format":"double", + "type":"number", + "description":"Beginning of year total assets", + "example":0 + }, + "total_liabilities_boy":{ + "format":"double", + "type":"number", + "description":"Beginning of year total liabilities", + "example":0 + }, + "net_assets_boy":{ + "format":"double", + "type":"number", + "description":"Net assets or fund balances at the beginning of the year", + "example":0 + }, + "cash_savings_investments_eoy":{ + "format":"double", + "type":"number", + "description":"End of year cash, savings, and investments", + "example":0 + }, + "land_and_buidings_eoy":{ + "format":"double", + "type":"number", + "description":"End of year land and buildings assets", + "example":0 + }, + "other_assets_eoy":{ + "format":"double", + "type":"number", + "description":"End of year other assets", + "example":0 + }, + "total_assets_eoy":{ + "format":"double", + "type":"number", + "description":"End of year total assets", + "example":0 + }, + "total_liabilities_eoy":{ + "format":"double", + "type":"number", + "description":"End of year total liabilities", + "example":0 + }, + "net_assets_eoy":{ + "format":"double", + "type":"number", + "description":"Net assets or fund balances at the end of the year", + "example":0 + }, + "part_1_revenue_expenses":{ + "$ref":"#/components/schemas/EZFinancialsPartI" + }, + "part_2_balance_sheet":{ + "$ref":"#/components/schemas/EZFinancialsPartII" + } + } + }, + "FinancialTrends":{ + "type":"object", + "description":"Financial Trends Analysis for 990 filers", + "properties":{ + "fiscal_year":{ + "type":"string", + "description":"The fiscal year as a number", + "example":"2019" + }, + "business_model_indicators":{ + "$ref":"#/components/schemas/Business_Model_Indicators" + }, + "capital_structure_indicators":{ + "$ref":"#/components/schemas/Capital_Structure_Indicators" + }, + "key_data_checks":{ + "$ref":"#/components/schemas/Key_Data_Checks" + } + } + }, + "Fin_Doc":{ + "type":"object", + "description":"IRS 990 document, possibly uploaded by the organization", + "properties":{ + "form990_name":{ + "type":"string", + "description":"File name document uploaded as", + "example":"2019 Form 990" + }, + "form990_year":{ + "type":"string", + "description":"Year file pertains to", + "example":"2019" + }, + "form990_url":{ + "type":"string", + "description":"URL to access this document", + "example":"https://pdf.guidestar.org/PDF_Images/2019/541/774/2019-541774039-202011259349301266-9.pdf" + }, + "form990_source":{ + "type":"string", + "description":"Source of document", + "example":"US IRS" + } + } + }, + "Form990T":{ + "type":"object", + "properties":{ + "form990t_name":{ + "type":"string", + "description":"The name of the file.", + "example":"2018 Form 990T" + }, + "form990t_url":{ + "type":"string", + "description":"URL for the organization's Form 990 T", + "example":"https://pdf.guidestar.org/PDF_Images/F990T/2015/131/837/2015-131837418-0d323c11-T.pdf" + } + } + }, + "FundingNeed":{ + "type":"object", + "deprecated":true, + "properties":{ + "funding_need":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "amount_needed":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + } + } + }, + "FundingSource":{ + "type":"object", + "deprecated":true, + "properties":{ + "funding_source":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "funding_amount":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + } + } + }, + "FinancialStatement":{ + "type":"object", + "properties":{ + "fiscal_year_begin":{ + "type":"string", + "description":"DEPRECATED", + "deprecated":true, + "example":"" + }, + "fiscal_year_end":{ + "type":"string", + "description":"When the fiscal year ends.", + "example":2017 + }, + "auditing_company":{ + "type":"string", + "description":"The company that audited the financials.", + "example":"KPMG" + }, + "doc_name":{ + "type":"string", + "description":"The name of the uploaded document", + "example":"Audited Financial Statements.pdf" + }, + "document_url":{ + "type":"string", + "description":"The url of the document", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6050448&approved=True" + } + } + }, + "AnnualReport":{ + "type":"object", + "properties":{ + "doc_name":{ + "type":"string", + "description":"The document's name.", + "example":"BMGF Annual Report 2019" + }, + "contents":{ + "type":"string", + "description":"DEPRECATED", + "deprecated":true, + "example":"" + }, + "year":{ + "type":"string", + "description":"The year the document is from.", + "example":2019 + }, + "url":{ + "type":"string", + "description":"The url for the document.", + "example":"https://www.guidestar.org/ViewEdoc.aspx?eDocId=6050447&approved=True" + } + } + }, + "Ratios":{ + "type":"object", + "properties":{ + "year":{ + "format":"int32", + "type":"integer", + "description":"The fiscal year.", + "example":2019 + }, + "months_of_cash":{ + "type":"string", + "description":"A measurement of how long an organization can operate using cash and cash reserves at current expense levels. Calculated using the formula: Cash plus Savings divided by Total Expenses minus Depreciation divided by 12 months.", + "example":7.37 + }, + "liquidity":{ + "type":"string", + "description":"The ratio of an organization's capacity to repay its current liabilities through cash and cash equivalents. Metric calculated using the 'Quick Ratio' (Cash + Savings + Short Term Investments + Accounts Receivable) / Total Liabilities.", + "example":15.54 + }, + "fringe_rate":{ + "type":"string", + "description":"The cost of employee benefits divided by the wages paid to employees. Calculated using the formula: Pensions plus Benefits plus Payroll Tax Totals divided by Current Compensation plus Total Wages.", + "example":8.4 + }, + "net_gain_loss":{ + "type":"string", + "description":"The amount of net gain or net loss.", + "example":1480973 + } + } + }, + "Person":{ + "type":"object", + "properties":{ + "name":{ + "type":"string", + "description":"The board member's first and last name.", + "example":"Bob Smith" + }, + "title":{ + "type":"string", + "description":"The board member's title.", + "example":"SECRETARY" + }, + "type":{ + "type":"array", + "items":{ + "type":"string", + "description":"The type of positions they have.", + "example":"Officer" + } + }, + "compensation":{ + "format":"double", + "type":"number", + "description":"The salary for the staff member's position.", + "example":500000 + }, + "related_compensation":{ + "format":"double", + "type":"number", + "description":"Salary from other related organizations.", + "example":100 + }, + "other_compensation":{ + "format":"double", + "type":"number", + "description":"Benefits provided by the organization.", + "example":20000 + }, + "hours":{ + "type":"string", + "description":"Hours spent on their position.", + "example":7 + }, + "benefits":{ + "type":"string", + "description":"DEPRECATED", + "deprecated":true, + "example":"" + } + } + }, + "BoardMember":{ + "type":"object", + "properties":{ + "name":{ + "type":"string", + "description":"The board member's first and last name.", + "example":"Bob Smith" + }, + "title":{ + "type":"string", + "description":"DEPRECATED", + "deprecated":true, + "example":"" + }, + "company":{ + "type":"string", + "description":"The company the board member works for.", + "example":"City of West Palm Beach, Housing and Community Development" + } + } + }, + "OrganizationDemographics":{ + "type":"object", + "deprecated":true, + "properties":{ + "total_board_members":{ + "format":"int32", + "type":"integer", + "description":"DEPRECATED" + }, + "total_fulltime_staff":{ + "format":"int32", + "type":"integer", + "description":"DEPRECATED" + }, + "total_parttime_staff":{ + "format":"int32", + "type":"integer", + "description":"DEPRECATED" + }, + "total_staff":{ + "format":"int32", + "type":"integer", + "description":"DEPRECATED" + }, + "total_senior_staff":{ + "format":"int32", + "type":"integer", + "description":"DEPRECATED" + }, + "tracks_staffboardvol_retention":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "tracks_staffboard_income":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "tracks_staffboard_age":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "tracks_vendor_diversity":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "has_diversity_committee":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "has_diversity_manager":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "diversity_manager_fulltime":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "diversity_plan":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "supports_diversity_via_other_methods":{ + "type":"boolean", + "description":"DEPRECATED" + }, + "equity_strategies":{ + "$ref":"#/components/schemas/EquityStrategy" + }, + "categories":{ + "type":"array", + "description":"DEPRECATED", + "deprecated":true, + "items":{ + "$ref":"#/components/schemas/DemographicsCategory" + } + } + } + }, + "DEI2Demographics":{ + "type":"object", + "properties":{ + "staff_level_totals":{ + "$ref":"#/components/schemas/StaffLevelTotals" + }, + "equity_strategies":{ + "$ref":"#/components/schemas/EquityStrategy" + }, + "categories":{ + "type":"array", + "items":{ + "$ref":"#/components/schemas/DEI2Category" + } + } + } + }, + "Contractor":{ + "type":"object", + "properties":{ + "name":{ + "type":"string", + "description":"The contractors name.", + "example":"RIZ CONSULTING" + }, + "address":{ + "type":"string", + "description":"The contractors address.", + "example":"123 Street Richmond VA 23223" + }, + "compensation":{ + "type":"string", + "description":"The contractors compensation.", + "example":30916528 + }, + "service_type":{ + "type":"string", + "description":"The type of service the contractor provided.", + "example":"STRATEGY EXECUTION" + } + } + }, + "SeniorStaff":{ + "type":"object", + "deprecated":true, + "properties":{ + "name":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "title":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "experience":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + } + } + }, + "OtherStaff":{ + "deprecated":true, + "type":"object", + "properties":{ + "name":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "title":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "type":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + } + } + }, + "Accreditation":{ + "type":"object", + "deprecated":true, + "properties":{ + "accreditation":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "year":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + } + } + }, + "OrganizationType":{ + "type":"object", + "properties":{ + "organization_type":{ + "type":"string", + "description":"The type of organization it is.", + "example":"A private foundation (30% deductibility limitation, generally)." + }, + "deductibility_limitation":{ + "type":"string", + "description":"The amount you can deduct from your taxes for donations towards this organization.", + "example":"30% (generally)" + }, + "deductibility_status_description":{ + "type":"string", + "description":"The code for the type of organization.", + "example":"PF" + } + } + }, + "ParentOrganization":{ + "type":"object", + "properties":{ + "ein":{ + "type":"string", + "description":"The parent organizations EIN.", + "example":"13-1837418" + }, + "organization_name":{ + "type":"string", + "description":"The parent organizations name.", + "example":"Candid" + }, + "group_exemption":{ + "type":"string", + "description":"The exemption code.", + "example":0 + } + } + }, + "MetricYear":{ + "type":"object", + "properties":{ + "year":{ + "format":"int32", + "type":"integer", + "description":"The year for the metric.", + "example":2019 + }, + "value":{ + "format":"double", + "type":"number", + "description":"The value for the metric.", + "example":4600000000 + } + } + }, + "PartVIII":{ + "type":"object", + "description":"IRS 990 form Part VIII dealing with revenue", + "properties":{ + "federated_campaigns":{ + "format":"double", + "type":"number", + "description":"revenue from federated campaigns", + "example":0 + }, + "membership_dues":{ + "format":"double", + "type":"number", + "description":"revenue from membership dues", + "example":0 + }, + "fundraising_events":{ + "format":"double", + "type":"number", + "description":"revenue from fundraising events", + "example":0 + }, + "related_orgs":{ + "format":"double", + "type":"number", + "description":"revenue from related orgs", + "example":0 + }, + "government_grants":{ + "format":"double", + "type":"number", + "description":"revenue from government grants", + "example":0 + }, + "contributions_other":{ + "format":"double", + "type":"number", + "description":"revenue from other contributions", + "example":1000000 + }, + "contributions_noncash":{ + "format":"double", + "type":"number", + "description":"revenue from other noncash contributions", + "example":0 + }, + "contributions_all":{ + "format":"double", + "type":"number", + "description":"total revenue from other contributions", + "example":1000000 + }, + "service_revenue":{ + "format":"double", + "type":"number", + "description":"revenue from services", + "example":1000000 + }, + "income_investment":{ + "format":"double", + "type":"number", + "description":"revenue from income investments", + "example":1000000 + }, + "income_bonds":{ + "format":"double", + "type":"number", + "description":"revenue from income bonds", + "example":0 + }, + "royalties":{ + "format":"double", + "type":"number", + "description":"revenue from royalties", + "example":0 + }, + "rents_real":{ + "format":"double", + "type":"number", + "description":"Gross Rent-real", + "example":100000 + }, + "rents_personal":{ + "format":"double", + "type":"number", + "description":"Gross Rent -personal", + "example":0 + }, + "rent_expenses_real":{ + "format":"double", + "type":"number", + "description":"Real rental expense", + "example":100000 + }, + "rent_expenses_personal":{ + "format":"double", + "type":"number", + "description":"Personal rental expense", + "example":0 + }, + "rent_income_real":{ + "format":"double", + "type":"number", + "description":"Rental Income-real", + "example":100000 + }, + "rent_income_personal":{ + "format":"double", + "type":"number", + "description":"Rental Income-personal", + "example":100000 + }, + "net_rental":{ + "format":"double", + "type":"number", + "description":"Net Rental Income", + "example":100000 + }, + "gross_securities":{ + "format":"double", + "type":"number", + "description":"Gross sales of Assets-securities", + "example":100000 + }, + "gross_other":{ + "format":"double", + "type":"number", + "description":"Gross sales of assets-other", + "example":0 + }, + "cost_securities":{ + "format":"double", + "type":"number", + "description":"Less cost of sale of assets-securities", + "example":100000 + }, + "cost_other":{ + "format":"double", + "type":"number", + "description":"Less cost of sales of assets-other", + "example":10000 + }, + "gain_securities":{ + "format":"double", + "type":"number", + "description":"Gain or loss on sale of assets-securities", + "example":10000 + }, + "gain_other":{ + "format":"double", + "type":"number", + "description":"Gain or loss on sale of assets-other", + "example":10000 + }, + "net_sales":{ + "format":"double", + "type":"number", + "description":"net revenue from sales", + "example":10000000 + }, + "contributions":{ + "format":"double", + "type":"number", + "description":"revenue from contributions", + "example":100000 + }, + "gross_special":{ + "format":"double", + "type":"number", + "description":"gross special revenue", + "example":100000 + }, + "direct_expenses":{ + "format":"double", + "type":"number", + "description":"direct expenses for the organization", + "example":100000 + }, + "net_special":{ + "format":"double", + "type":"number", + "description":"net special revenue", + "example":1000000 + }, + "gaming_income":{ + "format":"double", + "type":"number", + "description":"Gross income from gaming", + "example":100000 + }, + "gaming_expenses":{ + "format":"double", + "type":"number", + "description":"Less expenses from gaming", + "example":1000000 + }, + "gaming_net":{ + "format":"double", + "type":"number", + "description":"Net income from gaming", + "example":100000 + }, + "gross_sales":{ + "format":"double", + "type":"number", + "description":"gross revenue from sales", + "example":1000000 + }, + "cost_goods":{ + "format":"double", + "type":"number", + "description":"cost of goods", + "example":1000000 + }, + "gross_profit":{ + "format":"double", + "type":"number", + "description":"gross profit earned", + "example":100000 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"other revenue", + "example":100000 + }, + "revenue_total":{ + "format":"double", + "type":"number", + "description":"total revenue", + "example":100000 + }, + "service_description_a":{ + "type":"string", + "description":"first specially declared revenue-providing service", + "example":"PRODUCT REVENUE" + }, + "service_code_a":{ + "format":"double", + "type":"number", + "description":"Program service code (a)", + "example":10000000 + }, + "service_description_b":{ + "type":"string", + "description":"second specially declared revenue-providing service", + "example":"FUNDING INFO. NETWORK" + }, + "service_amount_a":{ + "format":"double", + "type":"number", + "description":"revenue from service a", + "example":1000000 + }, + "service_code_b":{ + "format":"double", + "type":"number", + "description":"Program service code (b)", + "example":100000 + }, + "service_amount_b":{ + "format":"double", + "type":"number", + "description":"revenue from service b", + "example":1000000 + }, + "service_description_c":{ + "type":"string", + "description":"third specially declared revenue-providing service", + "example":"SPECIAL REVENUE SERVICE" + }, + "service_code_c":{ + "format":"double", + "type":"number", + "description":"Program service code (c)", + "example":100000 + }, + "service_amount_c":{ + "format":"double", + "type":"number", + "description":"revenue from service c", + "example":100000 + }, + "service_description_d":{ + "type":"string", + "description":"fourth specially declared revenue-providing service", + "example":"ANOTHER SPECIAL REVENUE SERVICE" + }, + "service_code_d":{ + "format":"double", + "type":"number", + "description":"Program service code (d)", + "example":100000 + }, + "service_amount_d":{ + "format":"double", + "type":"number", + "description":"revenue from service d", + "example":100000 + }, + "service_description_e":{ + "type":"string", + "description":"fifth specially declared revenue-providing service", + "example":"YET ANOTHER SPECIAL REVENUE SERVICE" + }, + "service_code_e":{ + "format":"double", + "type":"number", + "description":"Program service code (e)", + "example":100000 + }, + "service_amount_e":{ + "format":"double", + "type":"number", + "description":"revenue from service e", + "example":100000 + }, + "service_description_f":{ + "type":"string", + "description":"sixth specially declared revenue-providing service", + "example":"A FINAL SPECIAL REVENUE SERVICE" + }, + "service_code_f":{ + "format":"double", + "type":"number", + "description":"Program service code (f)", + "example":100000 + }, + "service_amount_f":{ + "format":"double", + "type":"number", + "description":"revenue from service f", + "example":100000 + } + } + }, + "PartIX":{ + "type":"object", + "description":"IRS 990 form Part IX dealing with expenses", + "properties":{ + "grants_orgs_us":{ + "format":"double", + "type":"number", + "description":"expenses from grants issued to US organizations", + "example":10000000 + }, + "grants_individuals_us":{ + "format":"double", + "type":"number", + "description":"expenses from grants issued to US individuals", + "example":100000 + }, + "grants_orgs_non_us":{ + "format":"double", + "type":"number", + "description":"expenses from grants issued to non US organizations", + "example":100000 + }, + "benefits_total":{ + "format":"double", + "type":"number", + "description":"total expenses from benefits programs", + "example":10000000 + }, + "compensation_current":{ + "format":"double", + "type":"number", + "description":"current expenses from employee compensation", + "example":10000000 + }, + "compensation_disqualified":{ + "format":"double", + "type":"number", + "description":"expenses from disqualified employee compensation", + "example":1000000 + }, + "wages_total":{ + "format":"double", + "type":"number", + "description":"total expenses from employee wages", + "example":100000000 + }, + "pension_total":{ + "format":"double", + "type":"number", + "description":"expenses from employee pensions", + "example":100000 + }, + "employee_benefits_total":{ + "format":"double", + "type":"number", + "description":"total expenses from employee benefits", + "example":1000000 + }, + "payroll_tax_total":{ + "format":"double", + "type":"number", + "description":"total expenses from tax on payroll", + "example":100000 + }, + "fees_management":{ + "format":"double", + "type":"number", + "description":"expenses from management fees", + "example":100000 + }, + "fees_legal":{ + "format":"double", + "type":"number", + "description":"expenses from legal fees", + "example":100000 + }, + "accounting_fees_total":{ + "format":"double", + "type":"number", + "description":"total expenses from accounting fees", + "example":100000 + }, + "fees_lobbying":{ + "format":"double", + "type":"number", + "description":"expenses from lobbying fees", + "example":100000 + }, + "fundraising_total":{ + "format":"double", + "type":"number", + "description":"total fundraising expenses", + "example":100000 + }, + "fees_investments":{ + "format":"double", + "type":"number", + "description":"expenses from investment fees", + "example":100000 + }, + "fees_other":{ + "format":"double", + "type":"number", + "description":"expenses from other fees", + "example":10000000 + }, + "ads_promo":{ + "format":"double", + "type":"number", + "description":"expenses from promotional advertising", + "example":100000 + }, + "office":{ + "format":"double", + "type":"number", + "description":"office expenses", + "example":1000000 + }, + "information_technology":{ + "format":"double", + "type":"number", + "description":"IT expenses", + "example":1000000 + }, + "expense_royalties":{ + "format":"double", + "type":"number", + "description":"expenses from royalties", + "example":100000 + }, + "occupancy_total":{ + "format":"double", + "type":"number", + "description":"Occupancy", + "example":1000000 + }, + "travel_total":{ + "format":"double", + "type":"number", + "description":"total expenses from travel", + "example":1000000 + }, + "entertain_officials":{ + "format":"double", + "type":"number", + "description":"Payment of travel for officials", + "example":100000 + }, + "meetings_total":{ + "format":"double", + "type":"number", + "description":"total expenses from meetings", + "example":100000 + }, + "interest_total":{ + "format":"double", + "type":"number", + "description":"total expenses from interest accrued", + "example":100000 + }, + "payments":{ + "format":"double", + "type":"number", + "description":"expenses from payments", + "example":100000 + }, + "depreciation_total":{ + "format":"double", + "type":"number", + "description":"Depreciation, depletion, and amortization", + "example":100000 + }, + "insurance":{ + "format":"double", + "type":"number", + "description":"expenses from insurance", + "example":100000 + }, + "expense_a_total":{ + "format":"double", + "type":"number", + "description":"expenses from specially declared source a", + "example":1000000 + }, + "expense_b_total":{ + "format":"double", + "type":"number", + "description":"expenses from specially declared source b", + "example":100000 + }, + "expense_c_total":{ + "format":"double", + "type":"number", + "description":"expenses from specially declared source c", + "example":10000000 + }, + "expense_d_total":{ + "format":"double", + "type":"number", + "description":"expenses from specially declared source d", + "example":1000000 + }, + "expense_e_total":{ + "format":"double", + "type":"number", + "description":"expenses from specially declared source e", + "example":1000000 + }, + "expenses_total":{ + "format":"double", + "type":"number", + "description":"total expenses", + "example":1000000000 + }, + "total_program_services":{ + "format":"double", + "type":"number", + "description":"total expenses from program services", + "example":100000 + }, + "total_management":{ + "format":"double", + "type":"number", + "description":"total management expenses", + "example":100000 + }, + "total_fundraising":{ + "format":"double", + "type":"number", + "description":"total fundraising expenses", + "example":100000 + }, + "expense_joint_total":{ + "format":"double", + "type":"number", + "description":"total joint expenses", + "example":100000 + }, + "joint_services":{ + "format":"double", + "type":"number", + "description":"expenses from joint services", + "example":100000 + }, + "joint_general":{ + "format":"double", + "type":"number", + "description":"general joint expenses", + "example":100000 + }, + "joint_fundraising":{ + "format":"double", + "type":"number", + "description":"joint fundraising expenses", + "example":100000 + }, + "all_other_expenses":{ + "format":"double", + "type":"number", + "description":"expenses from all other sources", + "example":1000000 + }, + "expense_a_description":{ + "type":"string", + "description":"first specially declared source of expense", + "example":"SALES TAX EXPENSE" + }, + "expense_b_description":{ + "type":"string", + "description":"second specially declared source of expense", + "example":"REPAIRS AND MAINTENANCE" + }, + "expense_c_description":{ + "type":"string", + "description":"third specially declared source of expense", + "example":"RECRUITMENT COSTS" + }, + "expense_d_description":{ + "type":"string", + "description":"fourth specially declared source of expense", + "example":"SPECIAL EXPENSE SOURCE" + } + } + }, + "PartX":{ + "type":"object", + "description":"IRS 990 form Part X, Balance Sheet", + "properties":{ + "cash_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year cash", + "example":1000000 + }, + "cash_eoy":{ + "format":"double", + "type":"number", + "description":"end of year cash", + "example":1000000 + }, + "savings_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year savings", + "example":1000000 + }, + "savings_eoy":{ + "format":"double", + "type":"number", + "description":"end of year savings", + "example":10000000 + }, + "pledges_grants_boy":{ + "format":"double", + "type":"number", + "description":"Net pledges and grants receivable: beginning of year", + "example":100000 + }, + "pledges_grants_eoy":{ + "format":"double", + "type":"number", + "description":"Net pledges and grants receivable: end of year", + "example":1000000 + }, + "accounts_receivable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year accounts receivable", + "example":10000000 + }, + "accounts_receivable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year accounts receivable", + "example":10000000 + }, + "qualified_receivable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year qualified receivable", + "example":1000000 + }, + "qualified_receivable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year qualified receivable", + "example":1000000 + }, + "disqualified_receivable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year disqualified receivable", + "example":10000000 + }, + "disqualified_receivable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year disqualified receivable", + "example":100000000 + }, + "loans_receivable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year loans receivable", + "example":10000000 + }, + "loans_receivable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year loans receivable", + "example":10000000 + }, + "inventory_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year inventory", + "example":10000000 + }, + "inventory_eoy":{ + "format":"double", + "type":"number", + "description":"end of year inventory", + "example":10000000 + }, + "prepaid_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year prepaid", + "example":1000000 + }, + "prepaid_eoy":{ + "format":"double", + "type":"number", + "description":"end of year prepaid", + "example":1000000 + }, + "lbe_base":{ + "format":"double", + "type":"number", + "description":"Land, buildings, and equipment: cost basis", + "example":1000000 + }, + "less_depreciation":{ + "format":"double", + "type":"number", + "description":"Less: accumulated depreciation", + "example":10000000 + }, + "lbe_boy":{ + "format":"double", + "type":"number", + "description":"Land and buildings BOY", + "example":1000000 + }, + "lbe_eoy":{ + "format":"double", + "type":"number", + "description":"Land and buildings EOY", + "example":10000000 + }, + "public_securities_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year public securities", + "example":10000000 + }, + "public_securities_eoy":{ + "format":"double", + "type":"number", + "description":"end of year public securities", + "example":1000000 + }, + "other_securities_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year other securities", + "example":1000000 + }, + "other_securities_eoy":{ + "format":"double", + "type":"number", + "description":"end ofyear other securities", + "example":1000000 + }, + "investment_programs_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year investment programs", + "example":1000000 + }, + "investment_programs_eoy":{ + "format":"double", + "type":"number", + "description":"end of year investment programs", + "example":10000000 + }, + "intangible_assets_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year intangible assets", + "example":1000000 + }, + "intangible_assets_eoy":{ + "format":"double", + "type":"number", + "description":"end of year intangible assets", + "example":10000000 + }, + "other_assets_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year other assets", + "example":1000000 + }, + "other_assets_eoy":{ + "format":"double", + "type":"number", + "description":"end of year other assets", + "example":1000000 + }, + "assets_total_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year total assets", + "example":1000000 + }, + "assets_total_eoy":{ + "format":"double", + "type":"number", + "description":"end of year total asstes", + "example":10000000 + }, + "accounts_payable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year accounts payable", + "example":10000000 + }, + "accounts_payable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year accounts payable", + "example":1000000 + }, + "grants_payable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year grants payable", + "example":1000000 + }, + "grants_payable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year grants payable", + "example":1000000 + }, + "deferred_revenue_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year deferred revenue", + "example":1000000 + }, + "deferred_revenue_eoy":{ + "format":"double", + "type":"number", + "description":"end of year deferred revenue", + "example":10000000 + }, + "tax_exempt_bonds_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year tax exempt bonds", + "example":10000000 + }, + "tax_exempt_bonds_eoy":{ + "format":"double", + "type":"number", + "description":"end of year tax exempt bonds", + "example":1000000 + }, + "escrow_liability_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year escrow liability", + "example":100000 + }, + "escrow_liability_eoy":{ + "format":"double", + "type":"number", + "description":"end of year escrow liability", + "example":1000000 + }, + "payable_officiers_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year payable officiers", + "example":1000000 + }, + "payable_officiers_eoy":{ + "format":"double", + "type":"number", + "description":"end of year payable officiers", + "example":100000 + }, + "secured_notes_payable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year secured notes payable", + "example":10000 + }, + "secured_notes_payable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year secured notes payable", + "example":100000 + }, + "unsecured_notes_payable_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year unsecured notes payable", + "example":100000 + }, + "unsecured_notes_payable_eoy":{ + "format":"double", + "type":"number", + "description":"end of year unsecured notes payable", + "example":100000 + }, + "liability_other_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year other liability", + "example":1000000 + }, + "liability_other_eoy":{ + "format":"double", + "type":"number", + "description":"end of year other liability", + "example":10000 + }, + "liability_total_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year total liability", + "example":100000000 + }, + "liability_total_eoy":{ + "format":"double", + "type":"number", + "description":"end of year total liability", + "example":10000000 + }, + "unrestricted_boy":{ + "format":"double", + "type":"number", + "description":"Unrestricted net assets: beginning of year", + "example":100000 + }, + "unrestricted_eoy":{ + "format":"double", + "type":"number", + "description":"Unrestricted net assets: end of year", + "example":1000000 + }, + "temporarily_restricted_boy":{ + "format":"double", + "type":"number", + "description":"Temporarily restricted net assets: Beginning of year", + "example":1000000 + }, + "temporarily_restricted_eoy":{ + "format":"double", + "type":"number", + "description":"Temporarily restricted net assets: End of year", + "example":1000000 + }, + "permanently_restricted_boy":{ + "format":"double", + "type":"number", + "description":"Permanently restricted net assets: Beginning of year", + "example":1000000 + }, + "permanently_restricted_eoy":{ + "format":"double", + "type":"number", + "description":"Permanently restricted net assets: End of year", + "example":1000000 + }, + "restricted_boy":{ + "format":"double", + "type":"number", + "description":"Temporarily restricted net assets: Beginning of year + Permanently restricted net assets: Beginning of year", + "example":100000 + }, + "restricted_eoy":{ + "format":"double", + "type":"number", + "description":"Temporarily restricted net assets: End of year + Permanently restricted net assets: Beginning of year", + "example":1000000 + }, + "capital_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year capital", + "example":100000 + }, + "capital_eoy":{ + "format":"double", + "type":"number", + "description":"end of year capital", + "example":1000000 + }, + "paid_in_boy":{ + "format":"double", + "type":"number", + "description":"Paid-in or capital surplus, or land, building, or equipment fund: beginning of year", + "example":10000 + }, + "paid_in_eoy":{ + "format":"double", + "type":"number", + "description":"Paid-in or capital surplus, or land, building, or equipment fund: end of year", + "example":100000 + }, + "retained_boy":{ + "format":"double", + "type":"number", + "description":"Retained earnings, endowment, accumulated income, or other funds: beginning of year", + "example":100000 + }, + "retained_eoy":{ + "format":"double", + "type":"number", + "description":"Retained earnings, endowment, accumulated income, or other funds: end of year", + "example":100000 + }, + "net_total_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year net total", + "example":100000000 + }, + "net_total_eoy":{ + "format":"double", + "type":"number", + "description":"end of year net total", + "example":100000000 + }, + "balances_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year balances", + "example":10000000 + }, + "balances_eoy":{ + "format":"double", + "type":"number", + "description":"end of year balances", + "example":10000000 + } + } + }, + "EZFinancialsPartI":{ + "type":"object", + "description":"IRS Form 990 EZ Financials Part I, Revenue, Expenses, and Changes in Net Assets or Fund Balances", + "properties":{ + "contributions_total":{ + "format":"double", + "type":"number", + "description":"total contributions", + "example":1000000 + }, + "service_revenue":{ + "format":"double", + "type":"number", + "description":"service revenue", + "example":1000000 + }, + "membership_dues":{ + "format":"double", + "type":"number", + "description":"revenue from membership dues", + "example":100000 + }, + "income_investments":{ + "format":"double", + "type":"number", + "description":"revenue from income investments", + "example":100000 + }, + "gross_other":{ + "format":"double", + "type":"number", + "description":"gross revenue from other sources", + "example":1000000 + }, + "cost_other":{ + "format":"double", + "type":"number", + "description":"Less cost of sales of assets- other", + "example":1000000 + }, + "gain_other":{ + "format":"double", + "type":"number", + "description":"Gain or loss on sale of assets-other", + "example":1000000 + }, + "gross_gaming":{ + "format":"double", + "type":"number", + "description":"gross gaming revenue", + "example":1000000 + }, + "gross_fundraising":{ + "format":"double", + "type":"number", + "description":"gross fundraising revenue", + "example":100000 + }, + "gross_special":{ + "format":"double", + "type":"number", + "description":"gross special revenue", + "example":100000 + }, + "direct_expenses":{ + "format":"double", + "type":"number", + "description":"direct expenses", + "example":1000000 + }, + "net_special":{ + "format":"double", + "type":"number", + "description":"net special revenue", + "example":100000 + }, + "gross_sales":{ + "format":"double", + "type":"number", + "description":"gross revenue from sales", + "example":100000 + }, + "cost_goods":{ + "format":"double", + "type":"number", + "description":"cost of goods", + "example":10000 + }, + "gross_profit":{ + "format":"double", + "type":"number", + "description":"gross profit", + "example":100000 + }, + "revenue_other":{ + "format":"double", + "type":"number", + "description":"revenue from other sources", + "example":1000000 + }, + "revenue_total":{ + "format":"double", + "type":"number", + "description":"total revenue", + "example":1000000000 + }, + "grants_total":{ + "format":"double", + "type":"number", + "description":"total grants paid", + "example":10000 + }, + "benefits_total":{ + "format":"double", + "type":"number", + "description":"total benefits paid", + "example":100000 + }, + "compensation_total":{ + "format":"double", + "type":"number", + "description":"total compensation expenses", + "example":100000 + }, + "fundraising_total":{ + "format":"double", + "type":"number", + "description":"total fundraising expenses", + "example":1000000 + }, + "occupancy_total":{ + "format":"double", + "type":"number", + "description":"total expenses from occupancy, rent, utilities, and maintenance", + "example":100000 + }, + "printing_total":{ + "format":"double", + "type":"number", + "description":"total printing expenses", + "example":100000 + }, + "other_expenses_total":{ + "format":"double", + "type":"number", + "description":"total expenses from other sources", + "example":1000000 + }, + "functional_expenses_total":{ + "format":"double", + "type":"number", + "description":"total functional expenses", + "example":1000000 + }, + "year_excess":{ + "format":"double", + "type":"number", + "description":"excess (or deficit) for the year", + "example":10000000 + }, + "net_assets_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year net assets", + "example":100000 + }, + "assets_change":{ + "format":"double", + "type":"number", + "description":"changes in assets", + "example":100000 + }, + "net_assets_eoy":{ + "format":"double", + "type":"number", + "description":"end of year net assets", + "example":100000 + } + } + }, + "EZFinancialsPartII":{ + "type":"object", + "description":"IRS Form 990 EZ Financials Part II, Balance Sheet", + "properties":{ + "cash_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year cash", + "example":10000000 + }, + "lbe_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year land and buildings", + "example":100000 + }, + "assets_other_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year other assets", + "example":1000000 + }, + "assets_total_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year total assets", + "example":10000000 + }, + "liability_total_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year total liability", + "example":1000000 + }, + "net_total_boy":{ + "format":"double", + "type":"number", + "description":"beginning of year net total", + "example":100000 + }, + "cash_eoy":{ + "format":"double", + "type":"number", + "description":"end of year cash", + "example":100000 + }, + "lbe_eoy":{ + "format":"double", + "type":"number", + "description":"end of year land and buildings", + "example":100000 + }, + "assets_other_eoy":{ + "format":"double", + "type":"number", + "description":"end of year other assets", + "example":1000000 + }, + "assets_total_eoy":{ + "format":"double", + "type":"number", + "description":"end of year total assets", + "example":1000000 + }, + "liability_total_eoy":{ + "format":"double", + "type":"number", + "description":"end of year total liability", + "example":100000 + }, + "net_total_eoy":{ + "format":"double", + "type":"number", + "description":"end of year net total", + "example":1000000 + } + } + }, + "Business_Model_Indicators":{ + "type":"object", + "description":"list of business model indicators enumerated below", + "properties":{ + "profitability":{ + "$ref":"#/components/schemas/Profitability" + }, + "revenue_composition":{ + "$ref":"#/components/schemas/Revenue_Composition" + }, + "expense_composition":{ + "$ref":"#/components/schemas/Expense_Composition" + }, + "full_cost_components":{ + "$ref":"#/components/schemas/Full_Cost_Components" + } + } + }, + "Capital_Structure_Indicators":{ + "type":"object", + "description":"list of capital structure indicators enumerated below", + "properties":{ + "liquidity":{ + "$ref":"#/components/schemas/Liquidity" + }, + "balance_sheet_composition":{ + "$ref":"#/components/schemas/Balance_Sheet_Composition" + } + } + }, + "Key_Data_Checks":{ + "type":"object", + "description":"list of key data checks enumerated below", + "properties":{ + "data_check_errors":{ + "type":"boolean", + "description":"presence of data check errors", + "example":false + } + } + }, + "EquityStrategy":{ + "type":"object", + "description":"list of equity strategy items enumerated below", + "properties":{ + "data_compensation":{ + "type":"boolean", + "description":"presence of compensation information", + "example":true + }, + "data_disparities":{ + "type":"boolean", + "description":"presence of data disparities information", + "example":true + }, + "data_root_cause":{ + "type":"boolean", + "description":"presence of root cause information", + "example":true + }, + "data_programming_goals":{ + "type":"boolean", + "description":"presence of programming goals information", + "example":true + }, + "data_feedback":{ + "type":"boolean", + "description":"presence of feedback information", + "example":true + }, + "data_demographics":{ + "type":"boolean", + "description":"presence of demographics information", + "example":true + }, + "data_strategic_plan":{ + "type":"boolean", + "description":"presence of strategic plan information", + "example":true + }, + "policy_standards":{ + "type":"boolean", + "description":"presence of policy standards information", + "example":true + }, + "policy_promotion":{ + "type":"boolean", + "description":"presence of promotion policy information", + "example":true + }, + "policy_evaluation":{ + "type":"boolean", + "description":"presence of evaluation policy information", + "example":true + }, + "policy_community":{ + "type":"boolean", + "description":"presence of community policy information", + "example":true + }, + "policy_leadership":{ + "type":"boolean", + "description":"presence of leadership policy information", + "example":true + }, + "policy_satisfaction":{ + "type":"boolean", + "description":"presence of satisfaction policy information", + "example":true + }, + "policy_equity":{ + "type":"boolean", + "description":"presence of equity policy information", + "example":true + }, + "equity_strategy_last_modified":{ + "type":"string", + "description":"equity strategy section's last modified date for the organization", + "example":"07/16/2020" + } + } + }, + "DemographicsCategory":{ + "type":"object", + "description":"Category for demographics", + "deprecated":true, + "properties":{ + "category":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "org_does_not_collect_for":{ + "type":"object", + "deprecated":true, + "additionalProperties":{ + "type":"boolean", + "description":"DEPRECATED", + "deprecated":true, + "example":false + } + }, + "subcategories":{ + "type":"array", + "description":"DEPRECATED", + "deprecated":true, + "example":[ + + ], + "items":{ + "$ref":"#/components/schemas/DemographicsSubCategory" + } + } + } + }, + "StaffLevelTotals":{ + "type":"object", + "description":"demographic totals for staff", + "properties":{ + "total_board_members":{ + "type":"string", + "description":"total number of board members", + "example":"24" + }, + "total_staff":{ + "type":"string", + "description":"total number of staff", + "example":"223" + }, + "total_senior_staff":{ + "type":"string", + "description":"total number of senior staff", + "example":"8" + } + } + }, + "DEI2Category":{ + "type":"object", + "description":"Demographics and Equity Information Section", + "properties":{ + "category":{ + "type":"string", + "description":"category description", + "example":"Gender Identity" + }, + "board_members_not_collected":{ + "type":"boolean", + "description":"presence of board member data collected in category", + "example":false + }, + "staff_not_collected":{ + "type":"boolean", + "description":"presence of staff data collected in category", + "example":false + }, + "senior_staff_not_collected":{ + "type":"boolean", + "description":"presence of senior staff data collected in category", + "example":false + }, + "subcategories":{ + "type":"array", + "description":"subcategory descriptions", + "example":"Female", + "items":{ + "$ref":"#/components/schemas/DEI2SubCategory" + } + } + } + }, + "Profitability":{ + "type":"object", + "description":"profitability section of financial trends analysis", + "properties":{ + "Unrestricted_surplus_(deficit)_before_depreciation":{ + "format":"int64", + "type":"integer", + "description":"unrestricted surplus or deficit before depreciation", + "example":627973 + }, + "surplus_as_percent_of_expenses_before_depreciation":{ + "type":"string", + "description":"surplus as a percent of expenses before depreciation", + "example":"2.7%" + }, + "Unrestricted_surplus_(deficit)_after_depreciation":{ + "format":"int64", + "type":"integer", + "description":"unrestricted surplus or deficit after depreciation", + "example":-1501740 + }, + "surplus_as_percent_of_expenses_after_depreciation":{ + "type":"string", + "description":"surplus as a percent of expenses after depreciation", + "example":"-5.8%" + } + } + }, + "Revenue_Composition":{ + "type":"object", + "description":"revenue composition section of financial trends analysis", + "properties":{ + "total_revenue_unrestricted_and_restricted":{ + "format":"int64", + "type":"integer", + "description":"total revenu, unrestricted and restricted", + "example":10000000 + }, + "total_revenue_percent_change_over_prior_year":{ + "type":"string", + "description":"total percent change in revenue over prior year", + "example":"21.5%" + }, + "total_revenue_prior":{ + "format":"double", + "type":"number", + "description":"total revenue prior", + "example":100000000 + }, + "program_svcs_revenue":{ + "type":"string", + "description":"programs/services revenue", + "example":"52.2%" + }, + "membership_dues":{ + "type":"string", + "description":"membership dues revenue", + "example":"1.0%" + }, + "investment_income":{ + "type":"string", + "description":"investment income revenue", + "example":"0.9%" + }, + "government_grants":{ + "type":"string", + "description":"government grants revenue", + "example":"0.0%" + }, + "other_grants_contributions":{ + "type":"string", + "description":"other grants/contributions revenue", + "example":"45.6%" + }, + "other_revenue":{ + "type":"string", + "description":"other revenue", + "example":"0.3%" + } + } + }, + "Expense_Composition":{ + "type":"object", + "description":"expense composition section of financial trends analysis", + "properties":{ + "total_expenses_before_depreciation":{ + "format":"int64", + "type":"integer", + "description":"total expenses before depreciation", + "example":10000000 + }, + "total_expenses_percent_change_over_prior_year":{ + "type":"string", + "description":"total expenses percent change over the prior year", + "example":"5.8%" + }, + "personnel":{ + "type":"string", + "description":"personnel expenses", + "example":"71.5%" + }, + "professional_fees":{ + "type":"string", + "description":"professional fees expenses", + "example":"6.2%" + }, + "occupancy":{ + "type":"string", + "description":"occupancy expenses", + "example":"8.7%" + }, + "interest_expense":{ + "type":"string", + "description":"expenses from interest", + "example":"0.2%" + }, + "pass_through":{ + "type":"string", + "description":"Pass through expenses", + "example":"0.0%" + }, + "all_other_expenses":{ + "type":"string", + "description":"all other expenses", + "example":"13.4%" + } + } + }, + "Full_Cost_Components":{ + "type":"object", + "description":"full cost components section of financial trends analysis", + "properties":{ + "total_expenses_after_depreciation":{ + "format":"int64", + "type":"integer", + "description":"total expenses after depreciation", + "example":100000000 + }, + "one_month_of_savings":{ + "format":"int64", + "type":"integer", + "description":"one month of savings", + "example":100000000 + }, + "debt_principal_payment":{ + "format":"int64", + "type":"integer", + "description":"Debt principal payment", + "example":100000000 + }, + "fixed_asset_additions":{ + "format":"int64", + "type":"integer", + "description":"Fixed asset additions", + "example":10000000 + }, + "total_full_costs_estimated":{ + "format":"int64", + "type":"integer", + "description":"estimated total full costs", + "example":10000000 + } + } + }, + "Liquidity":{ + "type":"object", + "description":"liquidity capital structure indicator", + "properties":{ + "months_of_cash":{ + "format":"double", + "type":"number", + "description":"months worth of cash", + "example":7.2 + }, + "months_of_cash_and_investments":{ + "format":"double", + "type":"number", + "description":"months worth of cash and investments", + "example":16 + }, + "months_of_estimated_liquid_unrestricted_net_assets":{ + "format":"double", + "type":"number", + "description":"estimated months worth of liquid unrestricted net assets", + "example":4.8 + } + } + }, + "Balance_Sheet_Composition":{ + "type":"object", + "description":"balance sheet composition", + "properties":{ + "cash":{ + "format":"int64", + "type":"integer", + "description":"total cash", + "example":10000000 + }, + "investments":{ + "format":"int64", + "type":"integer", + "description":"total investments", + "example":100000000 + }, + "receivables":{ + "format":"int64", + "type":"integer", + "description":"total receivables", + "example":1000000 + }, + "gross_land_buildings_and_equipment_lbe":{ + "format":"int64", + "type":"integer", + "description":"gross land buildings and equipment amount", + "example":10000000 + }, + "accumulated_depreciation_as_percent_of_lbe":{ + "type":"string", + "description":"accumulated depreciation as percent of land and buildings", + "example":"57.9%" + }, + "liabilities_as_percent_of_net_assets":{ + "type":"string", + "description":"liabilities as a percent of net assets", + "example":"35.3%" + }, + "unrestricted_net_assets":{ + "format":"int64", + "type":"integer", + "description":"unrestrited net assets total", + "example":1000000 + }, + "temporarily_restricted_net_assets":{ + "format":"int64", + "type":"integer", + "description":"temporarily restricted net assets total", + "example":100000000 + }, + "permanently_restricted_net_assets":{ + "format":"int64", + "type":"integer", + "description":"permanently restricted net assets total", + "example":10000000 + }, + "restricted_net_assets":{ + "format":"int64", + "type":"integer", + "description":"restricted net assets total", + "example":10000000 + }, + "total_net_assets":{ + "format":"int64", + "type":"integer", + "description":"total net assets", + "example":1000000 + } + } + }, + "DemographicsSubCategory":{ + "type":"object", + "description":"DEPRECATED", + "deprecated":true, + "properties":{ + "subcategory":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "staff_levels":{ + "type":"array", + "description":"DEPRECATED", + "deprecated":true, + "example":[ + + ], + "items":{ + "$ref":"#/components/schemas/DemographicsStaffLevel" + } + } + } + }, + "DEI2SubCategory":{ + "type":"object", + "description":"Demographics, Equity, and Inclusion 2 sub category", + "properties":{ + "subcategory":{ + "type":"string", + "description":"subcategory description", + "example":"Asian American/Pacific Islanders/Asian" + }, + "board_members":{ + "format":"int32", + "type":"integer", + "description":"board members in demographic group", + "example":3 + }, + "staff":{ + "format":"int32", + "type":"integer", + "description":"staff members in demographic group", + "example":3 + }, + "senior_staff":{ + "format":"int32", + "type":"integer", + "description":"senior staff members in demographic group", + "example":1 + }, + "reported_by_ceo":{ + "type":"boolean", + "description":"whether or not reported by CEO", + "example":false + }, + "reported_by_coceo":{ + "type":"boolean", + "description":"whether or not reported by co CEO", + "example":false + } + } + }, + "DemographicsStaffLevel":{ + "type":"object", + "description":"DEPRECATED", + "deprecated":true, + "properties":{ + "staff_level":{ + "type":"string", + "description":"DEPRECATED", + "example":"" + }, + "count":{ + "format":"int32", + "type":"integer", + "description":"DEPRECATED" + } + } + }, + "OK_PublicProfile3_":{ + "type":"object", + "example":null, + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":200 + }, + "status":{ + "type":"string", + "description":"Description of the HTTP response status code.", + "example":"OK" + } + } + }, + "BadRequest":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":400 + }, + "message":{ + "type":"string", + "example":"The request cannot be fulfilled due to bad syntax." + } + } + }, + "Unauthorized":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":401 + }, + "message":{ + "type":"string", + "example":"Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription." + } + } + }, + "Forbidden":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":403 + }, + "message":{ + "type":"string", + "example":"Forbidden, we found insufficient permissions to grant access to the resources. Please check the detailed message of the response." + } + } + }, + "NotFound":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":404 + }, + "message":{ + "type":"string", + "example":"Request was processed successfully but we could not find the resource ein" + } + } + }, + "NotAcceptable":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":406 + }, + "message":{ + "type":"string", + "example":"The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request." + } + } + }, + "TooManyRequests":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":429 + }, + "message":{ + "type":"string", + "example":"Rate limit is exceeded. Try again later." + } + } + }, + "InternalServerError":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":500 + }, + "message":{ + "type":"string", + "example":"Oh no!, this is bad, something went wrong... please contact API support!" + } + } + } + } + }, + "security":[ + { + "apiKeyHeader":[ + + ] + } + ], + "x-readme":{ + "explorer-enabled":true, + "proxy-enabled":true, + "samples-enabled":true + } +} From ed971a49fb160230fc6045df0e8a0545b3a925e3 Mon Sep 17 00:00:00 2001 From: Azeem Muzammil Date: Mon, 13 Nov 2023 08:13:02 +0530 Subject: [PATCH 2/7] Convert to gradle project --- .gitattributes | 8 + .gitignore | 7 +- ballerina/Ballerina.toml | 6 +- ballerina/Dependencies.toml | 328 ++++++++++++++++++ ballerina/Module.md | 70 +++- ballerina/Package.md | 72 +++- ballerina/build.gradle | 79 +++++ ballerina/modules/charitycheckpdf/Module.md | 6 - .../modules/charitycheckpdf/resources/.keep | 0 .../modules/charitycheckpdf/tests/test.bal | 13 +- ballerina/modules/essentials/Module.md | 6 - ballerina/modules/essentials/resources/.keep | 0 ballerina/modules/essentials/tests/test.bal | 22 +- ballerina/modules/premier/Module.md | 6 - ballerina/modules/premier/resources/.keep | 0 ballerina/modules/premier/tests/test.bal | 17 +- build-config/resources/Ballerina.toml | 11 + build.gradle | 88 +++++ gradle.properties | 15 + gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 185 ++++++++++ gradlew.bat | 89 +++++ settings.gradle | 55 +++ 23 files changed, 1048 insertions(+), 42 deletions(-) create mode 100644 .gitattributes create mode 100644 ballerina/Dependencies.toml create mode 100644 ballerina/build.gradle delete mode 100644 ballerina/modules/charitycheckpdf/Module.md delete mode 100644 ballerina/modules/charitycheckpdf/resources/.keep delete mode 100644 ballerina/modules/essentials/Module.md delete mode 100644 ballerina/modules/essentials/resources/.keep delete mode 100644 ballerina/modules/premier/Module.md delete mode 100644 ballerina/modules/premier/resources/.keep create mode 100644 build-config/resources/Ballerina.toml create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..afd59d8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf diff --git a/.gitignore b/.gitignore index 5c40da0..2357d05 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,9 @@ hs_err_pid* replay_pid* # DS_Store file -*.DS_Store \ No newline at end of file +*.DS_Store +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/ballerina/Ballerina.toml b/ballerina/Ballerina.toml index 7f3a5d4..26bf481 100644 --- a/ballerina/Ballerina.toml +++ b/ballerina/Ballerina.toml @@ -1,13 +1,11 @@ [package] -distribution = "2201.8.0" org = "ballerinax" name = "candid" version = "0.1.0" authors = ["Ballerina"] +export = ["candid.charitycheckpdf", "candid.essentials", "candid.premier"] keywords = ["candid", "nonprofit", "philanthropy"] repository = "https://github.com/ballerina-platform/module-ballerinax-candid" icon = "icon.png" license = ["Apache-2.0"] - -[build-options] -observabilityIncluded = true \ No newline at end of file +distribution = "2201.8.0" diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml new file mode 100644 index 0000000..8fff375 --- /dev/null +++ b/ballerina/Dependencies.toml @@ -0,0 +1,328 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.8.0" + +[[package]] +org = "ballerina" +name = "auth" +version = "2.10.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"} +] + +[[package]] +org = "ballerina" +name = "cache" +version = "3.7.0" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "constraint" +version = "1.5.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "crypto" +version = "2.5.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "file" +version = "1.9.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "http" +version = "2.10.3" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.decimal"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.regexp"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "observe"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] +modules = [ + {org = "ballerina", packageName = "http", moduleName = "http"}, + {org = "ballerina", packageName = "http", moduleName = "http.httpscerr"} +] + +[[package]] +org = "ballerina" +name = "io" +version = "1.6.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "jwt" +version = "2.10.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "lang.__internal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.array" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"} +] + +[[package]] +org = "ballerina" +name = "lang.decimal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.error" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.int" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.object" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "lang.regexp" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.runtime" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.string" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.regexp"} +] + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "log" +version = "2.9.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerina", packageName = "log", moduleName = "log"} +] + +[[package]] +org = "ballerina" +name = "mime" +version = "2.9.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"} +] + +[[package]] +org = "ballerina" +name = "oauth2" +version = "2.10.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "observe" +version = "1.2.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "os" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "task" +version = "2.5.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "test" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.error"} +] +modules = [ + {org = "ballerina", packageName = "test", moduleName = "test"} +] + +[[package]] +org = "ballerina" +name = "time" +version = "2.4.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "url" +version = "2.4.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "url", moduleName = "url"} +] + +[[package]] +org = "ballerinai" +name = "observe" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerinai", packageName = "observe", moduleName = "observe"} +] + +[[package]] +org = "ballerinax" +name = "candid" +version = "0.1.0" +dependencies = [ + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "test"}, + {org = "ballerina", name = "url"}, + {org = "ballerinai", name = "observe"} +] +modules = [ + {org = "ballerinax", packageName = "candid", moduleName = "candid"}, + {org = "ballerinax", packageName = "candid", moduleName = "candid.charitycheckpdf"}, + {org = "ballerinax", packageName = "candid", moduleName = "candid.essentials"}, + {org = "ballerinax", packageName = "candid", moduleName = "candid.premier"} +] + diff --git a/ballerina/Module.md b/ballerina/Module.md index 21eba27..77180f2 100644 --- a/ballerina/Module.md +++ b/ballerina/Module.md @@ -1,3 +1,71 @@ ## Overview -Candid.org is a nonprofit organization that provides information and resources related to philanthropy and the nonprofit sector. +Candid.org is a non-profit organization that provides a comprehensive database of information about nonprofits, foundations, grantmakers, and philanthropists. Their mission is to connect people who want to change the world to the resources they need to do it. + +The `ballerinax/candid` module provides APIs to allow to access Candid's database that includes information on over 2 million nonprofits, including their mission, programs, finances, and leadership. And also provides information on over 100,000 foundations and grantmakers, as well as data on individual philanthropists. + +Currently, the following Candid.org APIs are supported through this module + +- Charity Check PDF API + - The Charity Check PDF API is a powerful tool that allows to download formatted Charity Check PDF reports for individual nonprofits. +- Essentials API + - The Essentials API is a lightweight API that provides basic information about nonprofits, such as their name, address, EIN, and mission statement. It is ideal for applications that need to quickly and easily identify and access basic nonprofit data. +- Premier API + - The Premier API is a more comprehensive API that provides access to a wider range of nonprofit data, including financial information, staffing data, grantmaking data, and DEI data. It is ideal for applications that need to deep dive into the data of individual nonprofits or perform complex analyses of nonprofit data. + +The following sections provide details on how to use the JMS connector. + + - [Samples](#samples) + +## Samples + +### Charity Check PDF API + +The following Ballerina program returns `http:Response` for a PDF document. + +```ballerina +import ballerinax/candid.charitycheckpdf; + +charitycheckpdf:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; +charitycheckpdf:Client charitycheckpdfClient = check new charitycheckpdf:Client(apiKeyConfig); + +function getCharityCheckPDF() returns http:Response|error { + http:Response|error result = charitycheckpdfClient->/v1/pdf/["EMP-ID-NUM"]; + return result; +} +``` + +### Essentials API + +The following Ballerina program returns `V3EssentialsResponse` that contains basic information about nonprofits. + +```ballerina +import ballerinax/candid.essentials; + +essentials:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; +essentials:Client essentialsClient = check new essentials:Client(apiKeyConfig); + +function getV3Essesntials() returns essentials:V3EssentialsResponse|error { + essentials:V3Query query = { + search_terms: "13-1837418" + }; + essentials:V3EssentialsResponse|error result = essentialsClient->/v3.post(query); + return result; +} +``` + +### Premier API + +The following Ballerina program returns `V3PublicProfile` that contains comprehensive information about nonprofits. + +```ballerina +import ballerinax/candid.premier; + +premier:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; +premier:Client premierClient = check new premier:Client(apiKeyConfig); + +function getV3Premier() returns V3PublicProfile|error { + premier:V3PublicProfile|error result = check premierClient->/v3/["EMP-ID-NUM"]; + return result; +} +``` diff --git a/ballerina/Package.md b/ballerina/Package.md index fb23e14..3548c9a 100644 --- a/ballerina/Package.md +++ b/ballerina/Package.md @@ -1,3 +1,71 @@ -# Package Overview +## Package Overview -Candid.org is a nonprofit organization that provides information and resources related to philanthropy and the nonprofit sector. +Candid.org is a non-profit organization that provides a comprehensive database of information about nonprofits, foundations, grantmakers, and philanthropists. Their mission is to connect people who want to change the world to the resources they need to do it. + +The `ballerinax/candid` package provides APIs to allow to access Candid's database that includes information on over 2 million nonprofits, including their mission, programs, finances, and leadership. And also provides information on over 100,000 foundations and grantmakers, as well as data on individual philanthropists. + +Currently, the following Candid.org APIs are supported through this package + +- Charity Check PDF API + - The Charity Check PDF API is a powerful tool that allows to download formatted Charity Check PDF reports for individual nonprofits. +- Essentials API + - The Essentials API is a lightweight API that provides basic information about nonprofits, such as their name, address, EIN, and mission statement. It is ideal for applications that need to quickly and easily identify and access basic nonprofit data. +- Premier API + - The Premier API is a more comprehensive API that provides access to a wider range of nonprofit data, including financial information, staffing data, grantmaking data, and DEI data. It is ideal for applications that need to deep dive into the data of individual nonprofits or perform complex analyses of nonprofit data. + +The following sections provide details on how to use the JMS connector. + + - [Samples](#samples) + +## Samples + +### Charity Check PDF API + +The following Ballerina program returns `http:Response` for a PDF document. + +```ballerina +import ballerinax/candid.charitycheckpdf; + +charitycheckpdf:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; +charitycheckpdf:Client charitycheckpdfClient = check new charitycheckpdf:Client(apiKeyConfig); + +function getCharityCheckPDF() returns http:Response|error { + http:Response|error result = charitycheckpdfClient->/v1/pdf/["EMP-ID-NUM"]; + return result; +} +``` + +### Essentials API + +The following Ballerina program returns `V3EssentialsResponse` that contains basic information about nonprofits. + +```ballerina +import ballerinax/candid.essentials; + +essentials:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; +essentials:Client essentialsClient = check new essentials:Client(apiKeyConfig); + +function getV3Essesntials() returns essentials:V3EssentialsResponse|error { + essentials:V3Query query = { + search_terms: "13-1837418" + }; + essentials:V3EssentialsResponse|error result = essentialsClient->/v3.post(query); + return result; +} +``` + +### Premier API + +The following Ballerina program returns `V3PublicProfile` that contains comprehensive information about nonprofits. + +```ballerina +import ballerinax/candid.premier; + +premier:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; +premier:Client premierClient = check new premier:Client(apiKeyConfig); + +function getV3Premier() returns V3PublicProfile|error { + premier:V3PublicProfile|error result = check premierClient->/v3/["EMP-ID-NUM"]; + return result; +} +``` diff --git a/ballerina/build.gradle b/ballerina/build.gradle new file mode 100644 index 0000000..f91b3d0 --- /dev/null +++ b/ballerina/build.gradle @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com) + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.tools.ant.taskdefs.condition.Os + +plugins { + id 'io.ballerina.plugin' +} + +description = 'Ballerina - Candid Ballerina' + +def packageName = "candid" +def packageOrg = "ballerinax" +def tomlVersion = stripBallerinaExtensionVersion("${project.version}") +def ballerinaTomlFilePlaceHolder = new File("${project.rootDir}/build-config/resources/Ballerina.toml") +def ballerinaTomlFile = new File("$project.projectDir/Ballerina.toml") + +def stripBallerinaExtensionVersion(String extVersion) { + if (extVersion.matches(project.ext.timestampedVersionRegex)) { + def splitVersion = extVersion.split('-') + if (splitVersion.length > 3) { + def strippedValues = splitVersion[0..-4] + return strippedValues.join('-') + } else { + return extVersion + } + } else { + return extVersion.replace("${project.ext.snapshotVersion}", "") + } +} + +ballerina { + packageOrganization = packageOrg + module = packageName + testCoverageParam = "--code-coverage --coverage-format=xml" + buildOnDockerImage = "nightly" +} + +task updateTomlFiles { + doLast { + def newBallerinaToml = ballerinaTomlFilePlaceHolder.text.replace("@project.version@", project.version) + newBallerinaToml = newBallerinaToml.replace("@toml.version@", tomlVersion) + ballerinaTomlFile.text = newBallerinaToml + } +} + +task commitTomlFiles { + doLast { + project.exec { + ignoreExitValue true + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + commandLine 'cmd', '/c', "git commit -m \"[Automated] Update the toml files\" Ballerina.toml Dependencies.toml" + } else { + commandLine 'sh', '-c', "git commit -m '[Automated] Update the toml files' Ballerina.toml Dependencies.toml" + } + } + } +} + +clean { + delete 'build' +} + +publish.dependsOn build diff --git a/ballerina/modules/charitycheckpdf/Module.md b/ballerina/modules/charitycheckpdf/Module.md deleted file mode 100644 index 8a69f51..0000000 --- a/ballerina/modules/charitycheckpdf/Module.md +++ /dev/null @@ -1,6 +0,0 @@ -Prints "Hello, World!" with a main function. -[//]: # (above is the module summary) - -# Module Overview -Provides an overview about the module when generating the API documentations. -For example, refer to https://lib.ballerina.io/ballerina/io/latest diff --git a/ballerina/modules/charitycheckpdf/resources/.keep b/ballerina/modules/charitycheckpdf/resources/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ballerina/modules/charitycheckpdf/tests/test.bal b/ballerina/modules/charitycheckpdf/tests/test.bal index 60fa20e..f5d8bfc 100644 --- a/ballerina/modules/charitycheckpdf/tests/test.bal +++ b/ballerina/modules/charitycheckpdf/tests/test.bal @@ -1,11 +1,18 @@ // AUTO-GENERATED FILE. DO NOT MODIFY. // This file is auto-generated by the Ballerina OpenAPI tool. +import ballerina/log; +import ballerina/http; import ballerina/test; configurable ApiKeysConfig & readonly apiKeyConfig = ?; -Client baseClient = check new Client(apiKeyConfig, serviceUrl = "https://apidata.guidestar.org/charitycheckpdf"); +Client charityCheckPDFClient = check new Client(apiKeyConfig, serviceUrl = "https://apidata.guidestar.org/charitycheckpdf"); -@test:Config {} -isolated function testCharitycheckpdf_v1() { +@test:Config { + enable: false +} +function testCharitycheckpdf() returns error? { + log:printInfo("charityCheckPDFClient -> testCharitycheckpdf()"); + http:Response result = check charityCheckPDFClient->/v1/pdf/["13-1837418"]; + test:assertEquals(result.getContentType(), "application/pdf"); } diff --git a/ballerina/modules/essentials/Module.md b/ballerina/modules/essentials/Module.md deleted file mode 100644 index 8a69f51..0000000 --- a/ballerina/modules/essentials/Module.md +++ /dev/null @@ -1,6 +0,0 @@ -Prints "Hello, World!" with a main function. -[//]: # (above is the module summary) - -# Module Overview -Provides an overview about the module when generating the API documentations. -For example, refer to https://lib.ballerina.io/ballerina/io/latest diff --git a/ballerina/modules/essentials/resources/.keep b/ballerina/modules/essentials/resources/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ballerina/modules/essentials/tests/test.bal b/ballerina/modules/essentials/tests/test.bal index 3fb232d..43c2608 100644 --- a/ballerina/modules/essentials/tests/test.bal +++ b/ballerina/modules/essentials/tests/test.bal @@ -1,31 +1,39 @@ // AUTO-GENERATED FILE. DO NOT MODIFY. // This file is auto-generated by the Ballerina OpenAPI tool. +import ballerina/log; import ballerina/test; +import ballerina/io; configurable ApiKeysConfig & readonly apiKeyConfig = ?; -Client baseClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/essentials"); +Client essentialsClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/essentials"); @test:Config {} -isolated function testEssentials_v1() { +function testEssentialsV1() { } @test:Config {} -isolated function testEssentials_v2() { +function testEssentialsV2() { } @test:Config {} -isolated function testEssentials_v3() { +function testEssentialsV3() returns error? { + log:printInfo("essentialsClient -> testEssentialsV3()"); + V3Query query = { + search_terms: "13-1837418" + }; + V3EssentialsResponse result = check essentialsClient->/v3.post(query); + io:println(result); } @test:Config {} -isolated function testEssentials_lookup() { +function testEssentialsLookup() { } @test:Config {} -isolated function testEssentials_lookup_filter_name() { +function testEssentialsLookupFilterName() { } @test:Config {} -isolated function testEssentials_lookup_filter_name_key_or_value() { +isolated function testEssentialsLookupFilterNameKeyOrValue() { } diff --git a/ballerina/modules/premier/Module.md b/ballerina/modules/premier/Module.md deleted file mode 100644 index 8a69f51..0000000 --- a/ballerina/modules/premier/Module.md +++ /dev/null @@ -1,6 +0,0 @@ -Prints "Hello, World!" with a main function. -[//]: # (above is the module summary) - -# Module Overview -Provides an overview about the module when generating the API documentations. -For example, refer to https://lib.ballerina.io/ballerina/io/latest diff --git a/ballerina/modules/premier/resources/.keep b/ballerina/modules/premier/resources/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ballerina/modules/premier/tests/test.bal b/ballerina/modules/premier/tests/test.bal index c103834..c46df1d 100644 --- a/ballerina/modules/premier/tests/test.bal +++ b/ballerina/modules/premier/tests/test.bal @@ -1,27 +1,32 @@ // AUTO-GENERATED FILE. DO NOT MODIFY. // This file is auto-generated by the Ballerina OpenAPI tool. +import ballerina/log; import ballerina/test; +import ballerina/io; configurable ApiKeysConfig & readonly apiKeyConfig = ?; -Client baseClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/premier"); +Client premierClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/premier"); @test:Config {} -isolated function testPremier_v1() { +function testPremierV1() { } @test:Config {} -isolated function testPremier_v1_propdf() { +function testPremierV1Propdf() { } @test:Config {} -isolated function testPremier_v1_ftapdf() { +function testPremierV1ftapdf() { } @test:Config {} -isolated function testPremier_v2() { +function testPremierV2() { } @test:Config {} -isolated function testPremier_v3() { +function testPremierV3() returns error? { + log:printInfo("premierClient -> testPremierV3()"); + V3PublicProfile result = check premierClient->/v3/["13-1837418"]; + io:println(result); } diff --git a/build-config/resources/Ballerina.toml b/build-config/resources/Ballerina.toml new file mode 100644 index 0000000..fa8cd55 --- /dev/null +++ b/build-config/resources/Ballerina.toml @@ -0,0 +1,11 @@ +[package] +org = "ballerinax" +name = "candid" +version = "@toml.version@" +authors = ["Ballerina"] +export = ["candid.charitycheckpdf", "candid.essentials", "candid.premier"] +keywords = ["candid", "nonprofit", "philanthropy"] +repository = "https://github.com/ballerina-platform/module-ballerinax-candid" +icon = "icon.png" +license = ["Apache-2.0"] +distribution = "2201.8.0" diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ce6e8cd --- /dev/null +++ b/build.gradle @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com) + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +plugins { + id 'com.github.spotbugs' + id 'com.github.johnrengelman.shadow' + id 'de.undercouch.download' + id 'net.researchgate.release' + id 'jacoco' +} + +allprojects { + apply plugin: 'maven-publish' + + group = project.group + version = project.version + + repositories { + mavenLocal() + maven { + url = 'https://maven.wso2.org/nexus/content/repositories/releases/' + } + + maven { + url = 'https://mvnrepository.com/artifact/org.testng/testng' + } + + maven { + url = 'https://maven.wso2.org/nexus/content/groups/wso2-public/' + } + + maven { + url = 'https://repo.maven.apache.org/maven2' + } + + maven { + url = 'https://maven.pkg.github.com/ballerina-platform/*' + credentials { + username System.getenv("packageUser") + password System.getenv("packagePAT") + } + } + } + + ext { + snapshotVersion= '-SNAPSHOT' + timestampedVersionRegex = '.*-\\d{8}-\\d{6}-\\w.*\$' + } +} + +subprojects { + configurations { + ballerinaStdLibs + jbalTools + } +} + +def moduleVersion = project.version.replace("-SNAPSHOT", "") + +task build { + dependsOn(':candid-ballerina:build') +} + +release { + buildTasks = ['build'] + failOnSnapshotDependencies = true + versionPropertyFile = 'gradle.properties' + tagTemplate = 'v${version}' + git { + requireBranch = "release-${moduleVersion}" + pushToRemote = 'origin' + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..4fbe36b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,15 @@ +org.gradle.caching=true +group=io.ballerina.lib +version=0.1.0-SNAPSHOT +ballerinaLangVersion=2201.8.0 + +checkstylePluginVersion=10.12.0 +spotbugsPluginVersion=5.0.14 +shadowJarPluginVersion=8.1.1 +downloadPluginVersion=5.4.0 +releasePluginVersion=2.8.0 +testngVersion=7.6.1 +eclipseLsp4jVersion=0.12.0 +ballerinaGradlePluginVersion=2.1.5 +extraJavaModuleInfoPluginVersion=1.5 +jacocoVersion=0.8.10 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0419a89 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..744e882 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MSYS* | MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..a3a25e2 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +pluginManagement { + plugins { + id "com.github.spotbugs" version "${spotbugsPluginVersion}" + id "com.github.johnrengelman.shadow" version "${shadowJarPluginVersion}" + id "de.undercouch.download" version "${downloadPluginVersion}" + id "net.researchgate.release" version "${releasePluginVersion}" + id "io.ballerina.plugin" version "${ballerinaGradlePluginVersion}" + } + + repositories { + gradlePluginPortal() + maven { + url = 'https://maven.pkg.github.com/ballerina-platform/*' + credentials { + username System.getenv("packageUser") + password System.getenv("packagePAT") + } + } + } +} + +plugins { + id "com.gradle.enterprise" version "3.2" +} + +rootProject.name = 'module-ballerinax-candid' + +include ':candid-ballerina' + +project(':candid-ballerina').projectDir = file("ballerina") + +gradleEnterprise { + buildScan { + termsOfServiceUrl = 'https://gradle.com/terms-of-service' + termsOfServiceAgree = 'yes' + } +} From a3e73750a95f83af590af97bd779d00e85ccbaf5 Mon Sep 17 00:00:00 2001 From: Azeem Muzammil Date: Tue, 14 Nov 2023 15:01:12 +0530 Subject: [PATCH 3/7] Add testcases and address review comments --- .github/CODEOWNERS | 2 +- .gitignore | 1 + ballerina/Dependencies.toml | 15 +- ballerina/Module.md | 22 +- ballerina/Package.md | 26 +- .../modules/charitycheckpdf/tests/test.bal | 15 +- ballerina/modules/essentials/tests/test.bal | 117 +++- ballerina/modules/essentials/types.bal | 8 +- ballerina/modules/premier/tests/test.bal | 55 +- docs/CharityCheckPdf_v1.0.json | 567 +++++++++--------- docs/Essentials_v1.0.json | 34 +- gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 13 files changed, 480 insertions(+), 384 deletions(-) create mode 100644 gradle/wrapper/gradle-wrapper.jar diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 9a5fd73..77ff5d5 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,4 +4,4 @@ # See: https://help.github.com/articles/about-codeowners/ # These owners will be the default owners for everything in the repo. -* @AzeemMuzammil +* @NipunaRanasinghe @AzeemMuzammil diff --git a/.gitignore b/.gitignore index 2357d05..b876eb2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ # Package Files # *.jar +!gradle/**/*.jar *.war *.nar *.ear diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml index 8fff375..c1d7d10 100644 --- a/ballerina/Dependencies.toml +++ b/ballerina/Dependencies.toml @@ -296,18 +296,6 @@ modules = [ {org = "ballerina", packageName = "url", moduleName = "url"} ] -[[package]] -org = "ballerinai" -name = "observe" -version = "0.0.0" -dependencies = [ - {org = "ballerina", name = "jballerina.java"}, - {org = "ballerina", name = "observe"} -] -modules = [ - {org = "ballerinai", packageName = "observe", moduleName = "observe"} -] - [[package]] org = "ballerinax" name = "candid" @@ -316,8 +304,7 @@ dependencies = [ {org = "ballerina", name = "http"}, {org = "ballerina", name = "log"}, {org = "ballerina", name = "test"}, - {org = "ballerina", name = "url"}, - {org = "ballerinai", name = "observe"} + {org = "ballerina", name = "url"} ] modules = [ {org = "ballerinax", packageName = "candid", moduleName = "candid"}, diff --git a/ballerina/Module.md b/ballerina/Module.md index 77180f2..ae48fed 100644 --- a/ballerina/Module.md +++ b/ballerina/Module.md @@ -13,59 +13,55 @@ Currently, the following Candid.org APIs are supported through this module - Premier API - The Premier API is a more comprehensive API that provides access to a wider range of nonprofit data, including financial information, staffing data, grantmaking data, and DEI data. It is ideal for applications that need to deep dive into the data of individual nonprofits or perform complex analyses of nonprofit data. -The following sections provide details on how to use the JMS connector. - - - [Samples](#samples) - ## Samples ### Charity Check PDF API -The following Ballerina program returns `http:Response` for a PDF document. +The following Ballerina program generates a PDF report to validate nonprofit status and eligibility with a 100% IRS-compliant charity check. ```ballerina import ballerinax/candid.charitycheckpdf; charitycheckpdf:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; -charitycheckpdf:Client charitycheckpdfClient = check new charitycheckpdf:Client(apiKeyConfig); +charitycheckpdf:Client charitycheckpdf = check new charitycheckpdf:Client(apiKeyConfig); function getCharityCheckPDF() returns http:Response|error { - http:Response|error result = charitycheckpdfClient->/v1/pdf/["EMP-ID-NUM"]; + http:Response|error result = charitycheckpdf->/v1/pdf/["EMP-ID-NUM"]; return result; } ``` ### Essentials API -The following Ballerina program returns `V3EssentialsResponse` that contains basic information about nonprofits. +The following Ballerina program finds nonprofits using search criterias and explore essential information. ```ballerina import ballerinax/candid.essentials; essentials:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; -essentials:Client essentialsClient = check new essentials:Client(apiKeyConfig); +essentials:Client essentials = check new essentials:Client(apiKeyConfig); function getV3Essesntials() returns essentials:V3EssentialsResponse|error { essentials:V3Query query = { search_terms: "13-1837418" }; - essentials:V3EssentialsResponse|error result = essentialsClient->/v3.post(query); + essentials:V3EssentialsResponse|error result = essentials->/v3.post(query); return result; } ``` ### Premier API -The following Ballerina program returns `V3PublicProfile` that contains comprehensive information about nonprofits. +The following Ballerina program retrieves data on a nonprofit's financials, people, DEI, and IRS compliance validation for the given employer id number. ```ballerina import ballerinax/candid.premier; premier:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; -premier:Client premierClient = check new premier:Client(apiKeyConfig); +premier:Client premier = check new premier:Client(apiKeyConfig); function getV3Premier() returns V3PublicProfile|error { - premier:V3PublicProfile|error result = check premierClient->/v3/["EMP-ID-NUM"]; + premier:V3PublicProfile|error result = check premier->/v3/["EMP-ID-NUM"]; return result; } ``` diff --git a/ballerina/Package.md b/ballerina/Package.md index 3548c9a..3f27128 100644 --- a/ballerina/Package.md +++ b/ballerina/Package.md @@ -1,10 +1,10 @@ -## Package Overview +## Overview Candid.org is a non-profit organization that provides a comprehensive database of information about nonprofits, foundations, grantmakers, and philanthropists. Their mission is to connect people who want to change the world to the resources they need to do it. The `ballerinax/candid` package provides APIs to allow to access Candid's database that includes information on over 2 million nonprofits, including their mission, programs, finances, and leadership. And also provides information on over 100,000 foundations and grantmakers, as well as data on individual philanthropists. -Currently, the following Candid.org APIs are supported through this package +Currently, the following Candid.org APIs are supported through this module - Charity Check PDF API - The Charity Check PDF API is a powerful tool that allows to download formatted Charity Check PDF reports for individual nonprofits. @@ -13,59 +13,55 @@ Currently, the following Candid.org APIs are supported through this package - Premier API - The Premier API is a more comprehensive API that provides access to a wider range of nonprofit data, including financial information, staffing data, grantmaking data, and DEI data. It is ideal for applications that need to deep dive into the data of individual nonprofits or perform complex analyses of nonprofit data. -The following sections provide details on how to use the JMS connector. - - - [Samples](#samples) - ## Samples ### Charity Check PDF API -The following Ballerina program returns `http:Response` for a PDF document. +The following Ballerina program generates a PDF report to validate nonprofit status and eligibility with a 100% IRS-compliant charity check. ```ballerina import ballerinax/candid.charitycheckpdf; charitycheckpdf:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; -charitycheckpdf:Client charitycheckpdfClient = check new charitycheckpdf:Client(apiKeyConfig); +charitycheckpdf:Client charitycheckpdf = check new charitycheckpdf:Client(apiKeyConfig); function getCharityCheckPDF() returns http:Response|error { - http:Response|error result = charitycheckpdfClient->/v1/pdf/["EMP-ID-NUM"]; + http:Response|error result = charitycheckpdf->/v1/pdf/["EMP-ID-NUM"]; return result; } ``` ### Essentials API -The following Ballerina program returns `V3EssentialsResponse` that contains basic information about nonprofits. +The following Ballerina program finds nonprofits using search criterias and explore essential information. ```ballerina import ballerinax/candid.essentials; essentials:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; -essentials:Client essentialsClient = check new essentials:Client(apiKeyConfig); +essentials:Client essentials = check new essentials:Client(apiKeyConfig); function getV3Essesntials() returns essentials:V3EssentialsResponse|error { essentials:V3Query query = { search_terms: "13-1837418" }; - essentials:V3EssentialsResponse|error result = essentialsClient->/v3.post(query); + essentials:V3EssentialsResponse|error result = essentials->/v3.post(query); return result; } ``` ### Premier API -The following Ballerina program returns `V3PublicProfile` that contains comprehensive information about nonprofits. +The following Ballerina program retrieves data on a nonprofit's financials, people, DEI, and IRS compliance validation for the given employer id number. ```ballerina import ballerinax/candid.premier; premier:ApiKeysConfig apiKeyConfig = {subscriptionKey: "ENTER-THE-SUBSCRIPTION-KEY"}; -premier:Client premierClient = check new premier:Client(apiKeyConfig); +premier:Client premier = check new premier:Client(apiKeyConfig); function getV3Premier() returns V3PublicProfile|error { - premier:V3PublicProfile|error result = check premierClient->/v3/["EMP-ID-NUM"]; + premier:V3PublicProfile|error result = check premier->/v3/["EMP-ID-NUM"]; return result; } ``` diff --git a/ballerina/modules/charitycheckpdf/tests/test.bal b/ballerina/modules/charitycheckpdf/tests/test.bal index f5d8bfc..80ffaaf 100644 --- a/ballerina/modules/charitycheckpdf/tests/test.bal +++ b/ballerina/modules/charitycheckpdf/tests/test.bal @@ -3,16 +3,23 @@ import ballerina/log; import ballerina/http; +import ballerina/os; import ballerina/test; -configurable ApiKeysConfig & readonly apiKeyConfig = ?; -Client charityCheckPDFClient = check new Client(apiKeyConfig, serviceUrl = "https://apidata.guidestar.org/charitycheckpdf"); +configurable string apiKey = os:getEnv("CHARITYCHECKPDF_API_KEY"); + +const EIN = "13-1837418"; + +ApiKeysConfig apiKeyConfig = { + subscriptionKey: apiKey +}; +Client charityCheckPDF = check new Client(apiKeyConfig, serviceUrl = "https://apidata.guidestar.org/charitycheckpdf"); @test:Config { enable: false } function testCharitycheckpdf() returns error? { - log:printInfo("charityCheckPDFClient -> testCharitycheckpdf()"); - http:Response result = check charityCheckPDFClient->/v1/pdf/["13-1837418"]; + log:printInfo("charityCheckPDF -> testCharitycheckpdf()"); + http:Response result = check charityCheckPDF->/v1/pdf/[EIN]; test:assertEquals(result.getContentType(), "application/pdf"); } diff --git a/ballerina/modules/essentials/tests/test.bal b/ballerina/modules/essentials/tests/test.bal index 43c2608..ba7a264 100644 --- a/ballerina/modules/essentials/tests/test.bal +++ b/ballerina/modules/essentials/tests/test.bal @@ -2,38 +2,119 @@ // This file is auto-generated by the Ballerina OpenAPI tool. import ballerina/log; +import ballerina/os; import ballerina/test; -import ballerina/io; -configurable ApiKeysConfig & readonly apiKeyConfig = ?; -Client essentialsClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/essentials"); +configurable string apiKey = os:getEnv("ESSENTIALS_API_KEY"); -@test:Config {} -function testEssentialsV1() { +const SEARCH_TERM = "candid"; +const FILTER_NAME = "ntee_major"; +const KEY_OR_VALUE = "C00"; + +ApiKeysConfig apiKeyConfig = { + subscriptionKey: apiKey +}; +Client essentials = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/essentials"); + +@test:Config { + enable: false +} +function testEssentialsV1() returns error? { + log:printInfo("essentials -> testEssentialsV1()"); + Query query = { + search_terms: SEARCH_TERM + }; + V1EssentialsResponse result = check essentials->/v1.post(query); + V1EssentialsResponse_data? data = result?.data; + if data is V1EssentialsResponse_data { + V1EssentialsResponse_data_hits[]? hits = data?.hits; + if hits is V1EssentialsResponse_data_hits[] { + test:assertEquals(hits.length(), 25); + } else { + test:assertFail(); + } + } else { + test:assertFail(); + } } -@test:Config {} -function testEssentialsV2() { +@test:Config { + enable: false +} +function testEssentialsV2() returns error? { + log:printInfo("essentials -> testEssentialsV2()"); + Query query = { + search_terms: SEARCH_TERM + }; + V2EssentialsResponse result = check essentials->/v2.post(query); + V2EssentialsResponse_data? data = result?.data; + if data is V2EssentialsResponse_data { + V2EssentialsResponse_data_hits[]? hits = data?.hits; + if hits is V2EssentialsResponse_data_hits[] { + test:assertEquals(hits.length(), 25); + } else { + test:assertFail(); + } + } else { + test:assertFail(); + } } -@test:Config {} +@test:Config { + enable: false +} function testEssentialsV3() returns error? { - log:printInfo("essentialsClient -> testEssentialsV3()"); + log:printInfo("essentials -> testEssentialsV3()"); V3Query query = { - search_terms: "13-1837418" + search_terms: SEARCH_TERM }; - V3EssentialsResponse result = check essentialsClient->/v3.post(query); - io:println(result); + V3EssentialsResponse result = check essentials->/v3.post(query); + V3EssentialsResponse_hits[]? hits = result?.hits; + if hits is V3EssentialsResponse_hits[] { + test:assertEquals(hits.length(), 25); + } else { + test:assertFail(); + } } -@test:Config {} -function testEssentialsLookup() { +@test:Config { + enable: false +} +function testEssentialsLookup() returns error? { + log:printInfo("essentials -> testEssentialsLookup()"); + EssentialsLookupResponse result = check essentials->/lookup; + string[]? data = result?.data; + if data is string[] { + test:assertTrue(data.some(val => val == FILTER_NAME)); + } else { + test:assertFail(); + } } -@test:Config {} -function testEssentialsLookupFilterName() { +@test:Config { + enable: false +} +function testEssentialsLookupFilterName() returns error? { + log:printInfo("essentials -> testEssentialsLookupFilterName()"); + EssentialsFilteredLookupResponse result = check essentials->/lookup/[FILTER_NAME]; + EssentialsFilteredLookupResponse_data[]? data = result?.data; + if data is EssentialsFilteredLookupResponse_data[] { + test:assertTrue(data.some(val => val?.'key == KEY_OR_VALUE)); + } else { + test:assertFail(); + } } -@test:Config {} -isolated function testEssentialsLookupFilterNameKeyOrValue() { +@test:Config { + enable: false +} +function testEssentialsLookupFilterNameKeyOrValue() returns error? { + log:printInfo("essentials -> testEssentialsLookupFilterNameKeyOrValue()"); + EssentialsFilteredLookupResponse result = check essentials->/lookup/[FILTER_NAME]/[KEY_OR_VALUE]; + EssentialsFilteredLookupResponse_data[]? data = result?.data; + if data is EssentialsFilteredLookupResponse_data[] { + test:assertTrue(data.some(val => val?.'key == KEY_OR_VALUE)); + } else { + test:assertFail(); + } } diff --git a/ballerina/modules/essentials/types.bal b/ballerina/modules/essentials/types.bal index 7337c62..444059f 100644 --- a/ballerina/modules/essentials/types.bal +++ b/ballerina/modules/essentials/types.bal @@ -176,7 +176,7 @@ public type V3EssentialsResponse_geography record { # State (Abbreviation) of the organization's address string? state?; # Zip code of the organization's address - decimal? zip?; + decimal|string? zip?; # Metropolitan statistical area of the organization's adresss string? msa?; # Congressional district of the organization's address @@ -301,7 +301,7 @@ public type V2EssentialsResponse_data_hits record { # National Taxonomy of Exempt Entities string? ntee_code?; # GuideStar seal levels. - "bronze"|"silver"|"gold"|"platinum" profile_level?; + "BRONZE"|"SILVER"|"GOLD"|"PLATINUM"|"NONE" profile_level?; # GuideStar's public profile URL string? public_report?; # IRS subsection code of the organization @@ -587,7 +587,7 @@ public type V3EssentialsResponse_organization record { # Title of the primary contact at the organization string? contact_title?; # Number of employees at the organization - decimal? number_of_employees?; + decimal|string? number_of_employees?; # The year the IRS granted organization tax exempt status (a.k.a. Ruling Year) decimal? ruling_year?; }; @@ -631,7 +631,7 @@ public type V1EssentialsResponse_data_hits record { # National Taxonomy of Exempt Entities string? ntee_code?; # GuideStar seal levels. - "bronze"|"silver"|"gold"|"platinum" profile_level?; + "BRONZE"|"SILVER"|"GOLD"|"PLATINUM"|"NONE" profile_level?; # GuideStar's public profile URL string? public_report?; # IRS subsection code of the organization diff --git a/ballerina/modules/premier/tests/test.bal b/ballerina/modules/premier/tests/test.bal index c46df1d..4cf279d 100644 --- a/ballerina/modules/premier/tests/test.bal +++ b/ballerina/modules/premier/tests/test.bal @@ -2,31 +2,52 @@ // This file is auto-generated by the Ballerina OpenAPI tool. import ballerina/log; +import ballerina/http; +import ballerina/os; import ballerina/test; -import ballerina/io; -configurable ApiKeysConfig & readonly apiKeyConfig = ?; -Client premierClient = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/premier"); +configurable string apiKey = os:getEnv("PREMIER_API_KEY"); -@test:Config {} -function testPremierV1() { -} +const EIN = "13-1837418"; -@test:Config {} -function testPremierV1Propdf() { -} +ApiKeysConfig apiKeyConfig = { + subscriptionKey: apiKey +}; +Client premier = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/premier"); -@test:Config {} -function testPremierV1ftapdf() { +@test:Config { + enable: false +} +function testPremierV1Propdf() returns error? { + log:printInfo("premier -> testPremierV1Propdf()"); + http:Response result = check premier->/v1/propdf/[EIN]; + test:assertEquals(result.getContentType(), "application/pdf"); } -@test:Config {} -function testPremierV2() { +@test:Config { + enable: false +} +function testPremierV1ftapdf() returns error? { + log:printInfo("premier -> testPremierV1ftapdf()"); + http:Response result = check premier->/v1/ftapdf/[EIN]; + test:assertEquals(result.getContentType(), "application/pdf"); } -@test:Config {} +@test:Config { + enable: false +} function testPremierV3() returns error? { - log:printInfo("premierClient -> testPremierV3()"); - V3PublicProfile result = check premierClient->/v3/["13-1837418"]; - io:println(result); + log:printInfo("premier -> testPremierV3()"); + V3PublicProfile result = check premier->/v3/[EIN]; + V3PublicProfile_data? data = result?.data; + if data is V3PublicProfile_data { + Summary3? summary = data?.summary; + if summary is Summary3 { + test:assertEquals(summary?.ein, EIN); + } else { + test:assertFail(); + } + } else { + test:assertFail(); + } } diff --git a/docs/CharityCheckPdf_v1.0.json b/docs/CharityCheckPdf_v1.0.json index 239c736..4a99dc4 100644 --- a/docs/CharityCheckPdf_v1.0.json +++ b/docs/CharityCheckPdf_v1.0.json @@ -1,285 +1,284 @@ { - "openapi":"3.0.1", - "info":{ - "title":"CharityCheckPdf", - "description":"This end-point will allow you to retrieve organization's Charity Check information in PDF format. API returns the byte stream.", - "version":"1.0" - }, - "servers":[ - { - "url":"https://apidata.guidestar.org/charitycheckpdf" - }, - { - "url":"https://api.candid.org/charitycheckpdf" - } - ], - "paths":{ - "/v1/pdf/{ein}":{ - "get":{ - "summary":"/charitycheckpdf/v1/pdf", - "description":"Generate a PDF report to validate nonprofit status and eligibility with a 100% IRS-compliant charity check.", - "operationId":"charitycheckpdf_v1", - "parameters":[ - { - "name":"ein", - "in":"path", - "description":"Employer Identification Number.", - "example":"13-1837418", - "required":true, - "schema":{ - "type":"string", - "default":"13-1837418" - } - } - ], - "responses":{ - "200":{ - "description":"OK", - "content":{ - "application/pdf":{ - "schema":{ - "type":"object", - "description":"PDF containing charity check information for the organization with the given ein" - } - } - } - }, - "400":{ - "description":"Bad Request", - "content":{ - "application/json":{ - "schema":{ - "$ref":"#/components/schemas/BadRequest" - } - }, - "text/json":{ - "schema":{ - "$ref":"#/components/schemas/BadRequest" - } - } - } - }, - "401":{ - "description":"Unauthorized", - "content":{ - "application/json":{ - "schema":{ - "$ref":"#/components/schemas/Unauthorized" - } - }, - "text/json":{ - "schema":{ - "$ref":"#/components/schemas/Unauthorized" - } - } - } - }, - "403":{ - "description":"Forbidden", - "content":{ - "application/json":{ - "schema":{ - "$ref":"#/components/schemas/Forbidden" - } - }, - "text/json":{ - "schema":{ - "$ref":"#/components/schemas/Forbidden" - } - } - } - }, - "404":{ - "description":"No Results Found", - "content":{ - "application/json":{ - "schema":{ - "$ref":"#/components/schemas/NotFound" - } - }, - "text/json":{ - "schema":{ - "$ref":"#/components/schemas/NotFound" - } - } - } - }, - "406":{ - "description":"Not Acceptable", - "content":{ - "application/json":{ - "schema":{ - "$ref":"#/components/schemas/NotAcceptable" - } - }, - "text/json":{ - "schema":{ - "$ref":"#/components/schemas/NotAcceptable" - } - } - } - }, - "429":{ - "description":"Too Many Requests", - "content":{ - "application/json":{ - "schema":{ - "$ref":"#/components/schemas/TooManyRequests" - } - }, - "text/json":{ - "schema":{ - "$ref":"#/components/schemas/TooManyRequests" - } - } - } - }, - "500":{ - "description":"Internal Server Error", - "content":{ - "application/json":{ - "schema":{ - "$ref":"#/components/schemas/InternalServerError" - } - }, - "text/json":{ - "schema":{ - "$ref":"#/components/schemas/InternalServerError" - } - } - } - } - } - } - } - }, - "components":{ - "schemas":{ - "BadRequest":{ - "type":"object", - "properties":{ - "code":{ - "type":"string", - "description":"HTTP response status code.", - "example":400 - }, - "message":{ - "type":"string", - "description":"Diagnostic message for response status", - "example":"The request cannot be fulfilled due to bad syntax." - } - } - }, - "Unauthorized":{ - "type":"object", - "properties":{ - "code":{ - "type":"string", - "description":"HTTP response status code.", - "example":401 - }, - "message":{ - "type":"string", - "description":"Diagnostic message for response status", - "example":"Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." - } - } - }, - "Forbidden":{ - "type":"object", - "properties":{ - "code":{ - "type":"string", - "description":"HTTP response status code.", - "example":403 - }, - "message":{ - "type":"string", - "description":"Diagnostic message for response status", - "example":"Forbidden, we found insufficient permissions to grant access to the resources. Please check the detailed message of the response." - } - } - }, - "NotFound":{ - "type":"object", - "properties":{ - "code":{ - "type":"string", - "description":"HTTP response status code.", - "example":404 - }, - "message":{ - "type":"string", - "description":"Diagnostic message for response status", - "example":"Request was processed successfully but we could not find the resource ein" - } - } - }, - "NotAcceptable":{ - "type":"object", - "properties":{ - "code":{ - "type":"string", - "description":"HTTP response status code.", - "example":406 - }, - "message":{ - "type":"string", - "description":"Diagnostic message for response status", - "example":"The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request." - } - } - }, - "TooManyRequests":{ - "type":"object", - "properties":{ - "code":{ - "type":"string", - "description":"HTTP response status code.", - "example":429 - }, - "message":{ - "type":"string", - "description":"Diagnostic message for response status", - "example":"Rate limit is exceeded. Try again later." - } - } - }, - "InternalServerError":{ - "type":"object", - "properties":{ - "code":{ - "type":"string", - "description":"HTTP response status code.", - "example":500 - }, - "message":{ - "type":"string", - "description":"Diagnostic message for response status", - "example":"Oh no!, this is bad, something went wrong... please contact API support!" - } - } - } - }, - "securitySchemes":{ - "apiKeyHeader":{ - "type":"apiKey", - "name":"Subscription-Key", - "in":"header" - } - } - }, - "security":[ - { - "apiKeyHeader":[ - - ] - } - ], - "x-readme":{ - "explorer-enabled":true, - "proxy-enabled":true, - "samples-enabled":true - } - } - \ No newline at end of file + "openapi":"3.0.1", + "info":{ + "title":"CharityCheckPdf", + "description":"This end-point will allow you to retrieve organization's Charity Check information in PDF format. API returns the byte stream.", + "version":"1.0" + }, + "servers":[ + { + "url":"https://apidata.guidestar.org/charitycheckpdf" + }, + { + "url":"https://api.candid.org/charitycheckpdf" + } + ], + "paths":{ + "/v1/pdf/{ein}":{ + "get":{ + "summary":"/charitycheckpdf/v1/pdf", + "description":"Generate a PDF report to validate nonprofit status and eligibility with a 100% IRS-compliant charity check.", + "operationId":"charitycheckpdf_v1", + "parameters":[ + { + "name":"ein", + "in":"path", + "description":"Employer Identification Number.", + "example":"13-1837418", + "required":true, + "schema":{ + "type":"string", + "default":"13-1837418" + } + } + ], + "responses":{ + "200":{ + "description":"OK", + "content":{ + "application/pdf":{ + "schema":{ + "type":"object", + "description":"PDF containing charity check information for the organization with the given ein" + } + } + } + }, + "400":{ + "description":"Bad Request", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/BadRequest" + } + } + } + }, + "401":{ + "description":"Unauthorized", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Unauthorized" + } + } + } + }, + "403":{ + "description":"Forbidden", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/Forbidden" + } + } + } + }, + "404":{ + "description":"No Results Found", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotFound" + } + } + } + }, + "406":{ + "description":"Not Acceptable", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/NotAcceptable" + } + } + } + }, + "429":{ + "description":"Too Many Requests", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/TooManyRequests" + } + } + } + }, + "500":{ + "description":"Internal Server Error", + "content":{ + "application/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + }, + "text/json":{ + "schema":{ + "$ref":"#/components/schemas/InternalServerError" + } + } + } + } + } + } + } + }, + "components":{ + "schemas":{ + "BadRequest":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":400 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"The request cannot be fulfilled due to bad syntax." + } + } + }, + "Unauthorized":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":401 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." + } + } + }, + "Forbidden":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":403 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Forbidden, we found insufficient permissions to grant access to the resources. Please check the detailed message of the response." + } + } + }, + "NotFound":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":404 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Request was processed successfully but we could not find the resource ein" + } + } + }, + "NotAcceptable":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":406 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request." + } + } + }, + "TooManyRequests":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":429 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Rate limit is exceeded. Try again later." + } + } + }, + "InternalServerError":{ + "type":"object", + "properties":{ + "code":{ + "type":"string", + "description":"HTTP response status code.", + "example":500 + }, + "message":{ + "type":"string", + "description":"Diagnostic message for response status", + "example":"Oh no!, this is bad, something went wrong... please contact API support!" + } + } + } + }, + "securitySchemes":{ + "apiKeyHeader":{ + "type":"apiKey", + "name":"Subscription-Key", + "in":"header" + } + } + }, + "security":[ + { + "apiKeyHeader":[ + + ] + } + ], + "x-readme":{ + "explorer-enabled":true, + "proxy-enabled":true, + "samples-enabled":true + } +} diff --git a/docs/Essentials_v1.0.json b/docs/Essentials_v1.0.json index fa2f550..a513fa0 100644 --- a/docs/Essentials_v1.0.json +++ b/docs/Essentials_v1.0.json @@ -1554,12 +1554,13 @@ "type":"string", "description":"GuideStar seal levels.", "enum":[ - "bronze", - "silver", - "gold", - "platinum" + "BRONZE", + "SILVER", + "GOLD", + "PLATINUM", + "NONE" ], - "example":"bronze" + "example":"BRONZE" }, "public_report":{ "type":"string", @@ -1825,12 +1826,13 @@ "type":"string", "description":"GuideStar seal levels.", "enum":[ - "bronze", - "silver", - "gold", - "platinum" + "BRONZE", + "SILVER", + "GOLD", + "PLATINUM", + "NONE" ], - "example":"bronze" + "example":"BRONZE" }, "public_report":{ "type":"string", @@ -2118,7 +2120,10 @@ "example":"Support lead" }, "number_of_employees":{ - "type":"number", + "oneOf": [ + { "type": "number" }, + { "type": "string" } + ], "description":"Number of employees at the organization", "example":55 }, @@ -2238,7 +2243,10 @@ "example":"NY" }, "zip":{ - "type":"number", + "oneOf": [ + { "type": "number" }, + { "type": "string" } + ], "description":"Zip code of the organization's address", "example":10005 }, @@ -2666,4 +2674,4 @@ "proxy-enabled":true, "samples-enabled":true } -} \ No newline at end of file +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0419a89..9f4197d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -4,4 +4,4 @@ distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists \ No newline at end of file +zipStorePath=wrapper/dists From 1ae331b9c36460d71748914cb40c62b753b0afcc Mon Sep 17 00:00:00 2001 From: Azeem Muzammil Date: Tue, 14 Nov 2023 17:52:28 +0530 Subject: [PATCH 4/7] Disable tests in workflows --- .github/workflows/ci.yml | 1 + .github/workflows/daily-build.yml | 1 + .github/workflows/pull-request.yml | 2 ++ ballerina/Dependencies.toml | 4 ++++ .../modules/charitycheckpdf/tests/test.bal | 4 +--- ballerina/modules/essentials/tests/test.bal | 24 +++++-------------- ballerina/modules/premier/tests/test.bal | 12 +++------- 7 files changed, 18 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c8c25ac..097e713 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,3 +17,4 @@ jobs: with: repo-name: module-ballerinax-candid publish-required: 'true' + additional-test-flags: -x test diff --git a/.github/workflows/daily-build.yml b/.github/workflows/daily-build.yml index 17a22c4..97b328e 100644 --- a/.github/workflows/daily-build.yml +++ b/.github/workflows/daily-build.yml @@ -12,3 +12,4 @@ jobs: secrets: inherit with: repo-name: module-ballerinax-candid + additional-test-flags: -x test diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 5dda019..8fe0285 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -12,3 +12,5 @@ jobs: if: ${{ github.repository_owner == 'ballerina-platform' }} uses: ballerina-platform/ballerina-standard-library/.github/workflows/pr-build-connector-template.yml@main secrets: inherit + with: + additional-test-flags: -x test diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml index c1d7d10..9aff492 100644 --- a/ballerina/Dependencies.toml +++ b/ballerina/Dependencies.toml @@ -254,6 +254,9 @@ dependencies = [ {org = "ballerina", name = "io"}, {org = "ballerina", name = "jballerina.java"} ] +modules = [ + {org = "ballerina", packageName = "os", moduleName = "os"} +] [[package]] org = "ballerina" @@ -303,6 +306,7 @@ version = "0.1.0" dependencies = [ {org = "ballerina", name = "http"}, {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, {org = "ballerina", name = "test"}, {org = "ballerina", name = "url"} ] diff --git a/ballerina/modules/charitycheckpdf/tests/test.bal b/ballerina/modules/charitycheckpdf/tests/test.bal index 80ffaaf..79194e7 100644 --- a/ballerina/modules/charitycheckpdf/tests/test.bal +++ b/ballerina/modules/charitycheckpdf/tests/test.bal @@ -15,9 +15,7 @@ ApiKeysConfig apiKeyConfig = { }; Client charityCheckPDF = check new Client(apiKeyConfig, serviceUrl = "https://apidata.guidestar.org/charitycheckpdf"); -@test:Config { - enable: false -} +@test:Config function testCharitycheckpdf() returns error? { log:printInfo("charityCheckPDF -> testCharitycheckpdf()"); http:Response result = check charityCheckPDF->/v1/pdf/[EIN]; diff --git a/ballerina/modules/essentials/tests/test.bal b/ballerina/modules/essentials/tests/test.bal index ba7a264..47cbbbf 100644 --- a/ballerina/modules/essentials/tests/test.bal +++ b/ballerina/modules/essentials/tests/test.bal @@ -16,9 +16,7 @@ ApiKeysConfig apiKeyConfig = { }; Client essentials = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/essentials"); -@test:Config { - enable: false -} +@test:Config function testEssentialsV1() returns error? { log:printInfo("essentials -> testEssentialsV1()"); Query query = { @@ -38,9 +36,7 @@ function testEssentialsV1() returns error? { } } -@test:Config { - enable: false -} +@test:Config function testEssentialsV2() returns error? { log:printInfo("essentials -> testEssentialsV2()"); Query query = { @@ -60,9 +56,7 @@ function testEssentialsV2() returns error? { } } -@test:Config { - enable: false -} +@test:Config function testEssentialsV3() returns error? { log:printInfo("essentials -> testEssentialsV3()"); V3Query query = { @@ -77,9 +71,7 @@ function testEssentialsV3() returns error? { } } -@test:Config { - enable: false -} +@test:Config function testEssentialsLookup() returns error? { log:printInfo("essentials -> testEssentialsLookup()"); EssentialsLookupResponse result = check essentials->/lookup; @@ -91,9 +83,7 @@ function testEssentialsLookup() returns error? { } } -@test:Config { - enable: false -} +@test:Config function testEssentialsLookupFilterName() returns error? { log:printInfo("essentials -> testEssentialsLookupFilterName()"); EssentialsFilteredLookupResponse result = check essentials->/lookup/[FILTER_NAME]; @@ -105,9 +95,7 @@ function testEssentialsLookupFilterName() returns error? { } } -@test:Config { - enable: false -} +@test:Config function testEssentialsLookupFilterNameKeyOrValue() returns error? { log:printInfo("essentials -> testEssentialsLookupFilterNameKeyOrValue()"); EssentialsFilteredLookupResponse result = check essentials->/lookup/[FILTER_NAME]/[KEY_OR_VALUE]; diff --git a/ballerina/modules/premier/tests/test.bal b/ballerina/modules/premier/tests/test.bal index 4cf279d..b65ebe9 100644 --- a/ballerina/modules/premier/tests/test.bal +++ b/ballerina/modules/premier/tests/test.bal @@ -15,27 +15,21 @@ ApiKeysConfig apiKeyConfig = { }; Client premier = check new Client(apiKeyConfig, serviceUrl = "https://api.candid.org/premier"); -@test:Config { - enable: false -} +@test:Config function testPremierV1Propdf() returns error? { log:printInfo("premier -> testPremierV1Propdf()"); http:Response result = check premier->/v1/propdf/[EIN]; test:assertEquals(result.getContentType(), "application/pdf"); } -@test:Config { - enable: false -} +@test:Config function testPremierV1ftapdf() returns error? { log:printInfo("premier -> testPremierV1ftapdf()"); http:Response result = check premier->/v1/ftapdf/[EIN]; test:assertEquals(result.getContentType(), "application/pdf"); } -@test:Config { - enable: false -} +@test:Config function testPremierV3() returns error? { log:printInfo("premier -> testPremierV3()"); V3PublicProfile result = check premier->/v3/[EIN]; From d1447388e2c609014f8cb98be1cc5b8ec8101fe7 Mon Sep 17 00:00:00 2001 From: Azeem Muzammil Date: Tue, 14 Nov 2023 18:32:55 +0530 Subject: [PATCH 5/7] Add license header --- ballerina/Ballerina.toml | 2 +- ballerina/modules/charitycheckpdf/client.bal | 17 +++++++++++++++-- .../modules/charitycheckpdf/tests/test.bal | 17 +++++++++++++++-- ballerina/modules/charitycheckpdf/types.bal | 17 +++++++++++++++-- ballerina/modules/charitycheckpdf/utils.bal | 17 +++++++++++++++-- ballerina/modules/essentials/client.bal | 17 +++++++++++++++-- ballerina/modules/essentials/tests/test.bal | 17 +++++++++++++++-- ballerina/modules/essentials/types.bal | 17 +++++++++++++++-- ballerina/modules/essentials/utils.bal | 17 +++++++++++++++-- ballerina/modules/premier/client.bal | 17 +++++++++++++++-- ballerina/modules/premier/tests/test.bal | 17 +++++++++++++++-- ballerina/modules/premier/types.bal | 17 +++++++++++++++-- ballerina/modules/premier/utils.bal | 17 +++++++++++++++-- 13 files changed, 181 insertions(+), 25 deletions(-) diff --git a/ballerina/Ballerina.toml b/ballerina/Ballerina.toml index 26bf481..5f6b0ad 100644 --- a/ballerina/Ballerina.toml +++ b/ballerina/Ballerina.toml @@ -4,7 +4,7 @@ name = "candid" version = "0.1.0" authors = ["Ballerina"] export = ["candid.charitycheckpdf", "candid.essentials", "candid.premier"] -keywords = ["candid", "nonprofit", "philanthropy"] +keywords = ["Candid", "Nonprofit Data", "Philanthropy Data", "Nonprofit APIs"] repository = "https://github.com/ballerina-platform/module-ballerinax-candid" icon = "icon.png" license = ["Apache-2.0"] diff --git a/ballerina/modules/charitycheckpdf/client.bal b/ballerina/modules/charitycheckpdf/client.bal index cc14118..bdd158e 100644 --- a/ballerina/modules/charitycheckpdf/client.bal +++ b/ballerina/modules/charitycheckpdf/client.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/http; diff --git a/ballerina/modules/charitycheckpdf/tests/test.bal b/ballerina/modules/charitycheckpdf/tests/test.bal index 79194e7..2443876 100644 --- a/ballerina/modules/charitycheckpdf/tests/test.bal +++ b/ballerina/modules/charitycheckpdf/tests/test.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/log; import ballerina/http; diff --git a/ballerina/modules/charitycheckpdf/types.bal b/ballerina/modules/charitycheckpdf/types.bal index 954e208..e4cbc81 100644 --- a/ballerina/modules/charitycheckpdf/types.bal +++ b/ballerina/modules/charitycheckpdf/types.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/http; diff --git a/ballerina/modules/charitycheckpdf/utils.bal b/ballerina/modules/charitycheckpdf/utils.bal index e8d07cd..b93b5ed 100644 --- a/ballerina/modules/charitycheckpdf/utils.bal +++ b/ballerina/modules/charitycheckpdf/utils.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/url; diff --git a/ballerina/modules/essentials/client.bal b/ballerina/modules/essentials/client.bal index d3ce077..3a032b3 100644 --- a/ballerina/modules/essentials/client.bal +++ b/ballerina/modules/essentials/client.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/http; diff --git a/ballerina/modules/essentials/tests/test.bal b/ballerina/modules/essentials/tests/test.bal index 47cbbbf..7bc9390 100644 --- a/ballerina/modules/essentials/tests/test.bal +++ b/ballerina/modules/essentials/tests/test.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/log; import ballerina/os; diff --git a/ballerina/modules/essentials/types.bal b/ballerina/modules/essentials/types.bal index 444059f..2fff0f3 100644 --- a/ballerina/modules/essentials/types.bal +++ b/ballerina/modules/essentials/types.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/http; diff --git a/ballerina/modules/essentials/utils.bal b/ballerina/modules/essentials/utils.bal index e8d07cd..b93b5ed 100644 --- a/ballerina/modules/essentials/utils.bal +++ b/ballerina/modules/essentials/utils.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/url; diff --git a/ballerina/modules/premier/client.bal b/ballerina/modules/premier/client.bal index 62e7453..f29930f 100644 --- a/ballerina/modules/premier/client.bal +++ b/ballerina/modules/premier/client.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/http; diff --git a/ballerina/modules/premier/tests/test.bal b/ballerina/modules/premier/tests/test.bal index b65ebe9..2821936 100644 --- a/ballerina/modules/premier/tests/test.bal +++ b/ballerina/modules/premier/tests/test.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/log; import ballerina/http; diff --git a/ballerina/modules/premier/types.bal b/ballerina/modules/premier/types.bal index fefab62..d11263f 100644 --- a/ballerina/modules/premier/types.bal +++ b/ballerina/modules/premier/types.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/http; diff --git a/ballerina/modules/premier/utils.bal b/ballerina/modules/premier/utils.bal index e8d07cd..b93b5ed 100644 --- a/ballerina/modules/premier/utils.bal +++ b/ballerina/modules/premier/utils.bal @@ -1,5 +1,18 @@ -// AUTO-GENERATED FILE. DO NOT MODIFY. -// This file is auto-generated by the Ballerina OpenAPI tool. +// Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. import ballerina/url; From 66c913e1de31621bb220849abbf9bcb3372041f0 Mon Sep 17 00:00:00 2001 From: Azeem Muzammil Date: Tue, 14 Nov 2023 18:35:41 +0530 Subject: [PATCH 6/7] Update license header to include auto generated text --- ballerina/modules/charitycheckpdf/client.bal | 3 +++ ballerina/modules/charitycheckpdf/tests/test.bal | 3 +++ ballerina/modules/charitycheckpdf/types.bal | 3 +++ ballerina/modules/charitycheckpdf/utils.bal | 3 +++ ballerina/modules/essentials/client.bal | 3 +++ ballerina/modules/essentials/tests/test.bal | 3 +++ ballerina/modules/essentials/types.bal | 3 +++ ballerina/modules/essentials/utils.bal | 3 +++ ballerina/modules/premier/client.bal | 3 +++ ballerina/modules/premier/tests/test.bal | 3 +++ ballerina/modules/premier/types.bal | 3 +++ ballerina/modules/premier/utils.bal | 3 +++ 12 files changed, 36 insertions(+) diff --git a/ballerina/modules/charitycheckpdf/client.bal b/ballerina/modules/charitycheckpdf/client.bal index bdd158e..86a3cce 100644 --- a/ballerina/modules/charitycheckpdf/client.bal +++ b/ballerina/modules/charitycheckpdf/client.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/charitycheckpdf/tests/test.bal b/ballerina/modules/charitycheckpdf/tests/test.bal index 2443876..8220674 100644 --- a/ballerina/modules/charitycheckpdf/tests/test.bal +++ b/ballerina/modules/charitycheckpdf/tests/test.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/charitycheckpdf/types.bal b/ballerina/modules/charitycheckpdf/types.bal index e4cbc81..54b24f3 100644 --- a/ballerina/modules/charitycheckpdf/types.bal +++ b/ballerina/modules/charitycheckpdf/types.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/charitycheckpdf/utils.bal b/ballerina/modules/charitycheckpdf/utils.bal index b93b5ed..e7edd59 100644 --- a/ballerina/modules/charitycheckpdf/utils.bal +++ b/ballerina/modules/charitycheckpdf/utils.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/essentials/client.bal b/ballerina/modules/essentials/client.bal index 3a032b3..a738e5a 100644 --- a/ballerina/modules/essentials/client.bal +++ b/ballerina/modules/essentials/client.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/essentials/tests/test.bal b/ballerina/modules/essentials/tests/test.bal index 7bc9390..d76e240 100644 --- a/ballerina/modules/essentials/tests/test.bal +++ b/ballerina/modules/essentials/tests/test.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/essentials/types.bal b/ballerina/modules/essentials/types.bal index 2fff0f3..ed9357e 100644 --- a/ballerina/modules/essentials/types.bal +++ b/ballerina/modules/essentials/types.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/essentials/utils.bal b/ballerina/modules/essentials/utils.bal index b93b5ed..e7edd59 100644 --- a/ballerina/modules/essentials/utils.bal +++ b/ballerina/modules/essentials/utils.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/premier/client.bal b/ballerina/modules/premier/client.bal index f29930f..1cc4563 100644 --- a/ballerina/modules/premier/client.bal +++ b/ballerina/modules/premier/client.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/premier/tests/test.bal b/ballerina/modules/premier/tests/test.bal index 2821936..565f980 100644 --- a/ballerina/modules/premier/tests/test.bal +++ b/ballerina/modules/premier/tests/test.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/premier/types.bal b/ballerina/modules/premier/types.bal index d11263f..654cdff 100644 --- a/ballerina/modules/premier/types.bal +++ b/ballerina/modules/premier/types.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, diff --git a/ballerina/modules/premier/utils.bal b/ballerina/modules/premier/utils.bal index b93b5ed..e7edd59 100644 --- a/ballerina/modules/premier/utils.bal +++ b/ballerina/modules/premier/utils.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2023 WSO2 LLC. (http://www.wso2.org) All Rights Reserved. // // WSO2 LLC. licenses this file to you under the Apache License, From 0575cc2b3765b57fce4865e35f5253e0570a6cf9 Mon Sep 17 00:00:00 2001 From: Azeem Muzammil Date: Tue, 14 Nov 2023 18:36:50 +0530 Subject: [PATCH 7/7] Update keywords --- build-config/resources/Ballerina.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-config/resources/Ballerina.toml b/build-config/resources/Ballerina.toml index fa8cd55..b31e558 100644 --- a/build-config/resources/Ballerina.toml +++ b/build-config/resources/Ballerina.toml @@ -4,7 +4,7 @@ name = "candid" version = "@toml.version@" authors = ["Ballerina"] export = ["candid.charitycheckpdf", "candid.essentials", "candid.premier"] -keywords = ["candid", "nonprofit", "philanthropy"] +keywords = ["Candid", "Nonprofit Data", "Philanthropy Data", "Nonprofit APIs"] repository = "https://github.com/ballerina-platform/module-ballerinax-candid" icon = "icon.png" license = ["Apache-2.0"]