defmodule Dealcloud.Schema do @moduledoc """ Schema tells you information about your site and about the system. Use these APIs to discover things you need to know about configurations that are possible as well as what's currently implemented """ alias Dealcloud.Impl.Schema @doc """ These are the system Information APIs Returns all currencies supported by the system Schema.currencies(%Auth{}) """ @spec get_currencies(Dealcloud.Auth.t()) :: any defdelegate get_currencies(config), to: Schema.Currencies, as: :get @doc """ Returns information about all the filters supported by the data apis Schema.get_filters(%Auth{}) """ @spec get_filters(Dealcloud.Auth.t()) :: any defdelegate get_filters(config), to: Schema.FilterOperations, as: :get @doc """ Returns information about all the system entry types Schema.get_system_entry_type(%Auth{}) """ @spec get_system_entry_type(Dealcloud.Auth.t()) :: any defdelegate get_system_entry_type(config), to: Schema.SystemEntryTypes, as: :get @doc """ Returns information about field types. This information is helpful when looking at the entry type fields. Fields configured can be any of the fields returned by the endpoint Schema.get_system_entry_type(%Auth{}) """ @spec get_field_types(Dealcloud.Auth.t()) :: any defdelegate get_field_types(config), to: Schema.FieldTypes, as: :get @doc """ Returns information about all the system field types Schema.get_system_field_type(%Auth{}) """ @spec get_system_field_type(Dealcloud.Auth.t()) :: any defdelegate get_system_field_type(config), to: Schema.SystemFieldTypes, as: :get @doc """ Returns information about all timezones supported by the system Schema.get_time_zone(%Auth{}) """ @spec get_time_zone(Dealcloud.Auth.t()) :: any defdelegate get_time_zone(config), to: Schema.TimeZones, as: :get @doc """ These are the site Information APIs Returns information about all entry types configured in the site Schema.get_entry_types(%Auth{}) """ @spec get_entry_types(Dealcloud.Auth.t()) :: any defdelegate get_entry_types(config), to: Schema.EntryTypes, as: :get @doc """ Returns information about specific entry type Schema.get_entry_types("company", %Auth{}) Schema.get_entry_types(2011, %Auth{}) """ @spec get_entry_type(binary | integer, Dealcloud.Auth.t()) :: any defdelegate get_entry_type(entryType, config), to: Schema.EntryTypes, as: :get @doc """ Returns fields for a specific entry type Schema.get_entry_fields("company", %Auth{}) Schema.get_entry_fields(2011, %Auth{}) """ @spec get_entry_fields(binary | integer, Dealcloud.Auth.t()) :: any defdelegate get_entry_fields(entryType, config), to: Schema.EntryTypes, as: :fields @doc """ Returns all fields from the site. Use this sparingly, this is heavy operation only needed when generating full site schema. Schema.get_entry_fields("company", %Auth{}) Schema.get_entry_fields(2011, %Auth{}) """ @spec get_all_fields(Dealcloud.Auth.t()) :: any defdelegate get_all_fields(config), to: Schema.AllFields, as: :get @doc """ Returns information of a field. Requires the numerical ID of the field Schema.get_field(3, %Auth{}) """ @spec get_field(integer, Dealcloud.Auth.t()) :: any defdelegate get_field(fieldId, config), to: Schema.Fields @doc """ Returns information of a selection of fields passed in as query params Schema.get_fields([3,4,5], %Auth{}) """ @spec get_fields(list(integer), Dealcloud.Auth.t()) :: any defdelegate get_fields(fields, config), to: Schema.Fields @doc """ Returns all users in the site. Schema.get_field(%Auth{}) """ @spec get_users(Dealcloud.Auth.t()) :: any defdelegate get_users(config), to: Schema.Users, as: :get @doc """ Returns all users in the site filtered by ativeOnly filter Schema.get_field(%{"activeOnly" => "true"}, %Auth{}) """ @spec get_users(map(), Dealcloud.Auth.t()) :: any defdelegate get_users(params, config), to: Schema.Users, as: :get @doc """ Appends new choice values to choice fields Schema.create_choices(["Active", "Inactive"], %Auth{}) """ @spec create_choices(integer, list(binary), Dealcloud.Auth.t()) :: any defdelegate create_choices(fieldId, choices, config), to: Schema.ChoiceFieldValues, as: :post end