schema { query: RootQuery mutation: RootMutation } directive @doc(category: String!) on FIELD_DEFINITION enum ACL { """ private """ private """ public (read only) """ public } input ActiveRecordReference { id: ID ids: [ID] type: String! } input ActivitiesSortInput { created_at: StandardSort id: StandardSort updated_at: StandardSort } type ActivityStreamsActivity { id: ID! payload: ActivityStreamsPayload uuid: String! } type ActivityStreamsActivityCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [ActivityStreamsActivity!] total_entries: Int! total_pages: Int! } type ActivityStreamsActivityStreamCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [ActivityStreamsActivity!] total_entries: Int! total_pages: Int! unread_count: Int! } type ActivityStreamsFeed { ids: [ID!] name: String } type ActivityStreamsHandler { filter: ActivityStreamsPayload id: ID! name: String targets: ActivityStreamsPayload } type ActivityStreamsHandlerCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [ActivityStreamsHandler!] total_entries: Int! total_pages: Int! } """ Represents ActivityPayload objects """ scalar ActivityStreamsPayload input AddressImport { address: String address2: String apartment: String city: String country: String iso_country_code: String lat: Float lng: Float """ name of the defined property """ name: String! postcode: String service_radius: String state: String street: String street_number: String suburb: String } interface AdminNonDeployableSharedAttributesInterface { created_at: JSONDate! id: ID! updated_at: JSONDate! } interface AdminPropertiesInterface { """ Deprecated, use properties instead. """ fields: [Property!]! @deprecated(reason: "Use properties") """ List of properties attributes to be included in the results """ properties: [Property!]! } interface AdminSharedAttributesInterface { created_at: JSONDate! id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ defines the physical path of the file """ physical_file_path: String updated_at: JSONDate! } input AggregationField { aggregations: [AggregationField] customization_name: String customization_property_name: String field_name: String name: String! profile_property_name: String profile_type: String size: Int = 200 """ sort buckets; default is by doc-count descending """ sort: AggregationSort type: AggregationTypeEnum = terms } input AggregationSort { name: AggregationSortFieldEnum = _term order: AggregationSortOrderEnum = asc } enum AggregationSortFieldEnum { """ document count sort """ _count """ alpha sort """ _term } enum AggregationSortOrderEnum { """ ascending """ asc """ descending """ desc } enum AggregationTypeEnum { """ A single-value metrics aggregation that keeps track and returns the average value among the values extracted from the aggregated documents. """ avg """ A single-value metrics aggregation that keeps track and returns the maximum value among the values extracted from the aggregated documents. """ max """ A single-value metrics aggregation that keeps track and returns the minimum value among the values extracted from the aggregated documents. """ min """ A multi-bucket value source based aggregation where buckets are dynamically built - one per unique value. """ terms } type Aggregations { compact: JSONPayload raw: JSONPayload } """ Could be any of String Number Object Date and so on. Anytype """ scalar Any """ ApiCall Notification """ type ApiCallNotification implements AdminSharedAttributesInterface { """ liquid code which can be used to process the response from the endpoint. You have access to "response" variable. """ callback: String """ liquid code to evaluate to whatever you want to send, for example a JSON. """ content: String created_at: JSONDate! """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String """ form configurations which trigger the email """ form_configurations: [FormConfiguration!] @deprecated(reason: "use forms") """ forms which trigger the email """ forms: [Form!] """ liquid code to evaluate to valid json of request headers """ headers: String id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ name of the api call, which is used in form_configurations or mutation to trigger it """ name: String! """ defines the physical path of the file """ physical_file_path: String """ Liquid code which should evaluate to valid request type: Get, Post, Put, Patch, Delete, Head or if you want to send binary files: Post_Multipart, Put_Multipart, Patch_Multipart """ request_type: String! """ liquid code to evaluate to valid endpoint for the request. """ to: String! """ liquid code which should evaluate to true if the api call should be sent """ trigger_condition: String updated_at: JSONDate! } type ApiCallNotificationCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [ApiCallNotification!] total_entries: Int! total_pages: Int! } input ApiCallNotificationInputType { """ liquid code which can be used to process the response from the endpoint. You have access to "response" variable. """ callback: String """ liquid code to evaluate to whatever you want to send as a request body, for example a JSON. """ content: String """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String = "0" """ ids of forms which should trigger the api call """ form_configuration_ids: [ID] """ Deprecated, use request_headers """ headers: HashObject """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ deprecated - derived from physical_file_path; name of the api call, which is used in forms or mutation to trigger it """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/api_calls/my_api_call_notification """ physical_file_path: String! request_headers: HashObject """ Liquid code which should evaluate to valid request type: Get, Post, Put, Patch, Delete, Head or if you want to send binary files: Post_Multipart, Put_Multipart, Patch_Multipart """ request_type: String! """ liquid code to evaluate to valid endpoint for the request. """ to: String! """ liquid code which should evaluate to true if the api call should be sent """ trigger_condition: String = "true" } input ApiCallNotificationsFilterInput { callback: StringFilter content: StringFilter created_at: DateFilter """ Deprecated - use delay_by """ delay: StringFilter delay_by: StringFilter headers: StringFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [ApiCallNotificationsFilterInput!] physical_file_path: StringFilter to: StringFilter trigger_condition: StringFilter updated_at: DateFilter } input ApiCallNotificationsSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } input ApiCallSendOptions { """ If set to true, no charge will be applied and the request will be made against the current Stack. If the instance is on a different Stack, 404 will be returned """ internal: Boolean """ If set to true, SSL certificate verification will be skipped for HTTPS requests """ skip_ssl_verification: Boolean """ Read timeout of HTTP request in seconds. For calls triggered from backgroud jobs default is 8s and max 180s. For calls triggered from web request default is 5s and max 5s. """ timeout: Int } """ Autogenerated return type of ApiCallSend. """ type ApiCallSendPayload { errors: [BaseError!]! @deprecated(reason: "Not needed") response: Response } """ Input for API call request details """ input ApiCallSendRequestInput { """ The body of the API call """ body: String """ Headers for the API call """ headers: HashObject """ The HTTP method for the API call """ method: String! """ The URL for the API call """ url: String! } type Asset implements AdminSharedAttributesInterface { """ file content type """ content_type: String created_at: JSONDate! deleted_at: JSONDate """ file size """ file_size: Int id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ Name of the asset """ name: String! """ defines the physical path of the file """ physical_file_path: String updated_at: JSONDate! """ Url to the file """ url: String! virtual_deleted_at: JSONDate @deprecated(reason: "Use deleted_at instead") } type AssetCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Asset!] total_entries: Int! total_pages: Int! } input AssetInput { file_size: Int """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean """ metadata hash for the attribute """ metadata: HashObject name: String! """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/assets/logo.png """ physical_file_path: String! url: String! } input AssetPresignInput { path: String! } input AssetUpdateAllInput { """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean } input AssetUpdateInput { """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean """ metadata hash for the attribute """ metadata: HashObject """ defines the file location, from which we will extract the name and move the file from old location to the new one """ physical_file_path: String! } """ Autogenerated return type of AssetsCreateMutation. """ type AssetsCreateMutationPayload { assets: [Asset!]! } type AssetsListing { created_at: JSONDate! """ ID of the assets listing object """ id: ID private_assets_url: String public_assets_url: String status: String } type AssetsListingIdentifier { created_at: JSONDate! """ ID of the assets listing create job which can be queried """ id: ID! } """ Autogenerated return type of AssetsPresignUrlsMutation. """ type AssetsPresignUrlsMutationPayload { urls: [PresignedUrl!]! } input AssetsSortInput { content_type: StandardSort created_at: StandardSort file_size: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort virtual_deleted_at: StandardSort } enum AsyncCallbackPriority { """ default - max timeout: 5 minutes """ default """ high - max timeout: 1 minute """ high """ low - max timeout: 4 hours """ low } input AtachmentInputType { """ File URL returned by directly uploading it to platformOS s3 bucket using pre-signed URL """ file: String """ Name of the property """ name: String! """ External url to the file """ remote_file_url: String } enum AttachmentContentDispositionEnum { """ download """ download """ inline """ inline } input AttachmentContentLengthRange { gte: Int! lte: Int! } input AttachmentModelPropertyInput { model_schema_name: String! property_name: String! } input AttachmentPresignUrlInput { content_disposition: AttachmentContentDispositionEnum = inline """ file size limitation in KiB. ex. [gte: 1, lte: 1024] allows file size from 1KiB to 1 MiB """ content_length: AttachmentContentLengthRange """ Choose property which should be used to generate versions, versions defined in yml schema file """ model_property: AttachmentModelPropertyInput """ Choose property which should be used to generate versions, versions defined in yml schema file """ user_property: AttachmentUserPropertyInput } type AttachmentPresignedUploadUrl { """ Direct s3 upload endpoint to which you can upload files. Make sure you include upload_url_payload with the request """ upload_url: String! """ Payload you need to provide for upload_url """ upload_url_payload: HashObject! } input AttachmentUserPropertyInput { property_name: String! } input AttachmentsImport { """ direct path to file on S3 """ direct_path: String """ ID will ignored. """ id: ID """ name of the defined property """ name: String! """ URL to presigned slot on S3 """ url: String } type Authenticate { """ returns true if the provided JWT is valid for the given user and has not expired yet """ jwt(algorithm: JwtAlgorithm = HS256, token: String!): Boolean! """ validates otp_code """ otp_code( """ OTP code sent to user """ code: String! """ Allowed TOTP time drift between client and server """ drift: Int ): Boolean! """ plain text password which will be matched against stored encrypted_password. Returns true if password matches. """ password(password: String!): Boolean! """ returns true if the provided temporary_token is valid for the given user and has not expired yet """ temporary_token(token: String!): Boolean! } """ Authentication using provider """ type Authentication { """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate """ timestamp of when the record was soft delete, populated by delete action. It is also possible to manually set it via update. To undelete change it back to empty value, but please note that associated records would need to be manually undeleted as well. """ deleted_at: JSONDate id: ID """ name of authentication provider used for creating this authentication """ provider: AuthenticationProvider raw_info: HashObject token: String token_expires_at: JSONDate uid: String """ timestamp of when the record was updated, automatically generated by the system """ updated_at: JSONDate } input AuthenticationInputType { provider: AuthenticationProvider! raw_info: HashObject token: String token_expires_at: JSONDate uid: String } """ List of authentication providers """ enum AuthenticationProvider { """ auth0 """ auth0 """ facebook """ facebook """ github """ github """ google """ google """ instagram """ instagram """ linkedin """ linkedin """ openid_connect """ openid_connect """ saml """ saml """ twitter """ twitter } input AuthorizationPoliciesFilter { not_value: String not_value_in: [String!] value: String value_in: [String!] } input AuthorizationPoliciesFilterInput { content: StringFilter created_at: DateFilter flash_alert: StringFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [AuthorizationPoliciesFilterInput!] physical_file_path: StringFilter redirect_to: StringFilter updated_at: DateFilter } input AuthorizationPoliciesSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } """ Authorization Policy is used to restrict access to pages and forms """ type AuthorizationPolicy implements AdminSharedAttributesInterface { authorization_policy_associations: [AuthorizationPolicyAssociation!] content: String! created_at: JSONDate! flash_alert: String """ use this status code when authorization fails; usually 404 or 403 """ http_status: Int id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String! """ defines the physical path of the file """ physical_file_path: String redirect_to: String updated_at: JSONDate! } type AuthorizationPolicyAssociation { """ id of the admin resource """ authorizable_id: ID! """ type of the admin resource - Page or Form """ authorizable_type: String! """ id of the authorization policy """ authorization_policy_id: ID! created_at: JSONDate! id: ID! updated_at: JSONDate! } type AuthorizationPolicyCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [AuthorizationPolicy!] total_entries: Int! total_pages: Int! } input AuthorizationPolicyInputType { content: String! flash_alert: String """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ deprecated - derived from physical_file_path """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/authorization_policies/my_policy """ physical_file_path: String redirect_to: String } """ Background Job """ type BackgroundJob { arguments: JSONPayload """ how many times the job was tried to be processed. By default the job is not retried on error. """ attempts: Int created_at: JSONDate! """ when job has been considered as dead """ dead_at: JSONDate """ Deprecated """ error: String """ class of an error which made the job fail """ error_class: String """ error which made the job fail """ error_message: String """ when job failed """ failed_at: JSONDate """ Deprecated """ form_configuration_name: String """ Deprecated """ form_name: String id: ID! """ Deprecated """ label: String liquid_body: JSONPayload """ Deprecated """ locked_at: JSONDate """ liquid partial name path that will be executed """ partial_name: String """ which queue is used to process the job """ queue: String! """ Deprecated """ resource_id: ID """ Deprecated """ resource_type: String """ when job will retry to run """ retry_at: JSONDate """ when job is scheduled to run """ run_at: JSONDate source_name: String """ Deprecated """ source_type: String """ when job started to be processed """ started_at: JSONDate """ Deprecated """ updated_at: JSONDate } type BackgroundJobCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [BackgroundJob!] total_entries: Int! total_pages: Int! } input BackgroundJobsFilterInput { created_at: DateFilter """ Deprecated """ failed_at: DateFilter """ Deprecated """ form_configuration_name: StringFilter id: UniqIdFilter """ Deprecated """ label: StringFilter """ Deprecated """ locked_at: DateFilter """ OR conditions """ or: [BackgroundJobsFilterInput!] """ Deprecated """ queue: StringFilter """ Deprecated """ resource_id: UniqIdFilter """ Deprecated """ resource_type: StringFilter """ Deprecated """ run_at: DateFilter source_name: StringFilter """ Deprecated """ source_type: StringFilter """ it filters based on: run_at - for SCHEDULED type; retry_at - for RETRY type; dead_at - for DEAD type. It is ignored for RUNNING type. """ timestamp: DateFilter """ Type of jobs to retrieve """ type: BackgroundJobsTypeEnum updated_at: DateFilter } """ Background Jobs Result """ type BackgroundJobsResult { results: [BackgroundJob!]! } input BackgroundJobsSortInput { """ Deprecated """ attempts: StandardSort class_name: StandardSort created_at: StandardSort enqueued_at: StandardSort """ Deprecated """ failed_at: StandardSort """ Deprecated """ form_configuration_name: StandardSort """ Deprecated """ id: StandardSort """ Deprecated """ label: StandardSort """ Deprecated """ locked_at: StandardSort queue: StandardSort """ Deprecated """ resource_id: StandardSort """ Deprecated """ resource_type: StandardSort retry: StandardSort """ Deprecated """ run_at: StandardSort source_name: StandardSort """ Deprecated """ source_type: StandardSort """ Deprecated """ updated_at: StandardSort } """ Background Jobs Type """ enum BackgroundJobsTypeEnum { """ Jobs that have failed `max_attempts` times and won't be retried any more """ DEAD """ Jobs that have failed and are scheduled for a retry """ RETRY """ Jobs that are being processed in this moment """ RUNNING """ Jobs that have been scheduled to be performed in the future """ SCHEDULED } """ Base error message """ type BaseError { """ A description of the error """ message: String! } interface BasicPropertyInterface { """ ID of an object. """ id: ID """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject } input BooleanFilter { """ filter whether value was not set """ is_null: Boolean not_value: Boolean value: Boolean } type CMSItemDefinition { fields: [String]! name: CMSItemType! path: JSONPayload! } type CMSItemDefinitionCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [CMSItemDefinition!] total_entries: Int! total_pages: Int! } type CMSItemPayload { data: JSONPayload resource_name: String! type: CMSItemType } type CMSItemPayloadCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [CMSItemPayload!] total_entries: Int! total_pages: Int! } enum CMSItemType { ActivityStreamsGroupingHandler ActivityStreamsHandler ApiCallNotification Asset AuthorizationPolicy CustomModelType EmailNotification FormConfiguration GraphQuery InstanceConfig InstanceProfileType LiquidView Migration Modules Page SmsNotification TransactableType Translation UserType } """ Deprecated """ type Communication { phone_number: String! verified: Boolean! } input Content { """ Content type should start with this value """ starts_with: String """ Content type should have this value """ value: String } input ContentLength { """ Greater than or equal size in KiB """ gte: Int = null """ Lower than or equal size in KiB """ lte: Int! } input ContentLengthRange { gte: Int! lte: Int! } """ Color can be represented by: hex - "#000000", name - "red", rgba - "rgba(0,0,0,0.5)", hsla - "hsla(0%, 0%, 0%, 50%)" """ scalar CssColor type CustomAddrress { address: String address2: String apartment: String city: String country: String id: Int! iso_country_code: String lat: Float lng: Float name: String point: GeoPointType postcode: String service_radius: String state: String street: String street_number: String suburb: String } type CustomAttachment { created_at: JSONDate file_url: String id: ID! } input CustomAttachmentInputType { """ attribute of type file with which the created attachment should be associated - must be defined in the schema of the record, for example CustomModelType for Customization, InstanceProfileType for UserProfile or user.yml for User """ custom_attribute_name: String! """ URL to image that was uploaded to s3 presigned url """ direct_url: String """ allows you to create attachment with your own content; useful for generating reports, pdf, csv etc """ generate_file: ProcessStrategyInputType """ id of associated record - Model, UserProfile, User """ owner_id: ID! """ class of associated record - Model, UserProfile, User """ owner_type: String! """ deprecated, ignore """ page_slug: String """ create attachment based on a file available on remote location """ raw_remote_file_url: String """ id of a user who uploads the attachment """ uploader_id: ID } """ Definition of Custom attribute """ type CustomAttributeDefinition { attribute_type: String id: ID name: String } input CustomAttributeInputType { """ Adds provided value at the end of an array property. It's secure atomic operation executed in separate transaction """ array_append: String """ Removes provided value from an array property. It's secure atomic operation executed in separate transaction """ array_remove: String """ Decrements property value by provided value. It's secure atomic operation executed in separate transaction """ decrement: Float """ Increments property value by provided value. It's secure atomic operation executed in separate transaction """ increment: Float name: String! value: String value_array: [String] value_boolean: Boolean value_float: Float value_int: Int value_json: JSONPayload } type CustomImage { """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate! """ timestamp of when the record was soft delete, populated by delete action. It is also possible to manually set it via update. To undelete change it back to empty value, but please note that associated records would need to be manually undeleted as well. """ deleted_at: JSONDate file_url: String @deprecated(reason: "use `url`") id: ID! name: String property_id: ID """ timestamp of when the record was updated, automatically generated by the system """ updated_at: JSONDate! uploader_id: ID """ image url; ex: thumb: url(version: "thumb") """ url(version: String): String } type CustomImageCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [CustomImage!] total_entries: Int! total_pages: Int! } input CustomImageInputType { custom_attribute_name: String """ URL to image that was uploaded to s3 presigned url """ direct_url: String """ id of associated record - Customization, UserProfile, User """ owner_id: ID """ class of associated record - Customization, UserProfile, User """ owner_type: String """ deprecated """ page_slug: String """ id of the user who uploads the attachment """ uploader_id: ID } union Customizable = Listing | Profile | User enum CustomizableTypeEnum { """ Customization """ Customization """ Transactable """ Transactable """ User """ User """ UserProfile """ UserProfile } type Customization implements LegacyCustomAttributeInterface & ListingsMetadata & PropertiesInterface & RelationOnDemandInterface & RemoteModelInterface { """ Fetch address by name; ex: address: address(name: "office_address") """ address(name: String!): CustomAddrress @deprecated(reason: "use your own model for address if needed") """ Fetch all addresses, optionally you can filter results by name; ex: home_address: addresses(name: "home") """ addresses(name: String): [CustomAddrress!] @deprecated(reason: "use your own model for address if needed") """ Fetch attachment by name; ex: sales_report: attachment(name: "sales_report") """ attachment(name: String!): PrivateFile @deprecated(reason: "use property upload") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: attachments(name: "sales_report") """ attachments(name: String): [PrivateFile!] @deprecated(reason: "use property upload") """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): CustomAddrress @deprecated(reason: "Use address") """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [CustomAddrress!] @deprecated(reason: "Use addresses") """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): PrivateFile @deprecated(reason: "Use attachment") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: custom_attachments(name: "sales_report") """ custom_attachments(name: String): [PrivateFile!] @deprecated(reason: "Use attachments") """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): Image @deprecated(reason: "Use image") """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [Image!] @deprecated(reason: "Use images") customizable: Customizable """ id of a parent, which can other customization, user profile or user """ customizable_id: ID """ class of a parent - Customization, User or UserProfile """ customizable_type: String """ timestamp of when the record was soft delete, populated by delete action. It is also possible to manually set it via update. To undelete change it back to empty value, but please note that associated records would need to be manually undeleted as well. """ deleted_at: JSONDate """ Used mainly for import/export, if you want to use third party service as a source of truth """ external_id: ID human_name: String id: ID """ Fetch image by name; ex: header: image(name: "header") """ image(name: String!): Image @deprecated(reason: "use property upload") """ Fetch all images, optionally you can filter results by name; ex: cat_images: images(name: "cat") """ images(name: String): [Image!] @deprecated(reason: "use property upload") """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: String ): ListingsCustomization @deprecated(reason: "use `related_model`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: [String] ): [ListingsCustomization!] @deprecated(reason: "use `related_models`") name: String """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject """ Fetch any property by name and returns upload details """ property_upload( """ Defines the number of seconds for which the generated url will be accessible. Must be set if acl was set to private """ expires_in: Int name: String! ): PropertyUpload """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ related_model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: String ): ListingsCustomization """ Defines has-many relation with other model, returns maximum of 10000 records at once; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: [String] ): [ListingsCustomization!] """ Defines relation with other user, returns maximum of 10000 records at once; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ related_user(foreign_property: String = "id", join_on_property: String = "user_id"): User """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_model( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): Customization """ when sorting by distance - field contains distance to target location """ sort_score: [Int] @deprecated(reason: "not supported everywhere") """ timestamp of when the record was updated, automatically generated by the system """ updated_at: JSONDate """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user(foreign_property: String = "id", join_on_property: String = "user_id"): User @deprecated(reason: "use `related_users`") user_id: ID } input CustomizationImport { addresses: [AddressImport!] attachments: [AttachmentsImport!] created_at: ISO8601DateTime customizable_id: ID customizable_type: CustomizableTypeEnum """ ID will be stored as external_id, relations will be preseved. We generate it when empty. """ id: ID images: [ImagesImport!] """ ex. {"color": "red"} """ properties: HashObject type_name: String! updated_at: ISO8601DateTime user_id: ID } input CustomizationInputType { created_at: JSONDate custom_attachments: [AtachmentInputType] custom_images: [ImageInputType] custom_model_type_id: ID """ deprecated, use model_schema_name """ custom_model_type_name: String customizable_id: ID customizable_type: CustomizableTypeEnum customizations: [CustomizationsInputType] deleted_at: JSONDate external_id: ID id: ID model_schema_name: String models: [CustomizationsInputType] properties: [CustomAttributeInputType] """ deprectated, use properties """ title: String user_id: ID } input CustomizationSortOrder { """ Sort by given field value """ field: String order: String = "asc" """ Sort by given property value """ property: String } input CustomizationsInputType { name: String values: CustomizationInputType } input CustomizationsSortOrder { """ Sort by field name """ name: String order: String = "asc" """ Sort by property field """ property_name: String } type DataExport { created_at: JSONDate! """ ID of the export task which can be queried same way as pos-cli. Once done, the task will include url to the zip file """ id: ID status: String updated_at: JSONDate! url: String } type DataExportCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [DataExport!] total_entries: Int! total_pages: Int! } input DataExportModelsInput { filter: ModelsFilterInput per_page: Int = 5000000 sort: [ModelsSortInput!] } input DataExportRecordsInput { filter: RecordsFilterInput per_page: Int = 5000000 sort: [RecordsSortInput!] } input DataExportUsersInput { filter: UsersFilterInput per_page: Int = 5000000 sort: [UsersSortInput!] } input DataExportsFilterInput { created_at: DateFilter id: UniqIdFilter updated_at: DateFilter } input DataExportsSortInput { created_at: StandardSort id: StandardSort updated_at: StandardSort } input DateFilter { exists: Boolean gt: String gte: String lt: String lte: String not_value: String not_value_in: [String!] value: String value_in: [String!] } input DateRange { gt: String gte: String lt: String lte: String } input DefaultProfileInputType { custom_attachments: [AtachmentInputType] custom_images: [ImageInputType] deleted_at: JSONDate properties: [CustomAttributeInputType] } enum DistanceUnit { """ Centimeters """ cm """ Kilometers """ km """ Meters """ m """ Miles """ mi """ Nautical Miles """ nmi """ Yards """ yd } type Document implements BasicPropertyInterface { """ ID of an object. """ id: ID """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject } """ Email Notification """ type EmailNotification implements AdminSharedAttributesInterface { """ json of the form { "file_name.jpg": { "url": "http://example.com/file.jpg" } } which defines email attachments. Liquid will be processed. """ attachments: String """ Comma separated blind carbon copy list. Liquid allowed. For example "john@example.com, jane@example.com" """ bcc: String """ Comma separated carbon copy list. Liquid allowed. For example "john@example.com, jane@example.com" """ cc: String """ liquid code to evaluate to valid form html. If email is triggered via form configuration, You have access to "form" variable, with data specified in the configuration. """ content: String created_at: JSONDate! """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String """ form configurations which trigger the email """ form_configurations: [FormConfiguration!] @deprecated(reason: "use forms") """ forms which trigger the email """ forms: [Form!] """ email address from which you would like to send the email, for example notifications@mydomain.com """ from: String id: ID! """ name of the liquid layout to which the content should be injected """ layout: String """ name of the liquid layout to which the content should be injected """ layout_path: String @deprecated(reason: "use layout") """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ name of the email, which is used in form_configurations or mutation to trigger it """ name: String! """ defines the physical path of the file """ physical_file_path: String """ email address to which users should reply, for example support@mydomain.com """ reply_to: String """ liquid code to evaluate to text """ subject: String """ Comma separated recipient list. Liquid allowed. For example: "john@example.com, jane@example.com" """ to: String """ liquid code which should evaluate to true if the email should be sent """ trigger_condition: String updated_at: JSONDate! } type EmailNotificationCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [EmailNotification!] total_entries: Int! total_pages: Int! } input EmailNotificationInputType { """ json of the form { "file_name.jpg": { "url": "http://example.com/file.jpg" } } which defines email attachments. Liquid will be processed. """ attachments: String """ liquid code to evaluate to valid, comma separated blind carbon copy list, for example "john@example.com, jane@example.com" """ bcc: String """ liquid code to evaluate to valid, comma separated carbon copy list, for example "john@example.com, jane@example.com" """ cc: String """ liquid code to evaluate to valid form html. If email is triggered via form configuration, You have access to "form" variable, with data specified in configuration. """ content: String """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String = "0" """ ids of forms which should trigger the email """ form_configuration_ids: [ID] """ email address from which you would like to send the email, for example notifications@mydomain.com """ from: String """ name of the liquid layout to which the content should be injected """ layout: String """ deprecated, use layout """ layout_path: String """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ deprecated - derived from physical_file_path; name of the email, which is used in form or mutation to trigger it """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/emails/my_email_notification """ physical_file_path: String! """ email address to which users should reply, for example support@mydomain.com """ reply_to: String """ liquid code to evaluate to text """ subject: String! """ liquid code to evaluate to valid, comma separated recipient list, for example "john@example.com, jane@example.com" """ to: String """ liquid code which should evaluate to true if the email should be sent """ trigger_condition: String = "true" } input EmailNotificationsFilterInput { attachments: StringFilter bcc: StringFilter cc: StringFilter content: StringFilter created_at: DateFilter """ Deprecated - use delay_by """ delay: StringFilter delay_by: StringFilter id: UniqIdFilter layout: StringFilter """ Deprecated - use layout """ layout_path: StringFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [EmailNotificationsFilterInput!] physical_file_path: StringFilter subject: StringFilter to: StringFilter trigger_condition: StringFilter updated_at: DateFilter } input EmailNotificationsSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } type Embedding { """ original text that was converted to embedding """ content: String """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate! """ vector with 1536 dimensions, compatible with openai embeddings """ embedding: [Float!]! id: ID! metadata: HashObject """ tokens """ token_count: Int """ timestamp of when the record was updated, automatically generated by the system """ updated_at: JSONDate! } type EmbeddingCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Embedding!] total_entries: Int! total_pages: Int! } input EmbeddingCreateInputType { content: String created_at: JSONDate """ vector with 1536 dimensions, compatible with openai embeddings """ embedding: [Float!]! id: ID metadata: HashObject token_count: Int updated_at: JSONDate } input EmbeddingUpdateInputType { content: String created_at: JSONDate """ vector with 1536 dimensions, compatible with openai embeddings """ embedding: [Float!] id: ID metadata: HashObject token_count: Int updated_at: JSONDate } input EmbeddingsFilterInput { created_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] updated_at: DateFilter } input EmbeddingsSortInput { created_at: StandardSort embedding: VectorDistanceSort id: StandardSort updated_at: StandardSort } type EncryptedConstant { created_at: JSONDate! deleted_at: JSONDate """ Name of the constant """ name: String! updated_at: JSONDate! """ Decrypted value of a constant """ value: String! } type EncryptedConstantCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [EncryptedConstant!] total_entries: Int! total_pages: Int! } input EncryptedConstantFilterInput { created_at: DateFilter id: UniqIdFilter name: String updated_at: DateFilter } input EncryptedConstantsFilterInput { created_at: DateFilter id: UniqIdFilter name: StringFilter updated_at: DateFilter } input EncryptedConstantsSortInput { created_at: StandardSort id: StandardSort name: StandardSort updated_at: StandardSort } input Endpoint { """ authentication token """ token: String """ endpoint url """ url: String! } type FlashMessages { alert: String notice: String } """ Form configuration - deprecated, use Form """ type Form implements AdminSharedAttributesInterface { """ associated api call notifications """ api_call_notifications: [ApiCallNotification!] """ Same as callback, but invoked asynchronously. Recommended for performance reason. """ async_callback_actions: String """ Delays invoking the job by specified number of minutes. Liquid allowed - useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ async_callback_delay: String """ Defines max number of retrying attempts in case of an error. Usually you do not want to change it. """ async_callback_max_attempts: Int """ defines the invocaction priority, the higher the quicker timeout """ async_callback_priority: AsyncCallbackPriority """ associated authorization policies """ authorization_policies: [AuthorizationPolicy!] """ liquid code to be invoked after persisting input to DB. If possible, use async callback actions instead """ callback_actions: String """ whitelist of attributes which can be persisted in the DB. On server side (callbacks, emails etc) you have access to submited values via form variable (for exapmple configuration: properties: my_var is accessible via form.properties.my_var ) """ configuration: HashObject @deprecated(reason: "use fields") created_at: JSONDate! """ liquid code which has to evaluate to JSON. This extends/overwrites user submitted input via form, before validation. Most useful to store in DB sensitive data which you do not want user to modify, for example context.current_user.id """ default_payload: String """ associated email notifications """ email_notifications: [EmailNotification!] """ whitelist of attributes which can be persisted in the DB. On server side (callbacks, emails etc) you have access to submited values via form variable (for exapmple fields: properties: my_var is accessible via form.properties.my_var ) """ fields: HashObject """ Message which you want to display to user upon validation errors.Output is available via context.flash_alert. Liquid allowed. """ flash_alert: String """ Message which you want to display to user after successful form submission. Output is available via context.flash_notice. Liquid allowed. """ flash_notice: String id: ID! """ liquid code to evaluate to valid form html. You have access to form_builder variable and form tag. """ liquid_body: String """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String! """ defines the physical path of the file """ physical_file_path: String """ Path or URL to which user should be redirected after successful form submission. Liquid allowed. """ redirect_to: String resource: String! """ defines who can submit the form. If set to anyone, please make sure to provide authorization_policies """ resource_owner: String! """ Response headers for the form """ response_headers: String """ associated sms notifications """ sms_notifications: [SmsNotification!] """ name of the strategy and configuration for them """ spam_protection: HashObject updated_at: JSONDate! } type FormCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Form!] total_entries: Int! total_pages: Int! } """ Form configuration - deprecated, use Form """ type FormConfiguration implements AdminSharedAttributesInterface { """ associated api call notifications """ api_call_notifications: [ApiCallNotification!] """ Same as callback, but invoked asynchronously. Recommended for performance reason. """ async_callback_actions: String """ Delays invoking the job by specified number of minutes. Liquid allowed - useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ async_callback_delay: String """ Defines max number of retrying attempts in case of an error. Usually you do not want to change it. """ async_callback_max_attempts: Int """ defines the invocaction priority, the higher the quicker timeout """ async_callback_priority: AsyncCallbackPriority """ associated authorization policies """ authorization_policies: [AuthorizationPolicy!] """ liquid code to be invoked after persisting input to DB. If possible, use async callback actions instead """ callback_actions: String """ whitelist of attributes which can be persisted in the DB. On server side (callbacks, emails etc) you have access to submited values via form variable (for exapmple configuration: properties: my_var is accessible via form.properties.my_var ) """ configuration: HashObject created_at: JSONDate! """ liquid code which has to evaluate to JSON. This extends/overwrites user submitted input via form, before validation. Most useful to store in DB sensitive data which you do not want user to modify, for example context.current_user.id """ default_payload: String """ associated email notifications """ email_notifications: [EmailNotification!] """ Message which you want to display to user upon validation errors.Output is available via context.flash_alert. Liquid allowed. """ flash_alert: String """ Message which you want to display to user after successful form submission. Output is available via context.flash_notice. Liquid allowed. """ flash_notice: String id: ID! """ liquid code to evaluate to valid form html. You have access to form_builder variable and form tag. """ liquid_body: String """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String! """ defines the physical path of the file """ physical_file_path: String """ Path or URL to which user should be redirected after successful form submission. Liquid allowed. """ redirect_to: String resource: String! """ defines who can submit the form. If set to anyone, please make sure to provide authorization_policies """ resource_owner: String! """ associated sms notifications """ sms_notifications: [SmsNotification!] """ name of the strategy and configuration for them """ spam_protection: HashObject updated_at: JSONDate! } type FormConfigurationCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [FormConfiguration!] total_entries: Int! total_pages: Int! } input FormConfigurationInputType { """ Same as callback, but invoked asynchronously. Recommended for performance reason. """ async_callback_actions: String """ liquid code which should evaluate to float. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ async_callback_delay: String = "0" """ Defines max number of retrying attempts in case of an error. Usually you do not want to change it. """ async_callback_max_attempts: Int = 1 """ defines the invocaction priority, the higher the quicker timeout """ async_callback_priority: AsyncCallbackPriority = default """ ids of authorization policies which should be checked """ authorization_policy_ids: [ID] """ liquid code to be invoked after persisting input to DB. If possible, use async callback actions instead """ callback_actions: String """ whitelist of attributes which can be persisted in the DB. On server side (callbacks, emails etc) you have access to submited values via form variable (for exapmple configuration: properties: my_var is accessible via form.properties.my_var ) """ configuration: HashObject """ liquid code which has to evaluate to JSON. This extends/overwrites user submitted input via form, before validation. Most useful to store in DB sensitive data which you do not want user to modify, for example context.current_user.id """ default_payload: String """ liquid code which should evaluate to message which you want to display to user upon validation errors. Output is available via context.flash_alert """ flash_alert: String """ liquid code which should evaluate to message which you want to display to user after successful form submission. Output is available via context.flash_notice """ flash_notice: String """ liquid code to evaluate to valid form html. You have access to form_builder variable and form tag. """ liquid_body: String metadata: HashObject name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/form_configurations/my_form_configuration """ physical_file_path: String! """ liquid code which should evaluate to valid path or url to which user should be redirected after successful form submission. """ redirect_to: String resource: String! """ defines who can submit the form. If set to anyone, please make sure to provide authorization_policies """ resource_owner: String! """ strategy to protect against spam attacks. """ spam_protection: SpamProtectionInputType = null } input FormConfigurationsFilterInput { async_callback_actions: StringFilter callback_actions: StringFilter created_at: DateFilter default_payload: StringFilter flash_notice: StringFilter id: UniqIdFilter liquid_body: StringFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter redirect_to: StringFilter resource: StringFilter resource_owner: StringFilter updated_at: DateFilter } input FormConfigurationsSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } input FormInput { """ Same as callback, but invoked asynchronously. Recommended for performance reason. """ async_callback_actions: String """ liquid code which should evaluate to float. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ async_callback_delay: String = "0" """ Defines max number of retrying attempts in case of an error. Usually you do not want to change it. """ async_callback_max_attempts: Int = 1 """ defines the invocaction priority, the higher the quicker timeout """ async_callback_priority: AsyncCallbackPriority = default """ ids of authorization policies which should be checked """ authorization_policy_ids: [ID!] """ liquid code to be invoked after persisting input to DB. If possible, use async callback actions instead """ callback_actions: String """ whitelist of attributes which can be persisted in the DB. On server side (callbacks, emails etc) you have access to submited values via form variable (for exapmple configuration: properties: my_var is accessible via form.properties.my_var ) """ configuration: HashObject """ liquid code which has to evaluate to JSON. This extends/overwrites user submitted input via form, before validation. Most useful to store in DB sensitive data which you do not want user to modify, for example context.current_user.id """ default_payload: String """ liquid code which should evaluate to message which you want to display to user upon validation errors. Output is available via context.flash_alert """ flash_alert: String """ liquid code which should evaluate to message which you want to display to user after successful form submission. Output is available via context.flash_notice """ flash_notice: String """ liquid code to evaluate to valid form html. You have access to form_builder variable and form tag. """ liquid_body: String metadata: HashObject """ deprecated - derived from physical_file_path """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/forms/my_form """ physical_file_path: String! """ liquid code which should evaluate to valid path or url to which user should be redirected after successful form submission. """ redirect_to: String resource: String! """ defines who can submit the form. If set to anyone, please make sure to provide authorization_policies """ resource_owner: String! """ Response headers for the form """ response_headers: String = null """ strategy to protect against spam attacks. """ spam_protection: SpamProtectionInput = null } """ Autogenerated return type of FormSubmit. """ type FormSubmitPayload { """ includes one of model or user, depending on which form was submitted """ result: Result """ validation error messages based on form fields """ validation_errors: HashObject } input FormsFilterInput { async_callback_actions: StringFilter callback_actions: StringFilter created_at: DateFilter default_payload: StringFilter flash_notice: StringFilter id: UniqIdFilter liquid_body: StringFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [FormsFilterInput!] physical_file_path: StringFilter redirect_to: StringFilter resource: StringFilter resource_owner: StringFilter updated_at: DateFilter } input FormsSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } input FullTextQueryField { name: String priority: Int = 1 profile_field: String } """ GPG Key """ scalar GPGKey input GeoBox { bottom: LatDegree! left: LngDegree! right: LngDegree! top: LatDegree! } input GeoBoxTopLeftBottomRight { bottom_right: GeoPoint top_left: GeoPoint } input GeoBoxTopRightBottomLeft { bottom_left: GeoPoint top_right: GeoPoint } input GeoPoint { lat: LatDegree! lng: LngDegree! } input GeoPointInShape { point: GeoPoint } type GeoPointType { lat: Float lon: Float } input GeoPolygon { """ Remember to keep right order, follow GeoJSON spec """ points: [GeoPoint] } input GeoPropertyFilterInput { """ GeoJSON Object: of type Point, MultiPoint, LineString, Polygon. example: `{ type: "Point", coordinates: [-84.3, 39.8] }`. Read documentation for more """ center: GeometryJSON """ distance in km """ distance_in_km: Float } input GeoQuery { box: GeoBox box_top_left_bottom_right: GeoBoxTopLeftBottomRight box_top_right_bottom_left: GeoBoxTopRightBottomLeft point_in_shape: GeoPointInShape polygon: GeoPolygon radius: GeoRadius } input GeoRadius { center: GeoPoint """ ex. 1km, 100mi, 50yards, 2meters """ distance: String! } input GeoRadiusPropertyFilterInput { """ GeoJSON Object: of type Point, MultiPoint, LineString, Polygon. example: `{ type: "Point", coordinates: [-84.3, 39.8] }`. Read documentation for more """ point: GeometryJSON """ property name with value for radius distance. Property has to be of float type. Value has to be `km` unit. """ radius_in_km_from_property: String } """ GeometryJSON is a JSON format for encoding a variety of geographic data structures. It supports the following geometry types: Point [long, lan], LineString [[long, lan], [long, lan]], Polygon [[[long, lan], [long, lan]]] and MultiPoint [[long, lan], [long, lan]]. Point example: {"type": "Point", "coordinates": [100.0, 0.0]}, Polygon exaple: {"type": "Polygon", "coordinates": [[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]]]}. More information: https://tools.ietf.org/html/rfc7946 """ scalar GeometryJSON """ Graphql query or mutation """ type GraphQL implements AdminSharedAttributesInterface { """ graphql query string """ body: String created_at: JSONDate! id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ defines the physical path of the file """ physical_file_path: String updated_at: JSONDate! } type GraphQuery implements AdminSharedAttributesInterface { created_at: JSONDate! id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ Name of the graph query """ name: String! """ defines the physical path of the file """ physical_file_path: String """ The query """ query_string: String! updated_at: JSONDate! } type GraphQueryCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [GraphQuery!] total_entries: Int! total_pages: Int! } input GraphqlFilterInput { created_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [GraphqlFilterInput!] physical_file_path: StringFilter query_string: StringFilter updated_at: DateFilter } input GraphqlInputType { body: String! """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example graphql/my_query.graphql """ physical_file_path: String! } input GraphqlSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } type HTTPRequestContext { """ Returns array of configured authentication providers """ authentication_providers: [AuthenticationProvider] body: String """ Returns a String with the last requested path including their params. /foo?bar """ current_full_path: String! current_path: String! """ Returns the original request URL as a String. # => "http://www.example.com/articles?page=2" """ current_url: String! flash: FlashMessages form_authenticity_token: String! """ Access request headers """ headers: HeadersObject! """ Returns true if the “X-Requested-With” header contains “XMLHttpRequest” (case-insensitive),which may need to be manually added depending on the choice of JavaScript libraries and frameworks. """ is_xhr: Boolean """ Access data sent in by the user or other parameters in your controller actions """ params: ParamsObject! params_unfiltered: HashObject! """ The referer of the client """ referer: String } interface HasModelsInterface { """ Defines has-one relation with other model, e.g: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines has-one relation with other model; ex: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: related_models(model_schema_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines relation with other user; ex: invited_by: related_user(join_on_property: "invited_by_id") { id } """ related_user( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_users( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User @deprecated(reason: "use `related_user`") """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ users( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] @deprecated(reason: "use `related_users`") } interface HasModelsInterfaceForRecords { """ Defines has-one relation with other model, e.g: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines has-one relation with other model; ex: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: related_models(model_schema_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User @deprecated(reason: "use `related_user`") """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ users( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] @deprecated(reason: "use `related_users`") } interface HasRecordsInterface { """ Defines has-one relation with other record; ex: children: records(table: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_record( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! sort: [RecordsSortInput!] """ Joins record [formaly customization] with record-schema-name == table """ table: [String]! ): Record """ Defines has-many relation with other records; ex: children: related_records(table: "children", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_records( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [RecordsSortInput!] """ Define table name which should be used as a source for related records """ table: [String]! ): [Record!] } interface HasUsersInterface { """ Defines relation with other user; ex: invited_by: related_user(join_on_property: "invited_by_id") { id } """ related_user( filter: UsersFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_users( filter: UsersFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] } """ Represents data as a collection of unique keys and their values. Also known as associative arrays, maps or dictionaries. You can create it in liquid by converting JSON object with parse_json filter or tag. It can be any level deep. """ scalar HashObject """ Represents data defined by platformOS stored in context.headers variable. """ scalar HeadersObject """ An ISO 8601-encoded datetime """ scalar ISO8601DateTime @specifiedBy(url: "https://tools.ietf.org/html/rfc3339") input IdRangeFilter { gt: ID gte: ID lt: ID lte: ID } """ Generic image """ type Image { filename: String! @deprecated(reason: "Not used in direct s3 way of uploading file") id: ID """ image original height """ image_original_height: Int! @deprecated(reason: "Not used in direct s3 way of uploading file") """ image original width """ image_original_width: Int! @deprecated(reason: "Not used in direct s3 way of uploading file") name: String @deprecated(reason: "Not needed") """ id of the User who uploaded the image """ uploader_id: ID """ image url; ex: thumb: url(version: "thumb") """ url( """ name of the image version to which url will point """ version: String ): String """ object with versions, ex. "urls": { "big": { "url": "https://uploads.example.com/images/big_photo.jpg"}, "small": { "url": "https://example.com/images/small_photo.jpg" } } } """ urls: HashObject! } scalar ImageBlur enum ImageFormat { avif jpeg png webp } input ImageInputType { """ external url to the image """ direct_url: String """ Image URL returned by directly uploading it to platformOS s3 bucket using pre-signed URL """ image: String """ name of the property """ name: String! """ external url to the image """ remote_image_url: String } input ImagePresignUrlInput { """ file size limitation in KiB. ex. [gte: 1, lte: 1024] allows file size from 1KiB to 1 MiB """ content_length: ContentLengthRange """ choose property which should be used to generate versions, versions defined in yml schema file """ model_property: ModelPropertyInput """ choose property which should be used to generate versions, versions defined in yml schema file """ user_property: UserPropertyInput """ deprecated """ versions: [VersionInput!] } type ImagePresignedUploadUrl { """ Direct s3 upload endpoint to which you can upload files. Make sure you include upload_url_payload with the request """ upload_url: String! """ Payload you need to provide for upload_url """ upload_url_payload: HashObject! } """ Defines the quality of the image, 0 - lowest quality, 100 - highest quality """ scalar ImageQuality enum ImageResizeFit { """ Embed within both provided dimensions. """ contain """ Crop to cover both provided dimensions """ cover """ Ignore the aspect ratio of the input and stretch to both provided dimensions. """ fill """ Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. """ inside """ Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. Some of these values are based on the object-fit CSS property. """ outside } enum ImageResizePosition { bottom center left left_bottom left_top right right_bottom right_top top } input ImagesFilterInput { created_at: DateFilter deleted_at: DateFilter id: UniqIdFilter name: StringFilter property_id: UniqIdFilter updated_at: DateFilter uploader_id: UniqIdFilter } input ImagesImport { """ direct path to file on S3 """ direct_path: String """ ID will ignored. """ id: ID """ name of the defined property """ name: String! """ URL to presigned slot on S3 """ url: String } input ImagesSortInput { created_at: StandardSort deleted_at: StandardSort id: StandardSort property_id: StandardSort updated_at: StandardSort uploader_id: StandardSort } """ Autogenerated return type of ImportCustomizationsMutation. """ type ImportCustomizationsMutationPayload { external_ids: [ID!]! ids: [ID!]! } """ Autogenerated return type of ImportTransactablesMutation. """ type ImportTransactablesMutationPayload { external_ids: [ID!]! ids: [ID!]! } """ Autogenerated return type of ImportUsersMutation. """ type ImportUsersMutationPayload { external_ids: [ID!]! ids: [ID!]! } type IndexSearchCollection { aggregations: Aggregations! current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Document!] total_entries: Int! total_pages: Int! } input IndexSearchFilterInput { """ if argument is true, selects documents for which the property exists and is not null; if argument is false, selects documents for which the property doesn't exist or is null """ exists: Boolean """ name of the property """ name: String! """ property specified by name should NOT have a value that is equal to the value provided """ not_value: String """ property specified by name should NOT include a value that is provided """ not_value_in: [String!] """ property specified by name have a value that is prefixed with provided value """ prefix: String """ selects documents for which the property value is inside the given range; range options that can be given are lt (lower than), lte (lower than or equal), gt (greater than), gte (greater than or equal) """ range: RangeFilter """ property specified by name should have a value that is equal to the value provided """ value: String """ property specified by name should include a value that is provided """ value_in: [String!] """ ALL values should be included in document OR one is enough """ value_in_operator: OperatorEnum = OR } input IndexSearchQuery { """ Keyword analyzer: english arabic etc. Depends on your search index configuration. Default: standard """ analyzer: String fields: [FullTextQueryField] """ Accept wildcards, ? for single character, * for more """ keyword: String match_type: QueryMatchTypeEnum = EXACT operator: OperatorEnum = AND properties: [FullTextQueryField] } input IndexSearchSortInput { """ Sort by field """ name: String! order: String = "asc" } """ Returns information about the current instance """ type Instance { created_at: JSONDate! """ lists all feature flags defined in app/config.yml """ feature_flags: HashObject! id: ID! name: String! updated_at: JSONDate! } type InstanceMetrics { """ Number of activities """ activities_total: Int! """ Number of addresses """ addresses_total: Int! """ Number of attachments """ attachments_total: Int! """ Number of images """ images_total: Int! """ Number of records """ records_total: Int! """ Number of transactables """ transactables_total: Int! """ Number of user profiles """ user_profiles_total: Int! """ Number of users """ users_total: Int! } input IntegerFilter { not_value_in: [Int] range: IntegerRangeFilter value: Int value_in: [Int] } input IntegerRangeFilter { gt: Int gte: Int lt: Int lte: Int } """ Represents Date and time data expressed according to ISO 8601 format to which values are automatically converted. """ scalar JSONDate """ Represents data structures formatted as JSON standard. """ scalar JSONPayload input JoinModelCollection { foreign_property: PropertyName! join_on_property: PropertyName = "id" property_type: String } input JoinRecordCollection { foreign_property: PropertyName! join_on_property: PropertyName = "id" property_type: String } input JsonbAttributeFilter { """ The target value must contain the passed array """ array_contains: [String!] """ The value in the target array must have at least one element in common with the passed array """ array_overlaps: [String!] """ The passed array must contain the target array """ array_value_in: [String!] contains: String exists: Any key: String! """ The target value must not contain the passed array """ not_array_contains: [String!] """ The value in the target array must not have at least one element in common with the passed array """ not_array_overlaps: [String!] """ The passed array must not contain the target array """ not_array_value_in: [String!] not_contains: String not_exists: Any not_value: Any """ The value passed must not be the exact target array in that order """ not_value_array: [String!] not_value_boolean: Boolean not_value_float: Float """ The passed array must not contain the target scalar value """ not_value_in: [String!] not_value_int: Int value: Any """ The value passed must be the exact target array in that order """ value_array: [String!] value_boolean: Boolean value_float: Float """ The passed array must contain the target scalar value """ value_in: [String!] value_int: Int } input JsonbFilter { """ Filter by attribute key and value. Works for one level attributes """ attribute: JsonbAttributeFilter """ Filter by attributes - key and value. Works for one level attribute """ attributes: [JsonbAttributeFilter!] """ Filter metadata that contains part of the text """ contains: String """ Exclude matched resources from results """ exclude: Boolean """ Filter resources that have certain key in metadata """ has_key: String } input JsonbSort { """ name of the first level metadata attribute """ name: String! order: SortOrderEnum! } enum JwtAlgorithm { """ ES256 """ ES256 """ ES384 """ ES384 """ ES512 """ ES512 """ HS256 """ HS256 """ HS384 """ HS384 """ HS512 """ HS512 """ PS256 """ PS256 """ PS384 """ PS384 """ PS512 """ PS512 """ RS256 """ RS256 """ RS384 """ RS384 """ RS512 """ RS512 """ none """ none } """ Must be within range -90.0..90.0 """ scalar LatDegree interface LegacyCustomAttributeInterface { """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): CustomAddrress @deprecated(reason: "Use address") """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [CustomAddrress!] @deprecated(reason: "Use addresses") """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): PrivateFile @deprecated(reason: "Use attachment") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: custom_attachments(name: "sales_report") """ custom_attachments(name: String): [PrivateFile!] @deprecated(reason: "Use attachments") """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): Image @deprecated(reason: "Use image") """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [Image!] @deprecated(reason: "Use images") } """ Liquid Layouts """ type LiquidLayout implements AdminSharedAttributesInterface { """ liquid code to evaluate to valid html. To inject content of the resources using the layout use {{ content_for_layout }} """ body: String created_at: JSONDate! format: PageFormat id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ Defines the the path for layout, must starts with layouts/, for example layouts/my_layout. Please note that the layouts/ prefix must be skipped when setting layout in Page or EmailNotification """ path: String! """ defines the physical path of the file """ physical_file_path: String updated_at: JSONDate! } type LiquidLayoutCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [LiquidLayout!] total_entries: Int! total_pages: Int! } input LiquidLayoutInputType { body: String format: PageFormat = html """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject path: String! """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/views/layouts/my_layout """ physical_file_path: String! } input LiquidLayoutsFilterInput { body: StringFilter created_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] or: [LiquidLayoutsFilterInput!] path: StringFilter physical_file_path: StringFilter updated_at: DateFilter } input LiquidLayoutsSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] path: StandardSort physical_file_path: StandardSort updated_at: StandardSort } """ Liquid Partials """ type LiquidPartial implements AdminSharedAttributesInterface { """ liquid code to evaluate to valid html """ body: String created_at: JSONDate! format: PageFormat id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ defines the name of the partial to be used with include tag """ path: String! """ defines the physical path of the file """ physical_file_path: String updated_at: JSONDate! } type LiquidPartialCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [LiquidPartial!] total_entries: Int! total_pages: Int! } input LiquidPartialInputType { body: String = "" format: PageFormat = html """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject path: String! """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/views/partials/my_partial """ physical_file_path: String } input LiquidPartialsFilterInput { body: StringFilter created_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] or: [LiquidPartialsFilterInput!] path: StringFilter physical_file_path: StringFilter updated_at: DateFilter } input LiquidPartialsSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] path: StandardSort physical_file_path: StandardSort updated_at: StandardSort } type Listing implements ListingCustomAttributeInterface & ListingsMetadata & RelationOnDemandInterface & RemoteModelInterface { created_at: JSONDate """ Remember to set `listing: { has_creator: true }` in query arguments """ creator: UserListing creator_id: ID """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): ListingAddress """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [ListingAddress!] """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): ListingsPrivateFile custom_attachments(name: String): [ListingsPrivateFile!] """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): ListingImage """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [ListingImage!] customizations(name: String, properties: [QueryCustomAttribute], user_id: ID): [ListingsCustomization!] deleted_at: JSONDate external_id: ID id: ID! """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: String ): ListingsCustomization @deprecated(reason: "use `related_model`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: [String] ): [ListingsCustomization!] @deprecated(reason: "use `related_models`") name: String """ List of all properties assigned to the object. """ properties: HashObject """ Fetch any custom attribute by name; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property of Array type by name, it returns Array in contrast to "property" which returns String; ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property of JSON type by name, it returns JSON in contrast to "property" which returns String; ex: todo_list: property_json(name: "todo_list") """ property_json(name: String!): JSONPayload """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ related_model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: String ): ListingsCustomization """ Defines has-many relation with other model, returns maximum of 10000 records at once; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: [String] ): [ListingsCustomization!] """ Defines relation with other user, returns maximum of 10000 records at once; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ related_user(foreign_property: String = "id", join_on_property: String = "user_id"): User """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_model( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): Customization slug: String! """ when sorting by distance - field contains distance to target location """ sort_score: [Int] @deprecated(reason: "not supported everywhere") type: String updated_at: JSONDate """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user(foreign_property: String = "id", join_on_property: String = "user_id"): User @deprecated(reason: "use `related_users`") } """ An address """ type ListingAddress { address: String address2: String apartment: String city: String country: String id: Int! iso_country_code: String lat: Float lng: Float name: String point: GeoPointType postcode: String service_radius: String state: String street: String street_number: String suburb: String } input ListingAggregation { fields: [AggregationField] filter: QueryListing global: Boolean = false """ Name of the result """ name: String } type ListingCollection { aggregations: Aggregations! current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! page: Int! @deprecated(reason: "use current_page") per_page: Int! results: [Listing!] size: Int! total_entries: Int! total_pages: Int! } interface ListingCustomAttributeInterface { """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): ListingAddress """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [ListingAddress!] """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): ListingsPrivateFile custom_attachments(name: String): [ListingsPrivateFile!] """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): ListingImage """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [ListingImage!] """ List of all properties assigned to the object. """ properties: HashObject """ Fetch any custom attribute by name; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property of Array type by name, it returns Array in contrast to "property" which returns String; ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property of JSON type by name, it returns JSON in contrast to "property" which returns String; ex: todo_list: property_json(name: "todo_list") """ property_json(name: String!): JSONPayload } type ListingImage { file_name: String filename: String @deprecated(reason: "Use file_name") id: ID image_original_height: Int image_original_width: Int name: String """ image url; ex: thumb: url(version: "thumb") """ url(version: String = "thumb"): String } """ A profile """ type ListingUserProfile implements ListingCustomAttributeInterface & RelationOnDemandInterface & RemoteModelInterface { """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): ListingAddress """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [ListingAddress!] """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): ListingsPrivateFile custom_attachments(name: String): [ListingsPrivateFile!] """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): ListingImage """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [ListingImage!] customizations(name: String!, user_id: ID): [ListingsCustomization!] external_id: ID id: ID! """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: String ): ListingsCustomization @deprecated(reason: "use `related_model`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: [String] ): [ListingsCustomization!] @deprecated(reason: "use `related_models`") profile_type: String! """ List of all properties assigned to the object. """ properties: HashObject """ Fetch any custom attribute by name; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property of Array type by name, it returns Array in contrast to "property" which returns String; ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property of JSON type by name, it returns JSON in contrast to "property" which returns String; ex: todo_list: property_json(name: "todo_list") """ property_json(name: String!): JSONPayload """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ related_model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: String ): ListingsCustomization """ Defines has-many relation with other model, returns maximum of 10000 records at once; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: [String] ): [ListingsCustomization!] """ Defines relation with other user, returns maximum of 10000 records at once; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ related_user(foreign_property: String = "id", join_on_property: String = "user_id"): User """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_model( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): Customization """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user(foreign_property: String = "id", join_on_property: String = "user_id"): User @deprecated(reason: "use `related_users`") } """ Deprecated """ type ListingsCommunication { phone_number: String! verified: Boolean! } type ListingsCustomModelType { id: ID! name: String! } type ListingsCustomization implements ListingCustomAttributeInterface & RelationOnDemandInterface & RemoteModelInterface { """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): ListingAddress """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [ListingAddress!] """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): ListingsPrivateFile custom_attachments(name: String): [ListingsPrivateFile!] """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): ListingImage """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [ListingImage!] custom_model_type: ListingsCustomModelType customizable: Customizable customizable_id: ID customizable_type: String customizations(filter: NestedCustomizationFilters, page: Int = 1, per_page: Int = 20, sort: [CustomizationsSortOrder]): ListingsCustomizationCollection! @deprecated(reason: "Use models: instead.") deleted_at: JSONDate """ Used mainly for import/export, if you want to use third party service as a source of truth """ external_id: ID human_name: String id: ID! """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: String ): ListingsCustomization @deprecated(reason: "use `related_model`") model_schema: ListingsModelSchema """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: [String] ): [ListingsCustomization!] @deprecated(reason: "use `related_models`") name: String """ List of all properties assigned to the object. """ properties: HashObject """ Fetch any custom attribute by name; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property of Array type by name, it returns Array in contrast to "property" which returns String; ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property of JSON type by name, it returns JSON in contrast to "property" which returns String; ex: todo_list: property_json(name: "todo_list") """ property_json(name: String!): JSONPayload """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ related_model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: String ): ListingsCustomization """ Defines has-many relation with other model, returns maximum of 10000 records at once; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: [String] ): [ListingsCustomization!] """ Defines relation with other user, returns maximum of 10000 records at once; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ related_user(foreign_property: String = "id", join_on_property: String = "user_id"): User """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_model( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): Customization updated_at: JSONDate """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user(foreign_property: String = "id", join_on_property: String = "user_id"): User @deprecated(reason: "use `related_users`") user_id: ID } type ListingsCustomizationCollection { aggregations: Aggregations! current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! page: Int! @deprecated(reason: "use current_page") per_page: Int! results: [ListingsCustomization!] size: Int! total_entries: Int! total_pages: Int! } interface ListingsMetadata { """ when sorting by distance - field contains distance to target location """ sort_score: [Int] @deprecated(reason: "not supported everywhere") } type ListingsModelSchema { id: ID! name: String! } type ListingsPrivateFile { content_type: String created_at: JSONDate file_name: String id: ID name: String size_bytes: Int url( """ Number of seconds before presigned URL expires. Max value is one week (604800) """ expires_in: Int = 900 ): String } """ Must be within range -180.0..180.0 """ scalar LngDegree type LogEntry { id: ID! message: String! type: String! } """ List of available event types """ enum LogEntryType { debug error info } type Model implements HasModelsInterface & PropertiesInterface { """ Fetch address by name; ex: address: address(name: "office_address") """ address(name: String!): CustomAddrress @deprecated(reason: "use your own model for address if needed") """ Fetch all addresses, optionally you can filter results by name; ex: home_address: addresses(name: "home") """ addresses(name: String): [CustomAddrress!] @deprecated(reason: "use your own model for address if needed") """ Fetch attachment by name; ex: sales_report: attachment(name: "sales_report") """ attachment(name: String!): PrivateFile @deprecated(reason: "use property upload") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: attachments(name: "sales_report") """ attachments(name: String): [PrivateFile!] @deprecated(reason: "use property upload") """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate! customizable_id: ID @deprecated(reason: "Use property to store foreign keys") customizable_type: String @deprecated(reason: "Use property to store foreign keys") """ timestamp of when the record was soft delete, populated by delete action. It is also possible to manually set it via update. To undelete change it back to empty value, but please note that associated records would need to be manually undeleted as well. """ deleted_at: JSONDate """ Used mainly for import/export, if you want to use third party service as a source of truth """ external_id: ID """ ID of an object. """ id: ID """ Fetch image by name; ex: header: image(name: "header") """ image(name: String!): Image @deprecated(reason: "use property upload") """ Fetch all images, optionally you can filter results by name; ex: cat_images: images(name: "cat") """ images(name: String): [Image!] @deprecated(reason: "use property upload") """ Defines has-one relation with other model, e.g: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ ID of Model Schema to which it belongs """ model_schema_id: ID! @deprecated(reason: "use table_id") """ Name of the model schema to which it belongs """ model_schema_name: String @deprecated(reason: "use table") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Name of the model schema """ name: String @deprecated(reason: "use table") """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject """ Fetch any property by name and returns upload details """ property_upload( """ Defines the number of seconds for which the generated url will be accessible. Must be set if acl was set to private """ expires_in: Int name: String! ): PropertyUpload """ Defines has-one relation with other model; ex: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: related_models(model_schema_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines relation with other user; ex: invited_by: related_user(join_on_property: "invited_by_id") { id } """ related_user( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_users( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] """ Name of the Table to which it belongs """ table: String """ ID of the Table to which it belongs """ table_id: ID! """ timestamp of when the record was updated, automatically generated by the system """ updated_at: JSONDate! """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User @deprecated(reason: "use `related_user`") """ Id of the User who created and owns the Model """ user_id: ID """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ users( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] @deprecated(reason: "use `related_users`") } type ModelCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Model!] total_entries: Int! total_pages: Int! } input ModelPropertyInput { model_schema_name: String! property_name: String! } """ Schema for model (old CustomModelType) """ type ModelSchema implements AdminPropertiesInterface & AdminSharedAttributesInterface { created_at: JSONDate! """ Deprecated, use properties instead. """ fields: [Property!]! @deprecated(reason: "Use properties") id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String! parameterized_name: String! """ defines the physical path of the file """ physical_file_path: String """ List of properties attributes to be included in the results """ properties: [Property!]! updated_at: JSONDate! } type ModelSchemaCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [ModelSchema!] total_entries: Int! total_pages: Int! } input ModelSchemaInputType { """ deprecated, use properties """ fields: [NestedPropertyInputType] metadata: HashObject """ deprecated - derived from physical_file_path """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/custom_model_types/my_model """ physical_file_path: String! properties: [NestedPropertyInputType] } input ModelSchemasFilterInput { created_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [ModelSchemasFilterInput!] parameterized_name: StringFilter physical_file_path: StringFilter updated_at: DateFilter } input ModelSchemasSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort parameterized_name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } input ModelUpdate { addresses: [AddressImport!] attachments: [AttachmentsImport!] created_at: ISO8601DateTime customizable_id: ID customizable_type: CustomizableTypeEnum """ ID must match existing object id """ id: ID! images: [ImagesImport!] """ ex. {"color": "red"} """ properties: HashObject type_name: String! updated_at: ISO8601DateTime user_id: ID } input ModelsFilterInput { created_at: DateFilter deleted_at: DateFilter external_id: StringFilter id: UniqIdFilter model_schema_id: UniqIdFilter model_schema_name: StringFilter """ deprecated, use `related_models` """ models: [RelatedModelsFilterInput!] """ Deprecated, use model_schema_name """ name: StringFilter """ join arguments with OR operator """ or: [ModelsFilterInput!] properties: [PropertyFilterInput!] """ filter by related models """ related_models: [RelatedModelsFilterInput!] related_users: [RelatedUsersFilterInput!] updated_at: DateFilter user_id: UniqIdFilter """ deprecated, use `related_users` """ users: [RelatedUsersFilterInput!] } input ModelsSortInput { created_at: StandardSort deleted_at: StandardSort external_id: StandardSort id: StandardSort model_schema_id: StandardSort properties: [PropertySort!] random_sort: Boolean updated_at: StandardSort } input MutationAssetsFilterInput { created_at: DateFilter deleted_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: JsonbFilter name: StringFilter physical_file_path: StringFilter updated_at: DateFilter } input NestedCustomizationFilters { created_at: DateRange id: ID ids: [ID] ignore_deleted: Boolean = true is_deleted: Boolean """ Name of the Model Schema """ name: String properties: [QueryCustomAttribute] user_id: ID user_ids: [ID] } input NestedPropertyInputType { """ provide 1 if property you want to remove property, 0 otherwise """ _destroy: String """ Type of the property """ attribute_type: PropertyTypeEnum = string """ Defines a relationship with other model schema or the user schema. Used during importing/exporting data. """ belongs_to: String """ Default value for new objects """ default_value: String """ id of the property to update """ id: ID metadata: HashObject """ Name of the property """ name: String! """ Provides options for type upload - defines for exmple whether newly upload file should be public etc """ options: PropertyUploadOptionsInput } input NewCustomImageInputType { custom_attribute_name: String! """ URL to image that was uploaded to s3 presigned url """ direct_url: String owner_id: ID! """ valid values: Customization, User, UserProfile """ owner_type: String! """ deprecated """ page_slug: String """ deprecated, use direct_url which is generated via image_presign_url mutation """ raw_remote_image_url: String uploader_id: ID } """ Input type for email parameters """ input NotificationEmailInput { """ BCC email address """ bcc: [String!] """ CC email address """ cc: [String!] """ Email body content """ content: String! """ Delay in minutes before sending the email """ delay: Int """ Sender email address """ from: String! """ Reply-to email address """ reply_to: [String!] """ Email subject """ subject: String! """ Recipient email address """ to: [String!]! } """ Autogenerated return type of NotificationSendEmail. """ type NotificationSendEmailPayload { errors: [BaseError!]! @deprecated(reason: "Not needed") is_scheduled_to_send: Boolean! } input NotificationTemplateInput { """ Name of the template """ name: String! } enum NotificationTypeEnum { API_CALL EMAIL SMS } input NotificationTypeFilter { not_value: NotificationTypeEnum not_value_in: [NotificationTypeEnum!] value: NotificationTypeEnum value_in: [NotificationTypeEnum!] } type ObjectCount { count: Int! } type ObjectUpload { errors: [String!] job_id: String upload_object_id: ID! upload_object_type: String! uploads: JSONPayload } enum ObjectsWithUploadsEnum { """ for Record objects """ Record """ for User objects """ User """ for UserProfile objects """ UserProfile } enum OperatorEnum { """ all values should match """ AND """ any value should match """ OR } type Otp { current_code: String! secret: String! """ SVG from QRcode """ secret_as_svg_qr_code(issuer: String, label: String): String! } """ Page """ type Page implements AdminSharedAttributesInterface { """ associated authorization policies """ authorization_policies: [AuthorizationPolicy!] """ Content provider by the develop, can be markdown, can be html with liquid etc. """ content: String """ specfic timestamp of when the content was updated last time, useful for cache """ content_updated_at: JSONDate! created_at: JSONDate! deleted_at: JSONDate """ the number of seconds for which this page will be cached; set dynamic_cache_layout accordingly to your scenario. Triggers authorization. Use only if cache_key cannot be easily determined (for example for search results page) """ dynamic_cache_expire: Int """ liquid which evaluates to the cache key, for example {{ context.page.slug }}/{{ context.params.slug2 }}for page with slug "abc" will cache separately /abc/1 and /abc/2, however abc/1/1 will return the same value as abc/1/2. If left blank, the full url will be used. """ dynamic_cache_key: String """ defines whether layout should be cached as well, or only page. Usually it is not possible to cache layout due to dynamic data in it, like name of a logged in user, hence default is false. """ dynamic_cache_layout: Boolean format: PageFormat handler: PageHandler """ Evaluated html content, especially useful if content was provided as markdown """ html_content: String id: ID! layout: String layout_name: String @deprecated(reason: "use layout") """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean """ max nesting of the url to be resolved by this slug. For example slug "abc" with max_deep_level 2 will resolve /abc, abc/1, abc/2, but will NOT resolve abc/2/something. """ max_deep_level: Int metadata: HashObject """ defines the physical path of the file """ physical_file_path: String redirect_code: Int redirect_to: String request_method: PageRequestMethod response_headers: HashObject searchable: Boolean slug: String! """ the number of seconds for which this page will be cached as a static html page; works only for not logged in users, skips any authorization """ static_cache_expire: Int subdomain: String updated_at: JSONDate! } type PageCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Page!] total_entries: Int! total_pages: Int! } input PageFilterInput { """ Filter by authorization policies, ex. authorization_policies: { value_in: ["page_protection", "check_user"] } """ authorization_policies: AuthorizationPoliciesFilter """ Search for text in rendered page content. Page must be marked as searchable """ content: StringFilter content_updated_at: DateFilter created_at: DateFilter deleted_at: DateFilter """ Filter by format, ex. format: { value: HTML } """ format: PageFormatFilter id: UniqIdFilter layout: StringFilter """ Deprecated - use layout """ layout_name: StringFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] """ join arguments with OR operator """ or: [PageFilterInput!] physical_file_path: StringFilter redirect_code: IntegerFilter redirect_to: StringFilter """ request method for the page """ request_method: PagesRequestMethodFilter searchable: BooleanFilter """ Filter by slug. Enter slug without leading /, ex. slug: { exact: "client/orders" } """ slug: StringFilter subdomain: StringFilter updated_at: DateFilter } enum PageFormat { """ css """ css """ csv """ csv """ html """ html """ ics """ ics """ js """ js """ json """ json """ pdf """ pdf """ rss """ rss """ svg """ svg """ text """ text """ txt """ txt """ xml """ xml } input PageFormatFilter { not_value: PageFormat not_value_in: [PageFormat!] value: PageFormat value_in: [PageFormat!] } enum PageHandler { """ liquid """ liquid """ markdown """ markdown } input PageInputType { """ ids of authorization policies which should be checked """ authorization_policy_ids: [ID] content: String dynamic_cache_expire: Int dynamic_cache_key: String dynamic_cache_layout: Boolean = false format: PageFormat = html handler: PageHandler = liquid """ name of the liquid layout to which the content should be injected """ layout: String """ deprecated, use layout """ layout_name: String """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean """ max nesting of the url to be resolved by this slug. For example slug "abc" with max_deep_level 2 will resolve /abc, abc/1, abc/2, but will NOT resolve abc/2/something. """ max_deep_level: Int = 3 metadata: HashObject """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/views/pages/my-page """ physical_file_path: String! redirect_code: PageRedifectCode redirect_to: String request_method: PageRequestMethod = get response_headers: HashObject searchable: Boolean = false """ defines the url at which the page will be available, for example if you want the page to be available at https://example.com/hello/world set the slug to hello/world. If blank, slug will be derived from physical_file_path, in this example set physical_file_path to views/pages/hello/world.html.liquid """ slug: String static_cache_expire: Int """ subdomain for page """ subdomain: String } enum PageRedifectCode { """ 301 Moved Permanently """ MOVED_PERMANENTLY """ 302 Moved Temporarily """ MOVED_TEMPORARILY } enum PageRequestMethod { """ delete """ delete """ get """ get """ options """ options """ patch """ patch """ post """ post """ put """ put } input PagesRequestMethodFilter { not_value: PageRequestMethod not_value_in: [PageRequestMethod!] value: PageRequestMethod value_in: [PageRequestMethod!] } input PagesSortInput { content_updated_at: StandardSort created_at: StandardSort id: StandardSort metadata: [JsonbSort!] physical_file_path: StandardSort redirect_code: StandardSort redirect_to: StandardSort slug: StandardSort updated_at: StandardSort } """ Represents data defined by platformOS stored in context.params variable. """ scalar ParamsObject input PresignUrl { """ ACL for the uploaded file """ acl: ACL = null """ Size range for the uploaded file """ content_length: ContentLength = null """ Content type for the uploaded file """ content_type: Content = null } input PresignUrlInput { """ defines whether it is a public file that anyone who knows the url can access it, or if its private and even with the known URL it is not possible to see the file without a signature. """ acl: ACL = public content_disposition: String = "inline" """ file size limitation in KiB. ex. [gte: 1, lte: 1024] allows file size from 1KiB to 1 MiB """ content_length: ContentLengthRange type: UploadType = image """ if image is uploaded, multiple versions of it will be generated automatically """ versions: [VersionInput!] } type PresignedUploadUrl { """ Direct s3 upload endpoint to which you can upload files. Make sure you include upload_url_payload with the request """ upload_url: String! """ Payload you need to provide for upload_url """ upload_url_payload: HashObject! } type PresignedUrl { """ URL to CDN with your file. Will be available once you upload file """ access_url: String! path: String! """ Presigned URL where you should upload file """ upload_url: String! } type PrivateFile { content_type: String created_at: JSONDate file_name: String id: ID name: String size_bytes: Int url( """ Number of seconds before presigned URL expires. Max value is one week (604800) """ expires_in: Int = 900 ): String } input ProcessPageInputType { """ Parameters you would like to pass to the page to render it dynamically. They will beavailable via context.params. """ params: HashObject """ Slug of the page which you would like to use as a template """ slug: String! } enum ProcessStrategy { """ pdf - body should be html to be converted to pdf """ pdf """ text - choose it for things like csv, json, xml, plain text etc. """ text } input ProcessStrategyInputType { """ Expected content depends on strategy, however usually it is text, html, csv, json, xml etc.Alternativey you can process page via page argument. """ body: String """ Name of the output file """ file_name: String! """ Provided page will be rendered and its output will be used as a body. Alternatively you can pass body directly via body argument """ page: ProcessPageInputType strategy: ProcessStrategy! """ if you set to true and strategy requires asynchronous processing by us (like pdf generation) then the mutation will wait until the file is actually generated so you can for example attach it to an email """ synchronous: Boolean = false } """ A profile """ type Profile implements HasModelsInterface & HasRecordsInterface & LegacyCustomAttributeInterface & PropertiesInterface & RemoteRecordsInterface & RemoteUsersInterface { """ Fetch address by name; ex: address: address(name: "office_address") """ address(name: String!): CustomAddrress @deprecated(reason: "use your own model for address if needed") """ Fetch all addresses, optionally you can filter results by name; ex: home_address: addresses(name: "home") """ addresses(name: String): [CustomAddrress!] @deprecated(reason: "use your own model for address if needed") """ Fetch attachment by name; ex: sales_report: attachment(name: "sales_report") """ attachment(name: String!): PrivateFile @deprecated(reason: "use property upload") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: attachments(name: "sales_report") """ attachments(name: String): [PrivateFile!] @deprecated(reason: "use property upload") """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): CustomAddrress @deprecated(reason: "Use address") """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [CustomAddrress!] @deprecated(reason: "Use addresses") """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): PrivateFile @deprecated(reason: "Use attachment") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: custom_attachments(name: "sales_report") """ custom_attachments(name: String): [PrivateFile!] @deprecated(reason: "Use attachments") """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): Image @deprecated(reason: "Use image") """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [Image!] @deprecated(reason: "Use images") customizations(customizable_id: ID, customizable_type: String, id: [ID], name: String, properties: [QueryCustomAttribute], sort: [CustomizationSortOrder], user_id: ID): [Customization!] """ timestamp of when the record was soft delete, populated by delete action. It is also possible to manually set it via update. To undelete change it back to empty value, but please note that associated records would need to be manually undeleted as well. """ deleted_at: JSONDate """ ID of an object. """ id: ID """ Fetch image by name; ex: header: image(name: "header") """ image(name: String!): Image @deprecated(reason: "use property upload") """ Fetch all images, optionally you can filter results by name; ex: cat_images: images(name: "cat") """ images(name: String): [Image!] @deprecated(reason: "use property upload") """ Defines has-one relation with other model, e.g: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") profile_type: String! """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject """ Fetch any property by name and returns upload details """ property_upload( """ Defines the number of seconds for which the generated url will be accessible. Must be set if acl was set to private """ expires_in: Int name: String! ): PropertyUpload """ Defines has-one relation with other model; ex: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: related_models(model_schema_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines has-one relation with other record; ex: children: records(table: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_record( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! sort: [RecordsSortInput!] """ Joins record [formaly customization] with record-schema-name == table """ table: [String]! ): Record """ Defines has-many relation with other records; ex: children: related_records(table: "children", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_records( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [RecordsSortInput!] """ Define table name which should be used as a source for related records """ table: [String]! ): [Record!] """ Defines relation with other user; ex: invited_by: related_user(join_on_property: "invited_by_id") { id } """ related_user( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_users( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_records( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [Record!] """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_users( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [User!] """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User @deprecated(reason: "use `related_user`") """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ users( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] @deprecated(reason: "use `related_users`") } input ProfileFilterInput { """ Name of the user profile type """ name: String """ Name of the user profile type """ name_filter: StringFilter properties: [PropertyFilterInput!] } input PropertiesFieldInput { attribute_type: SelectPropertyTypeEnum! name: String! } interface PropertiesInterface { """ Fetch address by name; ex: address: address(name: "office_address") """ address(name: String!): CustomAddrress @deprecated(reason: "use your own model for address if needed") """ Fetch all addresses, optionally you can filter results by name; ex: home_address: addresses(name: "home") """ addresses(name: String): [CustomAddrress!] @deprecated(reason: "use your own model for address if needed") """ Fetch attachment by name; ex: sales_report: attachment(name: "sales_report") """ attachment(name: String!): PrivateFile @deprecated(reason: "use property upload") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: attachments(name: "sales_report") """ attachments(name: String): [PrivateFile!] @deprecated(reason: "use property upload") """ ID of an object. """ id: ID """ Fetch image by name; ex: header: image(name: "header") """ image(name: String!): Image @deprecated(reason: "use property upload") """ Fetch all images, optionally you can filter results by name; ex: cat_images: images(name: "cat") """ images(name: String): [Image!] @deprecated(reason: "use property upload") """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject """ Fetch any property by name and returns upload details """ property_upload( """ Defines the number of seconds for which the generated url will be accessible. Must be set if acl was set to private """ expires_in: Int name: String! ): PropertyUpload } scalar PropertiesObject """ Property definition """ type Property implements AdminSharedAttributesInterface { """ Type of the property """ attribute_type: PropertyTypeEnum! """ Defines a relationship with other model schema or the user schema. Used during importing/exporting data. """ belongs_to: String created_at: JSONDate! """ Default value for new objects """ default_value: String id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ Name of the property """ name: String! """ Options, used only by type upload """ options: HashObject """ defines the physical path of the file """ physical_file_path: String """ Id of the schema to which this property definition belongs """ target_id: ID! """ Type of the schema to which this property definition belongs """ target_type: String! updated_at: JSONDate! } input PropertyFilterInput { """ allow empty values """ allow_empty: Boolean """ selects records for which the property of type Array contains all of the provided elements """ array_contains: [String!] """ selects records for which the property of type Array contains at least one of the provided elements """ array_overlaps: [String!] """ if argument is true, contains, starts_with and ends_with will be case sensitive """ case_sensitive: Boolean """ selects records where the property of type String contains the provided string as a sub-string (control case sensitivity with `case_sensitive` argument) """ contains: String """ select records for which a distance between its point from <:property> and <:center> point is less than <:distance>. """ distance_sphere: GeoPropertyFilterInput """ selects records for which the property of type String ends with the provided argument (control case sensitivity with `case_sensitive` argument) """ ends_with: String """ if argument is true, selects records for which the property exists and is not null; if argument is false, selects records for which the property doesn't exist or is null """ exists: Boolean """ name of the property """ name: String! """ selects records for which the property of type Array may contain some, but not all of the provided elements """ not_array_contains: [String!] """ selects records for which the property of type Array doesn't have any element in common with the provided array of elements """ not_array_overlaps: [String!] """ selects records where the property of type String does not contain the provided string as a sub-string (control case sensitivity with `case_sensitive` argument) """ not_contains: String """ selects records for which the property of type String does not end with the provided argument (control case sensitivity with `case_sensitive` argument) """ not_ends_with: String """ selects records for which the property of type String does not start with the provided argument (control case sensitivity with `case_sensitive` argument) """ not_starts_with: String """ property specified by name should have a value that is different from the value provided """ not_value: String """ selects records for which the property of type Array is not equal to the provided value """ not_value_array: [String!] """ property specified by name should be different from the value provided """ not_value_boolean: Boolean """ property specified by name should different from the value provided """ not_value_float: Float """ selects records for which the property is not included as a sub-array or is not an element of the provided Array argument """ not_value_in: [String!] """ property specified by name should be equal different from the value provided """ not_value_int: Int """ select records for which a <:point> is not within <:radius_in_km_from_property> km distance from its <:property> point """ not_within_radius: GeoRadiusPropertyFilterInput """ specifies the type of the property if it can't be determined automatically """ property_type: String """ selects records for which the property value is inside the given range; range options that can be given are lt (lower than), lte (lower than or equal), gt (greater than), gte (greater than or equal) """ range: RangeFilter """ selects records for which the property of type String starts with the provided argument (control case sensitivity with `case_sensitive` argument) """ starts_with: String """ property specified by name should have a value that is equal to the value provided """ value: String """ selects records for which the property of type Array is equal to the provided value """ value_array: [String!] """ property specified by name should be equal to the value provided """ value_boolean: Boolean """ property specified by name should be equal to the value provided """ value_float: Float """ selects records for which the property is included as a sub-array or is an element of the provided Array argument """ value_in: [String!] """ property specified by name should be equal to the value provided """ value_int: Int """ select records for which a <:point> is within <:radius_in_km_from_property> km distance from its <:property> point """ within_radius: GeoRadiusPropertyFilterInput } input PropertyInputType { """ Adds provided value at the end of an array property. It's secure atomic operation executed in separate transaction """ array_append: String """ Removes provided value from an array property. It's secure atomic operation executed in separate transaction """ array_remove: String """ Decrements property value by provided value. It's secure atomic operation executed in separate transaction """ decrement: Float """ Increments property value by provided value. It's secure atomic operation executed in separate transaction """ increment: Float name: String! value: String value_array: [String] value_boolean: Boolean value_float: Float value_int: Int value_json: JSONPayload value_upload: ValueUploadInput } """ Model Property Name """ scalar PropertyName input PropertySort { name: String! order: SortOrderEnum! } enum PropertyTargetType { """ ModelSchema """ ModelSchema User UserProfileSchema } enum PropertyTypeEnum { """ address """ address """ array of strings, will be deprecated in the future as current implementation prevents arrays of other types """ array """ binary """ binary """ boolean """ boolean """ date """ date """ datetime """ datetime """ decimal """ decimal """ file """ file """ float """ float """ geojson """ geojson """ integer """ integer """ photo """ photo """ string """ string """ deprecated, please use string """ text """ time """ time """ upload """ upload } type PropertyUpload { """ extension extracted from the url, downcased; for example jpg, pdf etc. """ extension: String """ file name extracted from the url """ file_name: String """ url pointing to the file in CDN """ url: String """ hash where key is a version name and value is the url to the cdn; populated if the upload file is an image and versions were specified """ versions( """ specified only those versions which you want to be returned """ names: [String!] ): HashObject } enum PropertyUploadACL { private public } enum PropertyUploadContentDisposition { attachment inline } input PropertyUploadContentLengthInput { gte: Int = 0 lte: Int! } input PropertyUploadEncryptionGPGInput { """ Create ASCII armored output. The default is to create the binary OpenPGP format. """ armor: Boolean """ Public key to be used to encrypt the file """ key: GPGKey! } input PropertyUploadEncryptionInput { """ Encrypt using GnuPG Public Key """ gpg: PropertyUploadEncryptionGPGInput } enum PropertyUploadFit { """ Embed within both provided dimensions. """ contain """ Crop to cover both provided dimensions """ cover """ Ignore the aspect ratio of the input and stretch to both provided dimensions. """ fill """ Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. """ inside """ Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. Some of these values are based on the object-fit CSS property. """ outside } enum PropertyUploadFormat { avif jpeg png webp } input PropertyUploadManipulateInput { """ value representing the sigma of the Gaussian mask, where sigma = 1 + radius / 2 """ blur: ImageBlur """ color for flatten """ flatten: CssColor = "#000000" """ Convert to 8-bit greyscale; 256 shades of grey. """ greyscale: Boolean = false } input PropertyUploadOptionsInput { acl: PropertyUploadACL = public cache_control: String = "max-age=315576000, public" content_disposition: PropertyUploadContentDisposition = inline """ file size limitation in KiB. ex. [gte: 1, lte: 1024] allows file size from 1KiB to 1 MiB """ content_length: PropertyUploadContentLengthInput """ defines a version of the uploaded image - for example you might want to resize it for performance reason, compress etc. Max number of versions is 10 """ versions: [PropertyUploadVersionInput!] } input PropertyUploadOutputInput { format: PropertyUploadFormat """ Defines the quality of the image; used to automatically compress the image; 0 - lowest quality, 100 - highest quality. Defaults: PNG: 80, WEBP: 80, JPEG: 85, AVIF: 60 """ quality: ImageQuality } enum PropertyUploadPosition { bottom center left left_bottom left_top right right_bottom right_top top } type PropertyUploadPresignedUrl { """ Direct s3 upload endpoint to which you can upload files. Make sure you include upload_url_payload with the request """ upload_url: String """ Payload you need to provide for upload_url """ upload_url_payload: HashObject } input PropertyUploadResizeInput { """ background color when using a fit of containDefault: #000000 """ background: CssColor fit: PropertyUploadFit = cover """ max height of an image. If left undefined, will depend on other parameters to determine size (like: width) """ height: Int """ position to use when fit is cover or contain """ position: PropertyUploadPosition """ max width of an image. If left undefined, will depend on other parameters to determine size (like: height) """ width: Int """ do not enlarge if the width or height are already less than the specified dimensions """ without_enlargement: Boolean = false } input PropertyUploadVersionInput { manipulate: PropertyUploadManipulateInput """ name of the version, for example thumb """ name: String! output: PropertyUploadOutputInput resize: PropertyUploadResizeInput } input Query { fields: [FullTextQueryField] """ Accept wildcards, ? for single character, * for more """ keyword: String match_type: QueryMatchTypeEnum = EXACT operator: OperatorEnum = AND properties: [FullTextQueryField] """ Search all fields as raw. """ raw: Boolean } input QueryAssetsFilterInput { content_type: StringFilter created_at: DateFilter deleted_at: DateFilter file_size: RangeFilter id: UniqIdFilter manually_managed: BooleanFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [QueryAssetsFilterInput!] physical_file_path: StringFilter updated_at: DateFilter virtual_deleted_at: DateFilter } input QueryCustomAttribute { """ Set it when you want to exclude value/values/range from results """ exclude: Boolean = false exists: Boolean name: String! range: Range value: String values: [String] values_operator: OperatorEnum = OR } input QueryCustomModelType { id: Int ids: [Int] name: String names: [String] } input QueryCustomization { addresses: [QueryListingLocation] id: ID name: String parameterized_name: String """ Need to narrow profiles by profile_type """ properties: [QueryCustomAttribute] user_id: ID } input QueryListing { addresses: [QueryListingLocation] created_at: DateRange creator: QueryUser creator_id: ID creator_ids: [ID] custom_attributes: [QueryCustomAttribute] customizations: [QueryCustomization] external_id: ID external_ids: [ID] has_creator: Boolean id: ID ids: [ID] is_deleted: Boolean name: String properties: [QueryCustomAttribute] slug: String transactable_type: QueryTransactableType """ do not use this please """ without_ids: [ID] } input QueryListingLocation { cities: [String] city: String country: String exists: Boolean """ Geo search """ geo_query: GeoQuery postcode: String state: String street: String suburb: String } """ Match types for keyword """ enum QueryMatchTypeEnum { """ Match any characters on start and end *foo* """ CONTAINS """ Match any characters on start *foo """ ENDS_WITH """ Match whole words """ EXACT """ Match and allow typo. Keywodr -> Keyword """ FUZZY """ Match any characters on end foo* """ STARTS_WITH } input QueryModelSchema { id: Int ids: [Int] name: String names: [String] } input QueryTransactableType { id: Int ids: [Int] name: String names: [String] } input QueryUser { created_at: DateRange customizations: [QueryCustomization] email: String emails: [String] external_id: ID externals_id: [ID] first_name: String id: ID ids: [ID] is_deleted: Boolean = false last_name: String middle_name: String name: String profiles: [QueryUserProfile] slug: String without_ids: [ID] } input QueryUserProfile { addresses: [QueryListingLocation] custom_attributes: [QueryCustomAttribute] customizations: [QueryCustomization] """ Geo search based on searchable custom_addresses """ geo_query: GeoQuery is_deleted: Boolean """ Name of the user profile type """ name: String """ Alias for name argument """ profile_type: String """ Need to narrow profiles by profile_type """ properties: [QueryCustomAttribute] } input Range { gt: String gte: String lt: String lte: String } input RangeFilter { gt: String gte: String lt: String lte: String } type Record implements HasModelsInterfaceForRecords & HasRecordsInterface & HasUsersInterface & PropertiesInterface & RemoteRecordsInterface & RemoteUsersInterface { """ Fetch address by name; ex: address: address(name: "office_address") """ address(name: String!): CustomAddrress @deprecated(reason: "use your own model for address if needed") """ Fetch all addresses, optionally you can filter results by name; ex: home_address: addresses(name: "home") """ addresses(name: String): [CustomAddrress!] @deprecated(reason: "use your own model for address if needed") """ Fetch attachment by name; ex: sales_report: attachment(name: "sales_report") """ attachment(name: String!): PrivateFile @deprecated(reason: "use property upload") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: attachments(name: "sales_report") """ attachments(name: String): [PrivateFile!] @deprecated(reason: "use property upload") """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate! customizable_id: ID @deprecated(reason: "Use property to store foreign keys") customizable_type: String @deprecated(reason: "Use property to store foreign keys") """ timestamp of when the record was soft delete, populated by delete action. It is also possible to manually set it via update. To undelete change it back to empty value, but please note that associated records would need to be manually undeleted as well. """ deleted_at: JSONDate """ Used mainly for import/export, if you want to use third party service as a source of truth """ external_id: ID """ ID of an object. """ id: ID """ Fetch image by name; ex: header: image(name: "header") """ image(name: String!): Image @deprecated(reason: "use property upload") """ Fetch all images, optionally you can filter results by name; ex: cat_images: images(name: "cat") """ images(name: String): [Image!] @deprecated(reason: "use property upload") """ Defines has-one relation with other model, e.g: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ ID of Model Schema to which it belongs """ model_schema_id: ID! @deprecated(reason: "use table_id") """ Name of the model schema to which it belongs """ model_schema_name: String @deprecated(reason: "use table") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Name of the model schema """ name: String @deprecated(reason: "use table") """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject """ Fetch any property by name and returns upload details """ property_upload( """ Defines the number of seconds for which the generated url will be accessible. Must be set if acl was set to private """ expires_in: Int name: String! ): PropertyUpload """ Defines has-one relation with other model; ex: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: related_models(model_schema_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines has-one relation with other record; ex: children: records(table: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_record( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! sort: [RecordsSortInput!] """ Joins record [formaly customization] with record-schema-name == table """ table: [String]! ): Record """ Defines has-many relation with other records; ex: children: related_records(table: "children", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_records( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [RecordsSortInput!] """ Define table name which should be used as a source for related records """ table: [String]! ): [Record!] """ Defines relation with other user; ex: invited_by: related_user(join_on_property: "invited_by_id") { id } """ related_user( filter: UsersFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_users( filter: UsersFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_records( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [Record!] """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_users( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [User!] """ Name of the Table to which it belongs """ table: String """ ID of the Table to which it belongs """ table_id: ID! """ timestamp of when the record was updated, automatically generated by the system """ updated_at: JSONDate! """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User @deprecated(reason: "use `related_user`") """ Id of the User who created and owns the Record """ user_id: ID """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ users( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] @deprecated(reason: "use `related_users`") } type RecordCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Record!] total_entries: Int! total_pages: Int! } type RecordCreate { id: ID! """ Name of the Table to which it belongs """ table: String! } input RecordInputType { attachments: [AtachmentInputType] created_at: JSONDate deleted_at: JSONDate external_id: ID id: ID images: [ImageInputType] properties: [PropertyInputType] records: [RecordsInputType] table: String updated_at: JSONDate user_id: ID } input RecordsCreateInputType { created_at: JSONDate deleted_at: JSONDate external_id: ID id: ID properties: PropertiesObject table: String updated_at: JSONDate } input RecordsFilterInput { created_at: DateFilter deleted_at: DateFilter external_id: StringFilter """ Fulltext search """ fulltext: Query id: UniqIdFilter """ join arguments with OR operator """ or: [RecordsFilterInput!] properties: [PropertyFilterInput!] """ filter by related records """ related_records: [RelatedRecordsFilterInput!] related_users: [RelatedUsersFilterInput!] """ Name of the Table to which records should belong """ table: StringFilter """ pOS ID of the Table to which records should belong """ table_id: UniqIdFilter updated_at: DateFilter user_id: UniqIdFilter } input RecordsInputType { table: String values: RecordInputType } input RecordsSortInput { created_at: StandardSort deleted_at: StandardSort external_id: StandardSort id: StandardSort properties: [PropertySort!] random_sort: Boolean table_id: StandardSort updated_at: StandardSort } input RelatedModelsFilterInput { filter: ModelsFilterInput join: JoinModelCollection } input RelatedRecordsFilterInput { filter: RecordsFilterInput join: JoinRecordCollection! } input RelatedUsersFilterInput { filter: UsersFilterInput join: JoinModelCollection } interface RelationOnDemandInterface { """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: String ): ListingsCustomization @deprecated(reason: "use `related_model`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: [String] ): [ListingsCustomization!] @deprecated(reason: "use `related_models`") """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ related_model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: String ): ListingsCustomization """ Defines has-many relation with other model, returns maximum of 10000 records at once; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: [String] ): [ListingsCustomization!] """ Defines relation with other user, returns maximum of 10000 records at once; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ related_user(foreign_property: String = "id", join_on_property: String = "user_id"): User """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user(foreign_property: String = "id", join_on_property: String = "user_id"): User @deprecated(reason: "use `related_users`") } interface RemoteModelInterface { """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_model( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): Customization } interface RemoteRecordsInterface { """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_records( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [Record!] } interface RemoteUsersInterface { """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_users( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [User!] } type Response { body: String """ Hash of headers returned by the server """ headers: HashObject """ Standard HTTP status code """ status: Int! } type Result { """ hash with calculated difference of what has changed """ changes: HashObject """ Updated model, assuming submited form was for resource model """ model: Model """ Create/Updated transactable, assuming submitted form was for resource Transactable """ transactable: Transactable @deprecated(reason: "use model") """ Updated user, assuming submited form was for resource User """ user: User } type RootMutation { """ Creates an Activity """ activity_create(payload: ActivityStreamsPayload!): ActivityStreamsActivity @doc(category: "Activity feeds") """ Delete all activities and clean up ALL feeds """ activity_delete_all(confirm: Boolean = false): [ID] @doc(category: "Activity feeds") """ add activity to feeds """ activity_publish( at: ISO8601DateTime """ e.i. User, UserPrivate, AuditLog, Images, Posts """ feed_type: String! ids: [ID]! uuid: ID! ): JSONDate @doc(category: "Activity feeds") """ Clean up feeds from selected activities """ activity_unpublish( """ search for activities related to the record ( {"id": "<record_id>"}) and then cleanup all feeds from found activities """ record_id: ID """ search for activities related to the Object and then cleanup all feeds from found activities """ related_to_object: ActiveRecordReference """ remove from feeds activity with UUID """ uuid: ID ): [ID] @doc(category: "Activity feeds") """ Clean up ALL feeds """ activity_unpublish_all(confirm: Boolean = false): [ID] @doc(category: "Activity feeds") """ Creates api call notification """ admin_api_call_notification_create(api_call_notification: ApiCallNotificationInputType!): ApiCallNotification @doc(category: "Admin") """ Deletes api call notification """ admin_api_call_notification_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): ApiCallNotification @doc(category: "Admin") """ Updates api call notification """ admin_api_call_notification_update( api_call_notification: UpdateApiCallNotificationInputType! """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): ApiCallNotification @doc(category: "Admin") """ Remove an asset including the physical file. There is no way to revert this operation, use with caution. """ admin_asset_delete(physical_file_path: String!): Asset @doc(category: "Admin") """ Removes all assets that match the filter. """ admin_asset_delete_all(filter: MutationAssetsFilterInput!, hard_delete: Boolean = false): String @doc(category: "Admin") """ Updates asset and physically move the file to the new location """ admin_asset_update( asset: AssetUpdateInput! """ Identifier of a file which you want to update """ physical_file_path: String! ): Asset @doc(category: "Admin") """ Updates all assets that match the filter. """ admin_asset_update_all(asset: AssetUpdateAllInput!, filter: MutationAssetsFilterInput!): ObjectCount @doc(category: "Admin") """ Creates asset """ admin_assets_create(assets: [AssetInput!]!): AssetsCreateMutationPayload @doc(category: "Admin") """ Asynchronously generates report of the current s3 state. Returns ID, to be used in `admin_assets_listing` query. """ admin_assets_listing_create: AssetsListingIdentifier! @doc(category: "Admin") """ Presign assets urls for given path """ admin_assets_presign_urls(paths: [AssetPresignInput!]!): AssetsPresignUrlsMutationPayload @doc(category: "Admin") """ Creates authorization policy """ admin_authorization_policy_create(authorization_policy: AuthorizationPolicyInputType!): AuthorizationPolicy @doc(category: "Admin") """ Delete authorization policy """ admin_authorization_policy_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): AuthorizationPolicy @doc(category: "Admin") """ Update authorization policy """ admin_authorization_policy_update( authorization_policy: UpdateAuthorizationPolicyInputType! """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): AuthorizationPolicy @doc(category: "Admin") """ Delete background job """ admin_background_job_delete(id: ID!): BackgroundJob @doc(category: "Admin") """ Retries failed background job """ admin_background_job_retry(id: ID!): BackgroundJob @doc(category: "Admin") """ Delete all background jobs which match the given criteria """ admin_background_jobs_delete_all(filter: BackgroundJobsFilterInput): BackgroundJobsResult @doc(category: "Admin") """ Creates email_notification schema """ admin_email_notification_create(email_notification: EmailNotificationInputType!): EmailNotification @doc(category: "Admin") """ Creates email_notification schema """ admin_email_notification_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): EmailNotification @doc(category: "Admin") """ Deletes email notifications matching the filter """ admin_email_notification_delete_all( """ Filter for matching email notifications to delete """ filter: EmailNotificationsFilterInput! ): ObjectCount @doc(category: "Admin") """ Creates email_notification schema """ admin_email_notification_update( email_notification: UpdateEmailNotificationInputType! """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): EmailNotification @doc(category: "Admin") """ Updates all email notifications matching the filter """ admin_email_notification_update_all( email_notification: UpdateEmailNotificationInputType! """ Filter for matching email notifications to update """ filter: EmailNotificationsFilterInput! ): ObjectCount @doc(category: "Admin") """ Creates field """ admin_field_create(field: StandalonePropertyInputType!): Property @deprecated(reason: "Use admin_property_create") @doc(category: "Deprecated") """ Creates field """ admin_field_delete(id: ID!): Property @deprecated(reason: "Use admin_property_delete") @doc(category: "Deprecated") """ Creates field """ admin_field_update(field: UpdateStandalonePropertyInputType!, id: ID!): Property @deprecated(reason: "Use admin_property_update") @doc(category: "Deprecated") """ Creates form_configuration schema """ admin_form_configuration_create(form_configuration: FormConfigurationInputType!): FormConfiguration @deprecated(reason: "Use admin_form_create") @doc(category: "Deprecated") """ Deletes form_configuration schema """ admin_form_configuration_delete(id: ID!): FormConfiguration @deprecated(reason: "Use admin_form_delete") @doc(category: "Deprecated") """ Updates form_configuration schema """ admin_form_configuration_update(form_configuration: UpdateFormConfigurationInputType!, id: ID!): FormConfiguration @deprecated(reason: "Use admin_form_update") @doc(category: "Deprecated") """ Creates form """ admin_form_create(form: FormInput!): Form @deprecated(reason: "Use page with mutation") @doc(category: "Deprecated") """ Delete form """ admin_form_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): Form @deprecated(reason: "Use page with mutation") @doc(category: "Deprecated") """ Delete multiple forms """ admin_form_delete_all(filter: FormsFilterInput!): ObjectCount @deprecated(reason: "Use page with mutation") @doc(category: "Deprecated") """ Update form """ admin_form_update( form: UpdateFormInput! """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): Form @deprecated(reason: "Use page with mutation") @doc(category: "Deprecated") """ Update multiple forms """ admin_form_update_all(filter: FormsFilterInput!, form: UpdateFormInput!): ObjectCount @deprecated(reason: "Use page with mutation") @doc(category: "Deprecated") """ Creates graphql """ admin_graphql_create(graphql: GraphqlInputType!): GraphQL @doc(category: "Admin") """ Deletes graphql """ admin_graphql_delete(physical_file_path: String!): GraphQL @doc(category: "Admin") """ Updates graphql """ admin_graphql_update(graphql: UpdateGraphqlInputType!, physical_file_path: String!): GraphQL @doc(category: "Admin") """ Creates liquid layout """ admin_liquid_layout_create(liquid_layout: LiquidLayoutInputType!): LiquidLayout @doc(category: "Admin") """ Deletes liquid layout """ admin_liquid_layout_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): LiquidLayout @doc(category: "Admin") """ Deletes multiple liquid layouts """ admin_liquid_layout_delete_all( filter: LiquidLayoutsFilterInput! """ Set to true if you want it to run synchronously """ sync: Boolean = false ): ObjectCount @doc(category: "Admin") """ Updates liquid layout """ admin_liquid_layout_update( """ deprecated, please use physical_file_path """ id: ID liquid_layout: UpdateLiquidLayoutInputType! physical_file_path: String ): LiquidLayout @doc(category: "Admin") """ Updates multiple liquid layouts """ admin_liquid_layout_update_all(filter: LiquidLayoutsFilterInput!, liquid_layout: UpdateLiquidLayoutInputType!): ObjectCount @doc(category: "Admin") """ Creates liquid partial """ admin_liquid_partial_create(liquid_partial: LiquidPartialInputType!): LiquidPartial @doc(category: "Admin") """ Deletes liquid partial """ admin_liquid_partial_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): LiquidPartial @doc(category: "Admin") """ Deletes multiple liquid partials """ admin_liquid_partial_delete_all( filter: LiquidPartialsFilterInput! """ Set to true if you want it to run synchronously """ sync: Boolean = false ): ObjectCount @doc(category: "Admin") """ Updates liquid partial """ admin_liquid_partial_update( """ deprecated, please use physical_file_path """ id: ID liquid_partial: UpdateLiquidPartialInputType! physical_file_path: String ): LiquidPartial @doc(category: "Admin") """ Updates multiple liquid partials """ admin_liquid_partial_update_all(filter: LiquidPartialsFilterInput!, liquid_partial: UpdateLiquidPartialInputType!): ObjectCount @doc(category: "Admin") """ Creates model schema """ admin_model_schema_create(model_schema: ModelSchemaInputType!): ModelSchema @doc(category: "Admin") """ Deletes model schema """ admin_model_schema_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): ModelSchema @doc(category: "Admin") """ Updates model schema """ admin_model_schema_update( """ deprecated, please use physical_file_path """ id: ID model_schema: UpdateModelSchemaInputType! physical_file_path: String ): ModelSchema @doc(category: "Admin") """ Creates page """ admin_page_create(page: PageInputType!): Page @doc(category: "Admin") """ Deletes page """ admin_page_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): Page @doc(category: "Admin") """ Updates page """ admin_page_update( """ deprecated, please use physical_file_path """ id: ID page: UpdatePageInputType! physical_file_path: String ): Page @doc(category: "Admin") """ Updates multiple pages """ admin_page_update_all(filter: PageFilterInput!, page: UpdatePageInputType!): ObjectCount! @doc(category: "Admin") """ Remove all pages, beware there is no coming back! """ admin_pages_delete_all( filter: PageFilterInput! """ Set to true if you want it to run synchronously """ sync: Boolean = false ): ObjectCount! @doc(category: "Admin") """ Creates property """ admin_property_create(property: StandalonePropertyInputType!): Property @doc(category: "Admin") """ Creates property """ admin_property_delete(id: ID!): Property @doc(category: "Admin") """ Creates property """ admin_property_update(id: ID!, property: UpdateStandalonePropertyInputType!): Property @doc(category: "Admin") """ Creates sms_notification schema """ admin_sms_notification_create(sms_notification: SmsNotificationInputType!): SmsNotification @doc(category: "Admin") """ Deletes sms_notification schema """ admin_sms_notification_delete(id: ID, physical_file_path: String): SmsNotification @doc(category: "Admin") """ Updates sms_notification schema """ admin_sms_notification_update(id: ID, physical_file_path: String, sms_notification: UpdateSmsNotificationInputType!): SmsNotification @doc(category: "Admin") """ Creates table """ admin_table_create(table: TableInputType!): Table @doc(category: "Admin") """ Deletes table """ admin_table_delete(physical_file_path: String!): Table @doc(category: "Admin") """ Updates table """ admin_table_update(physical_file_path: String!, table: UpdateTableInputType!): Table @doc(category: "Admin") """ Creates transactable schema """ admin_transactable_schema_create(transactable_schema: TransactableSchemaInputType!): TransactableSchema @deprecated(reason: "Use records instead of transactables") @doc(category: "Deprecated") """ Deletes transactable schema """ admin_transactable_schema_delete(id: ID!): TransactableSchema @deprecated(reason: "Use records instead of transactables") @doc(category: "Deprecated") """ Updates transactable schema """ admin_transactable_schema_update(id: ID!, transactable_schema: UpdateTransactableSchemaInputType!): TransactableSchema @deprecated(reason: "Use records instead of transactables") @doc(category: "Deprecated") """ Creates translation """ admin_translation_create(translation: TranslationInputType!): Translation @deprecated(reason: "Please use admin_translation_set") @doc(category: "Deprecated") """ Deletes translation """ admin_translation_delete( key: String! """ for example en, de etc. """ locale: String! ): Translation @deprecated(reason: "Please use admin_translation_set") @doc(category: "Deprecated") """ Creates the translation if the key/locale pair does not exist or updates existing translation """ admin_translation_set(translation: TranslationInputType!): Translation @doc(category: "Admin") """ Sets the whole JSON branch, either by merging it to the existing translations or by overwriting the whole branch """ admin_translation_set_json( strategy: TranslationJsonStrategy! """ json with translation tree which should be set """ translation: TranslationJsonInputType! ): TranslationJson @doc(category: "Admin") """ Unsets the translation key for a given locale """ admin_translation_unset( key: String! """ for example en, de etc. """ locale: String! ): Translation @doc(category: "Admin") """ Updates translation. If translation does not exist, it will be created. """ admin_translation_update( key: String! """ for example en, de etc. """ locale: String! translation: UpdateTranslationInputType! ): Translation @deprecated(reason: "Please use admin_translation_unset") @doc(category: "Deprecated") """ Creates user_profile schema """ admin_user_profile_schema_create(user_profile_schema: UserProfileSchemaInputType!): UserProfileSchema @deprecated(reason: "Use records instead of user_profiles") @doc(category: "Deprecated") """ Deletes user_profile schema """ admin_user_profile_schema_delete( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String ): UserProfileSchema @deprecated(reason: "Use records instead of user_profiles") @doc(category: "Deprecated") """ Updates user_profile schema """ admin_user_profile_schema_update( """ deprecated, please use physical_file_path """ id: ID physical_file_path: String user_profile_schema: UpdateUserProfileSchemaInputType! ): UserProfileSchema @deprecated(reason: "Use records instead of user_profiles") @doc(category: "Deprecated") api_call_send( api_call: ApiCallSendRequestInput """ Variables that will be accesible in liquid """ data: HashObject options: ApiCallSendOptions """ Template defined in app/api_calls """ template: NotificationTemplateInput ): ApiCallSendPayload """ Presign upload url for direct s3 upload """ attachment_presign_url(options: AttachmentPresignUrlInput): AttachmentPresignedUploadUrl! @deprecated(reason: "Custom attachments were replaced with property upload") @doc(category: "Deprecated") """ Broadcast to a channel and room """ channel_send_message(channel_name: String!, payload: JSONPayload!, room_id: String!): String @doc(category: "WebSockets") constant_set( """ Name of the constant you want to set """ name: String! """ Value of the constant, which will be securely store """ value: String! ): EncryptedConstant! @doc(category: "Data") constant_unset( """ Name of the constant you want to unset """ name: String! ): EncryptedConstant @doc(category: "Data") """ Creates a CustomAttachment """ custom_attachment_create( custom_attachment: CustomAttachmentInputType! """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String ): CustomAttachment @deprecated(reason: "Custom attachments were replaced with property upload") @doc(category: "Deprecated") """ Remove a custom attachment """ custom_attachment_delete( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! ): CustomAttachment @deprecated(reason: "Custom attachments were replaced with property upload") @doc(category: "Deprecated") """ Updates a CustomAttachment """ custom_attachment_update( custom_attachment: UpdateCustomAttachmentInputType! """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! ): CustomAttachment @deprecated(reason: "Custom attachments were replaced with property upload") @doc(category: "Deprecated") """ Creates a CustomImage """ custom_image_create( custom_image: NewCustomImageInputType! """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String ): CustomImage @deprecated(reason: "Custom images were replaced with property upload") @doc(category: "Deprecated") """ Remove a custom image """ custom_image_delete( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! ): CustomImage @deprecated(reason: "Custom images were replaced with property upload") @doc(category: "Deprecated") """ Updates a CustomImage """ custom_image_update( custom_image: CustomImageInputType! """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! ): CustomImage @deprecated(reason: "Custom images were replaced with property upload") @doc(category: "Deprecated") customization_create( customization: CustomizationInputType """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String model: CustomizationInputType ): Customization! @deprecated(reason: "Use records instead of customizations") @doc(category: "Deprecated") """ Remove a customization """ customization_delete( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! ): Customization! @deprecated(reason: "use model_delete") @doc(category: "Deprecated") """ Updates a customization """ customization_update( customization: CustomizationInputType """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! model: CustomizationInputType ): Customization! @deprecated(reason: "Use records instead of customizations") @doc(category: "Deprecated") """ Remove all models, beware there is no coming back! """ customizations_delete_all( """ Deprecated, use all_model_schemas """ all_custom_model_types: Boolean """ Mark this if you really want to remove all models """ all_model_schemas: Boolean """ Deprecated, use model_schema_name """ custom_model_type_name: String filter: ModelsFilterInput model_schema_name: String """ Set to true if you want it to run synchronously """ sync: Boolean = false ): ObjectCount! @deprecated(reason: "use models_delete_all") @doc(category: "Deprecated") """ Schedules data export of either models, users or both, similarly to pos-cli, with the difference it is capable of additional filtering and sorting. Returns ID of an export task, which can be queries same way as pos-cli does its check. Generated CSVs are compatible with pos-cli data import. """ data_export( """ Encrypt the content """ encryption: PropertyUploadEncryptionInput """ deprecated, use records """ models: DataExportModelsInput """ provide at least empty hash if you want records to be exported """ records: DataExportRecordsInput split_files: Boolean = true """ provide at least empty hash if you want users to be exported """ users: DataExportUsersInput ): DataExport! @doc(category: "Import/Export") """ Deletes data export by ID """ data_export_delete(id: ID!): DataExport! @doc(category: "Import/Export") """ Insert the documents into the search index. If the document already exists in the index, the document will be updated instead. """ documents_bulk_upsert_rc( """ JSON documents to be put into the <index_name> index """ documents: [HashObject]! """ Index name """ search_index: String! ): HashObject @doc(category: "Data") """ Removes document from the search index. """ documents_delete_rc( id: ID! """ Index name """ search_index: String! ): HashObject @doc(category: "Data") """ Insert the document into the search index. If the document already exists in the index, the document will be updated instead. """ documents_insert_rc( """ JSON document to be put into the <index_name> index """ document: HashObject! id: ID """ Index name """ search_index: String! ): HashObject @doc(category: "Data") """ Insert the document into the search index. If the document already exists in the index, the document will be updated instead. """ documents_upsert_rc( """ JSON document to be put into the <index_name> index """ document: HashObject! id: ID """ Index name """ search_index: String! ): HashObject @doc(category: "Data") """ Email will be queued to send """ email_send( """ Variables that will be accesible in liquild """ data: HashObject """ Email parameters """ email: NotificationEmailInput """ Template defined in app/emails """ template: NotificationTemplateInput ): NotificationSendEmailPayload """ Creates a embedding """ embedding_create_rc(embedding: EmbeddingCreateInputType!): Embedding! @doc(category: "Data") """ Remove an embedding """ embedding_delete_rc(id: ID!): Embedding! @doc(category: "Data") """ Updates an embedding """ embedding_update_rc(embedding: EmbeddingUpdateInputType!, id: ID!): Embedding! @doc(category: "Data") form_submit( """ Values for fields defined in associated form. Might include "id" key which will identify the resource in case id argument is blank. """ fields: HashObject! """ Name of the form which should be submitted """ form_name: String! """ id of a resource to be updated; can also be provided as "id" key in "fields" hash (if both are present, this argument takes precedence). """ id: ID ): FormSubmitPayload @deprecated(reason: "Use page with mutation") @doc(category: "Deprecated") """ Generate presigned url where you can upload image. Include image processing. """ image_presign_url(options: ImagePresignUrlInput): ImagePresignedUploadUrl! @deprecated(reason: "Custom images were replaced with property upload") import_models( """ Remap ids, when disabled all ids needs to be an Integer """ _id_remap: Boolean = true """ Rebuilds index for full text search queries """ _index_rebuild: Boolean = true models: [CustomizationImport!]! ): ImportCustomizationsMutationPayload @doc(category: "Import/Export") import_transactables( """ Remap ids, when disabled all ids needs to be an Integer """ _id_remap: Boolean = true """ Rebuilds index for full text search queries """ _index_rebuild: Boolean = true transactables: [TransactableImport!]! ): ImportTransactablesMutationPayload @deprecated(reason: "use Models instead of Transactables") import_users( """ Remap ids, when disabled all ids needs to be an Integer """ _id_remap: Boolean = true """ Rebuilds index for full text search queries """ _index_rebuild: Boolean = true users: [UserImport!]! ): ImportUsersMutationPayload @doc(category: "Import/Export") """ Check JWT token and Sign In User """ jwt_decode_and_set_session(jwt_algorithm: JwtAlgorithm = HS256, jwt_token: String!): User @deprecated(reason: "User query users.jwt_token and session tag") @doc(category: "Deprecated") """ Creates a MarketplaceLogEntryMutation """ log(message: Any!, type: LogEntryType!): LogEntry @deprecated(reason: "Use log tag") @doc(category: "Deprecated") model_create( customization: CustomizationInputType """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String model: CustomizationInputType ): Model! @deprecated(reason: "Use records instead of models") @doc(category: "Deprecated") """ Remove a customization """ model_delete( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! ): Model! @deprecated(reason: "Use records instead of models") @doc(category: "Deprecated") """ Updates a customization """ model_update( customization: CustomizationInputType """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! model: CustomizationInputType ): Model! @deprecated(reason: "Use records instead of models") @doc(category: "Deprecated") """ Remove all models, beware there is no coming back! """ models_delete_all( """ Deprecated, use all_model_schemas """ all_custom_model_types: Boolean """ Mark this if you really want to remove all models """ all_model_schemas: Boolean """ Deprecated, use model_schema_name """ custom_model_type_name: String filter: ModelsFilterInput model_schema_name: String """ Set to true if you want it to run synchronously """ sync: Boolean = false ): ObjectCount! @deprecated(reason: "Use records instead of models") @doc(category: "Deprecated") """ Update all models matching filter conditions; use only for small result set, for larger amount of results use import feature """ models_update_all( filter: ModelsFilterInput model: CustomizationInputType! model_schema_name: String! """ Set to true if you want it to run synchronously """ sync: Boolean = false ): ObjectCount! @deprecated(reason: "Use records instead of models") @doc(category: "Deprecated") """ Presign upload url for direct s3 upload """ presigned_upload_url(options: PresignUrlInput): PresignedUploadUrl! @deprecated(reason: "use property_upload_presign_url or attachment_presign_url") @doc(category: "Deprecated") """ Generate presigned url where you can upload image. Include image processing. """ property_upload_presigned_url( """ Set to true if you want to include a content type in the POST request to S3. Useful in some cases where the default provided by S3 will not do, like for example for SVG files """ include_content_type: Boolean = false """ deprecated, use table """ model_schema_name: String """ Presign url options """ presign_url: PresignUrl """ name of the property of type upload """ property_name: String! """ Name of the Table schema to which the property belomgs. Must be blank if property is defined directly in user.yml """ table: String """ Must be set to true if property is defined directly in user.yml and not in a Model Schema """ user: Boolean = false ): PropertyUploadPresignedUrl! """ Creates a record """ record_create( """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String record: RecordInputType! ): Record! @doc(category: "Data") """ Remove a record """ record_delete( """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! table: String ): Record! @doc(category: "Data") """ Updates a record """ record_update( """ deprecated - Updates old customizations index, can get very slow for larger amount of data, we recommend using JSON Documents instead """ _index_update: Boolean = true """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! record: RecordInputType! ): Record! @doc(category: "Data") """ Creates multiple records at once """ records_create_rc(records: [RecordsCreateInputType!]!): [RecordCreate!]! @doc(category: "Data") """ Remove all records, beware there is no coming back! """ records_delete_all( """ Mark this if you really want to remove records across all tables """ any_table: Boolean filter: RecordsFilterInput """ Set to true if you want it to run synchronously """ sync: Boolean = false table: String ): ObjectCount! @doc(category: "Data") """ Update all records """ records_update_all( """ deprecated - Updates old customizations index, can get very slow for larger amount of data, we recommend using JSON Documents instead """ _index_update: Boolean = false filter: RecordsFilterInput record: RecordInputType! """ Set to true if you want it to run synchronously """ sync: Boolean = false table: String! ): ObjectCount! @doc(category: "Data") """ Adds a field to session """ session_create_field(name: String!, value: Any!): HashObject """ Adds a field to session """ session_delete_field(name: String!): HashObject """ Sms will be queued to send """ sms_send( """ Variables that will be accesible in liquid """ data: HashObject sms: SmsSendInput """ Template defined in app/smses """ template: NotificationTemplateInput ): SmsSendPayload transactable_create(form_configuration_name: String, transactable: TransactableInputType!): Transactable! @deprecated(reason: "use Models instead of Transactables") @doc(category: "Deprecated") transactable_delete(form_configuration_name: String, id: ID!): Transactable! @deprecated(reason: "use Models instead of Transactables") @doc(category: "Deprecated") transactable_update(form_configuration_name: String, id: ID!, transactable: TransactableInputType!): Transactable! @deprecated(reason: "use Models instead of Transactables") @doc(category: "Deprecated") transactables_delete_all( """ Mark this if you really want to remove all transactables """ all_transactable_types: Boolean transactable_type_name: String ): ObjectCount! @deprecated(reason: "use Models instead of Transactables") @doc(category: "Deprecated") update_models(models: [ModelUpdate!]!): UpdateCustomizationsMutationPayload @deprecated(reason: "Use records instead of models") @doc(category: "Deprecated") update_users(users: [UserUpdate!]!): UpdateUsersMutationPayload @deprecated(reason: "Use user_update or users_update_all") @doc(category: "Deprecated") """ Delete property upload. """ upload_delete( """ name of property upload to delete; if not present, set delete_all to true to delete all of object's property uploads """ attribute_name: String """ set to true to delete all of the object's property uploads """ delete_all_properties: Boolean """ set to true to perform the operation synchronously """ sync: Boolean = false """ id of the object """ upload_object_id: ID! upload_object_type: ObjectsWithUploadsEnum! ): ObjectUpload! """ Creates user """ user_create( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID user: UserInputType! ): User @doc(category: "Data") """ Deletes a user """ user_delete( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String id: ID! ): User @doc(category: "Data") """ Deletes a secret OTP token for a user """ user_otp_delete_token( """ OTP name, leave blank for default """ otp_name: String = null user_id: ID! ): UserOtpDeleteTokenInformation """ Refreshes the secret OTP token(s) for a user """ user_otp_secret_refresh( """ OTP name, leave blank for default """ otp_name: String = null user_id: ID! ): UserOtpSecretRefreshInformation user_profile_delete( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String profile_type: String! user_id: ID! ): Profile! @deprecated(reason: "Use records instead of user_profiles") @doc(category: "Deprecated") """ Remove all user profiles, beware there is no coming back! """ user_profiles_delete_all( """ Mark this if you really want to remove all user_profiles """ all_user_profile_types: Boolean """ User whose user profiles you want to delete """ user_id: Int user_profile_type_name: String ): ObjectCount! @deprecated(reason: "Use records instead of user_profiles") @doc(category: "Deprecated") """ Sign In User """ user_session_create( email: String """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String password: String! remember_me: String = "1" ): User @deprecated(reason: "Use sign_in tag") @doc(category: "Deprecated") """ Sign Out User """ user_session_destroy( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String ): HashObject @deprecated(reason: "Use session tag") @doc(category: "Deprecated") """ Updates current_user """ user_update( """ deprecated, use form_name """ form_configuration_name: String """ name of the form which whitelist attributes which can be saved. All notifications and callbacks associated with the form will be triggered. if left blank, all attributes will be allowed """ form_name: String """ when not provided we try to use current_user """ id: ID user: UserInputType! ): User @doc(category: "Data") """ Remove all users, beware there is no coming back! """ users_delete_all( """ If filter options are not specified, this must be checked """ all_users: Boolean filter: UsersFilterInput """ Set to true if you want it to run synchronously """ sync: Boolean = false ): ObjectCount! @doc(category: "Data") """ Update all users matching filter conditions; use only for small result set, for larger amount of results use import feature """ users_update_all( """ If filter options are not specified, this must be checked """ all_users: Boolean filter: UsersFilterInput """ Set to true if you want it to run synchronously """ sync: Boolean = false user: UserInputType! ): ObjectCount! @doc(category: "Data") } """ Root query for schema """ type RootQuery { activities(ids: [ID], page: Int = 1, per_page: Int = 20, sort: [ActivitiesSortInput!], uuids: [String]): ActivityStreamsActivityCollection @doc(category: "Activity feeds") admin_api_call_notifications(filter: ApiCallNotificationsFilterInput, page: Int = 1, per_page: Int = 20, sort: [ApiCallNotificationsSortInput!]): ApiCallNotificationCollection! @doc(category: "Admin") admin_assets(filter: QueryAssetsFilterInput, page: Int = 1, per_page: Int = 20, sort: [AssetsSortInput!]): AssetCollection! @doc(category: "Admin") """ Returns an asset listing for the instance. """ admin_assets_listing(id: ID!): AssetsListing! @doc(category: "Admin") admin_authorization_policies(filter: AuthorizationPoliciesFilterInput, page: Int = 1, per_page: Int = 20, sort: [AuthorizationPoliciesSortInput!]): AuthorizationPolicyCollection! @doc(category: "Admin") admin_background_jobs( filter: BackgroundJobsFilterInput """ Maximum 50 """ page: Int = 1 """ Maximum 100 """ per_page: Int = 20 sort: [BackgroundJobsSortInput!] ): BackgroundJobCollection! admin_current_instance: Instance! @doc(category: "Admin") admin_email_notifications(filter: EmailNotificationsFilterInput, page: Int = 1, per_page: Int = 20, sort: [EmailNotificationsSortInput!]): EmailNotificationCollection! @doc(category: "Admin") admin_form_configurations(filter: FormConfigurationsFilterInput, page: Int = 1, per_page: Int = 20, sort: [FormConfigurationsSortInput!]): FormConfigurationCollection! @deprecated(reason: "use admin_forms") @doc(category: "Deprecated") admin_forms(filter: FormsFilterInput, page: Int = 1, per_page: Int = 20, sort: [FormsSortInput!]): FormCollection! @doc(category: "Deprecated") admin_graphql(filter: GraphqlFilterInput, page: Int = 1, per_page: Int = 20, sort: [GraphqlSortInput!]): GraphQueryCollection! @doc(category: "Admin") admin_instance_metrics: InstanceMetrics! @doc(category: "Admin") admin_liquid_layouts(filter: LiquidLayoutsFilterInput, page: Int = 1, per_page: Int = 20, sort: [LiquidLayoutsSortInput!]): LiquidLayoutCollection! @doc(category: "Admin") admin_liquid_partials(filter: LiquidPartialsFilterInput, page: Int = 1, per_page: Int = 20, sort: [LiquidPartialsSortInput!]): LiquidPartialCollection! @doc(category: "Admin") admin_model_schemas(filter: ModelSchemasFilterInput, page: Int = 1, per_page: Int = 20, sort: [ModelSchemasSortInput!]): ModelSchemaCollection! @doc(category: "Admin") admin_pages( """ deprecated use filter: { metadata: { exclude: $exclude }} """ exclude: Boolean filter: PageFilterInput """ deprecated use filter: { metadata: { has_key: $key }} """ has_key: String """ deprecated use filter: { metadata: { contains: $text }} """ metadata: String """ deprecated use filter: { metadata: { attribute: { key: $name, value: $value }}} """ name: String page: Int = 1 per_page: Int = 20 sort: [PagesSortInput!] """ deprecated use filter: { metadata: { attribute: { key: $key, value: $value }}} """ value: String ): PageCollection! @doc(category: "Admin") """ Get mapping for specified index """ admin_search_index_rc( """ Index name """ search_index: String! ): HashObject admin_sent_notifications(filter: SentNotificationsFilterInput, page: Int = 1, per_page: Int = 20, sort: [SentNotificationsSortInput!]): SentNotificationCollection! @doc(category: "Admin") admin_sms_notifications(filter: SmsNotificationsFilterInput, page: Int = 1, per_page: Int = 20, sort: [SmsNotificationsSortInput!]): SmsNotificationCollection! @doc(category: "Admin") admin_tables(filter: TablesFilterInput, page: Int = 1, per_page: Int = 20, sort: [TablesSortInput!]): TableCollection! @doc(category: "Admin") admin_third_party_integrations(filter: ThirdPartyIntegrationsFilterInput, page: Int = 1, per_page: Int = 20, sort: [ThirdPartyIntegrationsSortInput!]): ThirdPartyIntegrationCollection! @doc(category: "Admin") admin_transactable_schemas(filter: TransactableSchemasFilterInput, page: Int = 1, per_page: Int = 20, sort: [TransactableSchemasSortInput!]): TransactableSchemaCollection! @doc(category: "Admin") admin_user_profile_schemas(filter: UserProfileSchemasFilterInput, page: Int = 1, per_page: Int = 20, sort: [UserProfileSchemasSortInput!]): UserProfileSchemaCollection! @doc(category: "Admin") admin_user_schema: UserSchema! @doc(category: "Admin") admin_versions(filter: VersionFilterInput, page: Int = 1, per_page: Int = 20, sort: [VersionSortInput!]): VersionCollection! @doc(category: "Admin") cms_discovery(types: [CMSItemType]): CMSItemDefinitionCollection @deprecated(reason: "Use admin_* queries") @doc(category: "Deprecated") cms_items(page: Int = 1, per_page: Int, type: CMSItemType!): CMSItemPayloadCollection @deprecated(reason: "Use admin_* queries") @doc(category: "Deprecated") constant(filter: EncryptedConstantFilterInput): EncryptedConstant @deprecated(reason: "Use constants") @doc(category: "Deprecated") constants(filter: EncryptedConstantsFilterInput, page: Int = 1, per_page: Int = 20, sort: [EncryptedConstantsSortInput!]): EncryptedConstantCollection! @doc(category: "Data") current_user: User @doc(category: "Data") custom_attribute_definition(name: String!): CustomAttributeDefinition @deprecated(reason: "Use admin_* queries") @doc(category: "Deprecated") customization(id: ID, name: String): Customization @deprecated(reason: "Use models instead.") @doc(category: "Deprecated") customizations( aggregations: [ListingAggregation] created_at: DateRange """ deprecated: use model_schema """ custom_model_type: QueryCustomModelType customizable_id: ID customizable_ids: [ID] customizable_type: String external_id: ID external_ids: [ID] id: ID ids: [ID] is_deleted: Boolean = false model_schema: QueryModelSchema """ Name of the Model Schema """ name: String """ Array of names of the Model Schema """ names: [String] page: Int = 1 per_page: Int = 20 properties: [QueryCustomAttribute] """ Fulltext search """ query: Query sort: [SortOrder] updated_at: DateRange user_id: ID user_ids: [ID] """ Array of ids to exclude from results """ without_ids: [ID] """ Array of names of the Model Schema which will be excluded from results """ without_names: [String] ): ListingsCustomizationCollection! @deprecated(reason: "Use records instead") @doc(category: "Deprecated") """ Exported data packages """ data_exports(filter: DataExportsFilterInput, page: Int = 1, per_page: Int = 20, sort: [DataExportsSortInput!]): DataExportCollection! @doc(category: "Import/Export") """ Search documents with fulltext search query or filter by arguments. """ documents_rc( aggregations: [ListingAggregation] filter: [IndexSearchFilterInput!] page: Int = 1 per_page: Int! """ Fulltext search """ query: IndexSearchQuery """ Index name """ search_index: String! sort: [IndexSearchSortInput!] ): IndexSearchCollection! @doc(category: "Data") """ Returns collection of all Embeddings in the system. """ embeddings_rc(filter: EmbeddingsFilterInput, page: Int = 1, per_page: Int!, sort: [EmbeddingsSortInput!]): EmbeddingCollection! @doc(category: "Data") feeds: [ActivityStreamsFeed] @doc(category: "Activity feeds") handlers(page: Int = 1, per_page: Int = 20): ActivityStreamsHandlerCollection @doc(category: "Activity feeds") images(filter: ImagesFilterInput, page: Int = 1, per_page: Int!, sort: [ImagesSortInput!]): CustomImageCollection! @deprecated(reason: "Use property upload") @doc(category: "Deprecated") instance: Instance @deprecated(reason: "Use admin_current_instance") @doc(category: "Deprecated") listings( aggregations: [ListingAggregation] """ Geo search Deprecetad """ geo_query: GeoQuery listing: QueryListing page: Int = 1 per_page: Int = 20 """ Fulltext search """ query: Query sort: [SortOrder] ): ListingCollection! @deprecated(reason: "Use Record instead of Transactables") @doc(category: "Deprecated") login_providers: [String] @deprecated(reason: "Not needed") @doc(category: "Deprecated") model(id: ID, name: String): Customization @deprecated(reason: "Use models instead") @doc(category: "Deprecated") """ Returns collection of all Models in the system, including soft deleted items. """ models(filter: ModelsFilterInput, page: Int = 1, per_page: Int!, sort: [ModelsSortInput!]): ModelCollection! @deprecated(reason: "Use records") @doc(category: "Deprecated") pages( """ deprecated use filter: { metadata: { exclude: $exclude }} """ exclude: Boolean filter: PageFilterInput """ deprecated use filter: { metadata: { has_key: $key }} """ has_key: String """ deprecated use filter: { metadata: { contains: $text }} """ metadata: String """ deprecated use filter: { metadata: { attribute: { key: $name, value: $value }}} """ name: String page: Int = 1 per_page: Int = 20 sort: [PagesSortInput!] """ deprecated use filter: { metadata: { attribute: { key: $key, value: $value }}} """ value: String ): PageCollection! @deprecated(reason: "use admin_pages") @doc(category: "Deprecated") people( aggregations: [ListingAggregation] """ Geo search """ geo_query: GeoQuery page: Int = 1 per_page: Int = 20 """ Fulltext search """ query: Query sort: [SortOrder] user: QueryUser ): UserListingCollection! @deprecated(reason: "Use users") @doc(category: "Deprecated") """ Returns collection of all Records in the system. """ records(filter: RecordsFilterInput, page: Int = 1, per_page: Int!, sort: [RecordsSortInput!]): RecordCollection! @doc(category: "Data") """ Returns collection of remote Records. """ remote_records( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! filter: RecordsFilterInput page: Int = 1 per_page: Int! sort: [RecordsSortInput!] ): RecordCollection! @doc(category: "Data") remote_users( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! filter: UsersFilterInput page: Int = 1 per_page: Int! sort: [UsersSortInput!] ): UserCollection! @doc(category: "Data") request: HTTPRequestContext @deprecated(reason: "Not needed") @doc(category: "Deprecated") streams( feed_id: ID """ Deprecated use feed_id """ feed_name: String feed_type: String! page: Int = 1 per_page: Int = 20 reset_last_read: Boolean = true ): ActivityStreamsActivityStreamCollection @doc(category: "Activity feeds") transactable( creator_id: ID id: ID """ Slug of the transactable """ slug: String ): Transactable! @deprecated(reason: "Not needed") @doc(category: "Deprecated") transactable_type( id: ID """ Name of Transactable Type """ name: String ): TransactableType @deprecated(reason: "Not needed; use ModelSchema instead of TransactableType") @doc(category: "Deprecated") transactable_types( """ List of ids """ ids: [ID] """ List of names """ names: [String] ): [TransactableType] @deprecated(reason: "Not needed; use ModelSchema instead of TransactableType") @doc(category: "Deprecated") transactables(page: Int = 1, per_page: Int = 20): TransactableCollection! @deprecated(reason: "Use Records instead of Transactables") @doc(category: "Deprecated") """ Finds non deleted users based on arguments provided """ user(email: String, external_id: String, id: ID, is_deleted: Boolean, slug: String): User @deprecated(reason: "Use users") @doc(category: "Deprecated") users(filter: UsersFilterInput, page: Int = 1, per_page: Int!, sort: [UsersSortInput!]): UserCollection! @doc(category: "Data") } enum SelectPropertyTypeEnum { """ """ array """ """ boolean """ """ float """ """ int """ """ json """ """ object """ """ string } """ Sent Notification(api call, email, sms) """ type SentNotification implements AdminNonDeployableSharedAttributesInterface { content: String created_at: JSONDate! id: ID! notification_id: ID! notification_type: NotificationTypeEnum! options: HashObject updated_at: JSONDate! } type SentNotificationCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [SentNotification!] total_entries: Int! total_pages: Int! } input SentNotificationsFilterInput { content: StringFilter created_at: DateFilter id: UniqIdFilter notification_id: UniqIdFilter notification_type: NotificationTypeFilter or: [SentNotificationsFilterInput!] updated_at: DateFilter } input SentNotificationsSortInput { created_at: StandardSort id: StandardSort updated_at: StandardSort } """ Sms Notification """ type SmsNotification implements AdminSharedAttributesInterface { """ liquid code to evaluate to valid text. If sms is triggered via form configuration, You have access to "form" variable, with data specified in the configuration. """ content: String created_at: JSONDate! """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String """ form configurations which trigger the email """ form_configurations: [FormConfiguration!] @deprecated(reason: "use forms") """ forms which trigger the email """ forms: [Form!] id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ name of the sms, which is used in form_configurations or mutation to trigger it """ name: String! """ defines the physical path of the file """ physical_file_path: String """ liquid code to evaluate to valid mobile number with country code, for example +1 541 754 3010. Useful filter to build valid mobile number is "$to_mobile_number". """ to: String! """ liquid code which should evaluate to true if the sms should be sent """ trigger_condition: String updated_at: JSONDate! } type SmsNotificationCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [SmsNotification!] total_entries: Int! total_pages: Int! } input SmsNotificationInputType { """ liquid code to evaluate to valid form html. If sms is triggered via form configuration, You have access to "form" variable, with data specified in configuration. """ content: String """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String = "0" """ deprecated, use form_ids """ form_configuration_ids: [ID] """ ids of forms which should trigger the sms """ form_ids: [ID] metadata: HashObject """ deprecated - derived from physical_file_path;name of the sms, which is used in forms or mutation to trigger it """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/smses/my_sms_notification """ physical_file_path: String! """ liquid code to evaluate to valid mobile number with country code, for example +1 541 754 3010. Useful filter to build valid mobile number is "$to_mobile_number". """ to: String """ liquid code which should evaluate to true if the sms should be sent """ trigger_condition: String = "true" } input SmsNotificationsFilterInput { callback: StringFilter content: StringFilter created_at: DateFilter """ Deprecated - use delay_by """ delay: StringFilter delay_by: StringFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [SmsNotificationsFilterInput!] physical_file_path: StringFilter to: StringFilter trigger_condition: StringFilter updated_at: DateFilter } input SmsNotificationsSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } """ Input object for sending an SMS directly """ input SmsSendInput { """ The content of the SMS message """ content: String! """ Delay in minutes before sending the SMS """ delay: Int = 0 """ The recipient phone number """ to: String! } """ Autogenerated return type of SmsSend. """ type SmsSendPayload { errors: [BaseError!]! @deprecated(reason: "Not needed") is_scheduled_to_send: Boolean! } input SortByChildField { """ Child type, for ex. transactable """ child_type: String """ Sort by this field, example: "id". """ field_name: String } input SortByDistance { """ Sort by this field, example: "geo_location" """ field_name: String! """ Reference point, usually current location """ reference_point: GeoPoint! unit: DistanceUnit = km } input SortByFieldOrder { """ Sort by this field, example: "id". """ field_name: String! """ Sort by provided values, example: [109, 903]. Full example: If { field_name: "id", values: [109, 903] }, Object#109 will be 1st, Object#903 will be 2nd, and then the rest. """ values: [String]! } input SortOrder { child_field: SortByChildField """ Sort by distance to geo point """ distance: SortByDistance """ Sort by given field by provided values """ field: SortByFieldOrder """ Sort by field """ name: String order: String = "asc" """ Sort by distance to geo point based on custom_addresses """ profile_distance: SortByDistance """ To sort by profile property use `properties.` prefix, ex. `profile_field: "properties.color"` """ profile_field: String """ Sort by profile property` """ profile_property: String """ Name of the user profile type """ profile_type: String """ Sort by property field """ property_name: String } enum SortOrderEnum { """ for strings: `a,b,c`, for numbers: `1,2,3` """ ASC """ for strings: `z,x,y`, for numbers: `99,98,97` """ DESC } input SpamProtectionInput { hcaptcha: HashObject recaptcha_v2: HashObject recaptcha_v3: SpamProtectionRecaptchaV3Input } input SpamProtectionInputType { recaptcha_v2: HashObject recaptcha_v3: SpamProtectionRecaptchaV3InputType } input SpamProtectionRecaptchaV3Input { action: String! minimum_score: Float } input SpamProtectionRecaptchaV3InputType { action: String! minimum_score: Float } input StandalonePropertyInputType { """ Type of the property """ attribute_type: PropertyTypeEnum = string """ Defines a relationship with other model schema or the user schema. Used during importing/exporting data. """ belongs_to: String """ Default value for new objects """ default_value: String metadata: HashObject """ Name of the property """ name: String! """ Provides options for type upload - defines for exmple whether newly upload file should be public etc """ options: PropertyUploadOptionsInput """ Id of the schema to which this property definition belongs. For target_type User set to null. """ target_id: ID """ Type of the schema to which this property definition belongs """ target_type: PropertyTargetType! } input StandardSort { order: SortOrderEnum! """ Order by specific values """ order_by_values: [String!] } input StringFilter { """ if argument is true, contains, starts_with and ends_with will be case sensitive """ case_sensitive: Boolean """ matches string within other string """ contains: String ends_with: String """ deprecated, use "value" instead """ exact: String not_contains: String not_ends_with: String not_starts_with: String not_value: String not_value_in: [String!] starts_with: String value: String value_in: [String!] } """ Table definition (old ModelSchema) """ type Table implements AdminPropertiesInterface & AdminSharedAttributesInterface { created_at: JSONDate! """ Deprecated, use properties instead. """ fields: [Property!]! @deprecated(reason: "Use properties") id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String! parameterized_name: String! """ defines the physical path of the file """ physical_file_path: String """ List of properties attributes to be included in the results """ properties: [Property!]! records_count_rc: Int! updated_at: JSONDate! } type TableCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Table!] total_entries: Int! total_pages: Int! } input TableInputType { metadata: HashObject """ defines where the table definition will be available after pull; for example schema/my_model.yml """ physical_file_path: String! properties: [NestedPropertyInputType] } input TablesFilterInput { created_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [TablesFilterInput!] parameterized_name: StringFilter physical_file_path: StringFilter updated_at: DateFilter } input TablesSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort parameterized_name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } """ Third Party Integration """ type ThirdPartyIntegration { created_at: JSONDate! id: ID! settings: HashObject! type: String! updated_at: JSONDate! } type ThirdPartyIntegrationCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [ThirdPartyIntegration!] total_entries: Int! total_pages: Int! } input ThirdPartyIntegrationsFilterInput { created_at: DateFilter id: UniqIdFilter or: [ThirdPartyIntegrationsFilterInput!] type: StringFilter updated_at: DateFilter } input ThirdPartyIntegrationsSortInput { created_at: StandardSort id: StandardSort type: StandardSort updated_at: StandardSort } type Transactable implements RelationOnDemandInterface { created_at: JSONDate creator: User creator_id: ID custom_address(name: String!): CustomAddrress custom_image(name: String!): [ListingImage] """ Fetch any customization by name or id; ex: hair_color: customization(name: "hair_color") """ customizations(id: ID, name: String, user_id: ID): [Customization!] external_id: ID id: ID! is_deleted: Boolean """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: String ): ListingsCustomization @deprecated(reason: "use `related_model`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: [String] ): [ListingsCustomization!] @deprecated(reason: "use `related_models`") name: String """ Fetch any Property by name; ex: hair_color: property(name: "hair_color") """ property(name: String!): String property_array(name: String!): [String!]! """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ related_model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: String ): ListingsCustomization """ Defines has-many relation with other model, returns maximum of 10000 records at once; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: [String] ): [ListingsCustomization!] """ Defines relation with other user, returns maximum of 10000 records at once; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ related_user(foreign_property: String = "id", join_on_property: String = "user_id"): User slug: String! updated_at: JSONDate """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user(foreign_property: String = "id", join_on_property: String = "user_id"): User @deprecated(reason: "use `related_users`") } type TransactableCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Transactable!] total_entries: Int! total_pages: Int! } input TransactableImport { addresses: [AddressImport!] attachments: [AttachmentsImport!] created_at: ISO8601DateTime creator_id: ID! """ ID will be changed after import, relations will be preseved """ id: ID! images: [ImagesImport!] name: String """ ex. {"color": "red"} """ properties: HashObject slug: String! type_name: String! updated_at: ISO8601DateTime } input TransactableInputType { creator_id: ID currency: String description: String name: String properties: [CustomAttributeInputType] quantity: Int slug: String state_event: String transactable_type_name: String } """ Schema for transactable (old name was TransactableType). Deprecated, use ModelSchema """ type TransactableSchema implements AdminPropertiesInterface & AdminSharedAttributesInterface { created_at: JSONDate! """ Deprecated, use properties instead. """ fields: [Property!]! @deprecated(reason: "Use properties") id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String! parameterized_name: String! """ defines the physical path of the file """ physical_file_path: String """ List of properties attributes to be included in the results """ properties: [Property!]! updated_at: JSONDate! } type TransactableSchemaCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [TransactableSchema!] total_entries: Int! total_pages: Int! } input TransactableSchemaInputType { """ deprecated, use properties """ fields: [NestedPropertyInputType] name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/transactable_types/my_transactable """ physical_file_path: String! properties: [NestedPropertyInputType] } input TransactableSchemasFilterInput { created_at: DateFilter id: UniqIdFilter name: StringFilter or: [TransactableSchemasFilterInput!] parameterized_name: StringFilter updated_at: DateFilter } input TransactableSchemasSortInput { created_at: StandardSort id: StandardSort name: StandardSort parameterized_name: StandardSort updated_at: StandardSort } type TransactableType { id: ID! name: String! } """ Translation """ type Translation { created_at: JSONDate! id: ID! key: String! locale: String! updated_at: JSONDate! value: String! } input TranslationInputType { key: String! """ for example en, de etc. """ locale: String! """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean value: String! } """ TranslationJson """ type TranslationJson { deleted_records: Int! key: String! locale: String! strategy: TranslationJsonStrategy! upserted_records: Int! value_json: HashObject! } input TranslationJsonInputType { """ path to the translation branch which should be set """ key: String! """ for example en, de etc. """ locale: String! """ json with translation tree which should be set """ value_json: HashObject! } """ Strategy how to set Translation JSON """ enum TranslationJsonStrategy { """ Will do the deep merge with existing translations, nothing will be deleted """ merge """ It will remove all existing translations for the given key prefix and replace them with provided values """ overwrite } input UniqIdFilter { not_value_in: [ID!] range: IdRangeFilter value: ID value_in: [ID!] } input UpdateApiCallNotificationInputType { """ liquid code which can be used to process the response from the endpoint. You have access to "response" variable. """ callback: String """ liquid code to evaluate to whatever you want to send as a request body, for example a JSON. """ content: String """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String = "0" """ ids of form configurations which should trigger the api call """ form_configuration_ids: [ID] """ Deprecated, use request_headers """ headers: HashObject """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ name of the api call, which is used in form_configurations or mutation to trigger it """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/notifications/api_call_notifications/my_api_call_notification """ physical_file_path: String request_headers: HashObject """ Liquid code which should evaluate to valid request type: Get, Post, Put, Patch, Delete, Head or if you want to send binary files: Post_Multipart, Put_Multipart, Patch_Multipart """ request_type: String """ liquid code to evaluate to valid endpoint for the request. """ to: String """ liquid code which should evaluate to true if the api call should be sent """ trigger_condition: String = "true" } input UpdateAuthorizationPolicyInputType { content: String flash_alert: String """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/authorization_policies/my_policy """ physical_file_path: String redirect_to: String } input UpdateCustomAttachmentInputType { custom_attribute_name: String """ URL to image that was uploaded to s3 presigned url """ direct_url: String owner_id: ID owner_type: String page_slug: String uploader_id: ID } """ Autogenerated return type of UpdateCustomizationsMutation. """ type UpdateCustomizationsMutationPayload { ids: [ID!]! } input UpdateEmailNotificationInputType { """ json of the form { "file_name.jpg": { "url": "http://example.com/file.jpg" } } which defines email attachments. Liquid will be processed. """ attachments: String """ liquid code to evaluate to valid, comma separated blind carbon copy list, for example "john@example.com, jane@example.com" """ bcc: String """ liquid code to evaluate to valid, comma separated carbon copy list, for example "john@example.com, jane@example.com" """ cc: String """ liquid code to evaluate to valid form html. If email is triggered via form configuration, You have access to "form" variable, with data specified in configuration. """ content: String """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String = "0" """ ids of forms which should trigger the email """ form_configuration_ids: [ID] """ email address from which you would like to send the email, for example notifications@mydomain.com """ from: String """ name of the liquid layout to which the content should be injected """ layout: String """ deprecated, use layout """ layout_path: String """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject """ name of the email, which is used in forms or mutation to trigger it """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/emails/my_email_notification """ physical_file_path: String """ email address to which users should reply, for example support@mydomain.com """ reply_to: String """ liquid code to evaluate to text """ subject: String """ liquid code to evaluate to valid, comma separated recipient list, for example "john@example.com, jane@example.com" """ to: String """ liquid code which should evaluate to true if the email should be sent """ trigger_condition: String = "true" } input UpdateFormConfigurationInputType { """ Same as callback, but invoked asynchronously. Recommended for performance reason. """ async_callback_actions: String """ liquid code which should evaluate to float. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ async_callback_delay: String = "0" """ Defines max number of retrying attempts in case of an error. Usually you do not want to change it. """ async_callback_max_attempts: Int = 1 """ defines the invocaction priority, the higher the quicker timeout """ async_callback_priority: AsyncCallbackPriority = default """ ids of authorization policies which should be checked """ authorization_policy_ids: [ID] """ liquid code to be invoked after persisting input to DB. If possible, use async callback actions instead """ callback_actions: String """ whitelist of attributes which can be persisted in the DB. On server side (callbacks, emails etc) you have access to submited values via form variable (for exapmple configuration: properties: my_var is accessible via form.properties.my_var ) """ configuration: HashObject = {} """ liquid code which has to evaluate to JSON. This extends/overwrites user submitted input via form, before validation. Most useful to store in DB sensitive data which you do not want user to modify, for example context.current_user.id """ default_payload: String """ liquid code which should evaluate to message which you want to display to user upon validation errors. Output is available via context.flash_alert """ flash_alert: String """ liquid code which should evaluate to message which you want to display to user after successful form submission. Output is available via context.flash_notice """ flash_notice: String """ liquid code to evaluate to valid form html. You have access to form_builder variable and form tag. """ liquid_body: String metadata: HashObject name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/form_configurations/my_form_configuration """ physical_file_path: String """ liquid code which should evaluate to valid path or url to which user should be redirected after successful form submission. """ redirect_to: String resource: String """ defines who can submit the form. If set to anyone, please make sure to provide authorization_policies """ resource_owner: String """ strategy to protect against spam attacks. """ spam_protection: SpamProtectionInputType = null } input UpdateFormInput { """ Same as callback, but invoked asynchronously. Recommended for performance reason. """ async_callback_actions: String """ liquid code which should evaluate to float. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ async_callback_delay: String """ Defines max number of retrying attempts in case of an error. Usually you do not want to change it. """ async_callback_max_attempts: Int """ defines the invocaction priority, the higher the quicker timeout """ async_callback_priority: AsyncCallbackPriority """ ids of authorization policies which should be checked """ authorization_policy_ids: [ID!] """ liquid code to be invoked after persisting input to DB. If possible, use async callback actions instead """ callback_actions: String """ whitelist of attributes which can be persisted in the DB. On server side (callbacks, emails etc) you have access to submited values via form variable (for exapmple configuration: properties: my_var is accessible via form.properties.my_var ) """ configuration: HashObject """ liquid code which has to evaluate to JSON. This extends/overwrites user submitted input via form, before validation. Most useful to store in DB sensitive data which you do not want user to modify, for example context.current_user.id """ default_payload: String """ liquid code which should evaluate to message which you want to display to user upon validation errors. Output is available via context.flash_alert """ flash_alert: String """ liquid code which should evaluate to message which you want to display to user after successful form submission. Output is available via context.flash_notice """ flash_notice: String """ liquid code to evaluate to valid form html. You have access to form_builder variable and form tag. """ liquid_body: String metadata: HashObject name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/forms/my_form """ physical_file_path: String """ liquid code which should evaluate to valid path or url to which user should be redirected after successful form submission. """ redirect_to: String resource: String """ defines who can submit the form. If set to anyone, please make sure to provide authorization_policies """ resource_owner: String """ Response headers for the form """ response_headers: String """ strategy to protect against spam attacks. """ spam_protection: SpamProtectionInput } input UpdateGraphqlInputType { body: String metadata: HashObject path: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/views/partials/my_partial """ physical_file_path: String } input UpdateLiquidLayoutInputType { body: String format: PageFormat = html """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject path: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/views/layouts/my_layout """ physical_file_path: String } input UpdateLiquidPartialInputType { body: String format: PageFormat = html """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject path: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/views/partials/my_partial """ physical_file_path: String } input UpdateModelSchemaInputType { """ deprecated, use properties """ fields: [NestedPropertyInputType] metadata: HashObject name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/custom_model_types/my_model """ physical_file_path: String properties: [NestedPropertyInputType] } input UpdatePageInputType { """ ids of authorization policies which should be checked """ authorization_policy_ids: [ID] content: String deleted_at: JSONDate dynamic_cache_expire: Int dynamic_cache_key: String dynamic_cache_layout: Boolean format: PageFormat handler: PageHandler """ name of the liquid layout to which the content should be injected """ layout: String """ deprecated, use layout """ layout_name: String """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean """ max nesting of the url to be resolved by this slug. For example slug "abc" with max_deep_level 2 will resolve /abc, abc/1, abc/2, but will NOT resolve abc/2/something. """ max_deep_level: Int metadata: HashObject """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/views/pages/my-page """ physical_file_path: String redirect_code: PageRedifectCode redirect_to: String request_method: PageRequestMethod response_headers: HashObject searchable: Boolean """ slug will not be automatically if you modify physical_file_path, as this operation is dangerous. After changing the slug you might want to ensure the SEO will not be hurt by creeating Page with the old slug and setting the redirect_to property to the new path. """ slug: String static_cache_expire: Int """ subdomain for page """ subdomain: String } input UpdateSmsNotificationInputType { """ liquid code to evaluate to valid form html. If sms is triggered via form configuration, You have access to "form" variable, with data specified in configuration. """ content: String """ liquid code which should evaluate to integer. Delays invoking the job by specified number of minutes. Useful to invoke code at certain point in time, for example 1 hour before something etc. To calculate proper number you can use time_diff filter. """ delay_by: String = "0" """ deprecated, use form_ids """ form_configuration_ids: [ID] metadata: HashObject """ name of the sms, which is used in forms or mutation to trigger it """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/smses/my_sms_notification """ physical_file_path: String """ liquid code to evaluate to valid mobile number with country code, for example +1 541 754 3010. Useful filter to build valid mobile number is "$to_mobile_number". """ to: String """ liquid code which should evaluate to true if the sms should be sent """ trigger_condition: String = "true" } input UpdateStandalonePropertyInputType { """ Type of the property """ attribute_type: PropertyTypeEnum """ Defines a relationship with other model schema or the user schema. Used during importing/exporting data. """ belongs_to: String """ Default value for new objects """ default_value: String metadata: HashObject """ Name of the property """ name: String """ Provides options for type upload - defines for exmple whether newly upload file should be public etc """ options: PropertyUploadOptionsInput """ Id of the schema to which this property definition belongs. For target_type User set to null. """ target_id: ID """ Type of the schema to which this property definition belongs """ target_type: PropertyTargetType } input UpdateTableInputType { metadata: HashObject name: String """ defines where the table definition will be available after pull; for example schema/my_model.yml """ physical_file_path: String properties: [NestedPropertyInputType] } input UpdateTransactableSchemaInputType { """ deprecated, use properties """ fields: [NestedPropertyInputType] name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/transactable_types/my_transactable """ physical_file_path: String properties: [NestedPropertyInputType] } input UpdateTranslationInputType { key: String """ for example en, de etc. """ locale: String """ defines whether this object will be manually managed, meaning it will not be affected via pos-cli deploy / sync """ manually_managed: Boolean value: String } input UpdateUserProfileSchemaInputType { """ deprecated, use properties """ fields: [NestedPropertyInputType] metadata: HashObject name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/user_profile_types/my_user_profile """ physical_file_path: String properties: [NestedPropertyInputType] } """ Autogenerated return type of UpdateUsersMutation. """ type UpdateUsersMutationPayload { ids: [ID!]! } enum UploadType { """ Attachment """ attachment """ Image """ image } type User implements HasModelsInterface & HasRecordsInterface & LegacyCustomAttributeInterface & PropertiesInterface & RemoteRecordsInterface & RemoteUsersInterface { """ Fetch address by name; ex: address: address(name: "office_address") """ address(name: String!): CustomAddrress @deprecated(reason: "use your own model for address if needed") """ Fetch all addresses, optionally you can filter results by name; ex: home_address: addresses(name: "home") """ addresses(name: String): [CustomAddrress!] @deprecated(reason: "use your own model for address if needed") """ Fetch attachment by name; ex: sales_report: attachment(name: "sales_report") """ attachment(name: String!): PrivateFile @deprecated(reason: "use property upload") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: attachments(name: "sales_report") """ attachments(name: String): [PrivateFile!] @deprecated(reason: "use property upload") """ Validate user credentials """ authenticate: Authenticate! """ stores information about user integrations with authentication providers like auth0, facebook, twitter etc """ authentications: [Authentication!] """ used for twilio click-to-call integraation to verify phone number """ communication: Communication @deprecated(reason: "use records") """ timestamp of when the record was created, automatically generated by the system """ created_at: JSONDate """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): CustomAddrress @deprecated(reason: "Use address") """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [CustomAddrress!] @deprecated(reason: "Use addresses") """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): PrivateFile @deprecated(reason: "Use attachment") """ Fetch all attachments, optionally you can filter results by name; ex: sales_reports: custom_attachments(name: "sales_report") """ custom_attachments(name: String): [PrivateFile!] @deprecated(reason: "Use attachments") """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): Image @deprecated(reason: "Use image") """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [Image!] @deprecated(reason: "Use images") customizations( """ model schema name """ name: String """ ID of user that created customization """ user_id: ID ): [Customization!] """ timestamp of when the record was soft delete, populated by delete action. It is also possible to manually set it via update. To undelete change it back to empty value, but please note that associated records would need to be manually undeleted as well. """ deleted_at: JSONDate email: String! encrypted_password: String """ Used mainly for import/export, if you want to use third party service as a source of truth """ external_id: String first_name: String """ ID of an object. """ id: ID """ Fetch image by name; ex: header: image(name: "header") """ image(name: String!): Image @deprecated(reason: "use property upload") """ Fetch all images, optionally you can filter results by name; ex: cat_images: images(name: "cat") """ images(name: String): [Image!] @deprecated(reason: "use property upload") """ JWT token that can be used for authentication """ jwt_token(algorithm: JwtAlgorithm = HS256): String """ Used by translations to set the language of currently logged in user """ language: String last_name: String middle_name: String """ Defines has-one relation with other model, e.g: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_name """ model_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") name: String """ Two factor authentication with TOTP(time based one time password) """ otp(otp_name: String = null): Otp! """ get custom OTP token names """ otp_tokens: [String!]! profile(profile_type: String!): Profile @deprecated(reason: "use profiles") """ associated user profiles, which can be used as user role or namespace for certain group of user properties """ profiles(profile_type: String): [Profile!]! """ List of all properties assigned to the object. """ properties(select: [PropertiesFieldInput!]): HashObject """ Fetch any property by name and return value as a String; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property by name and return value as an Array of Strings. ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property by name and return value as a Boolean; ex: price: property_boolean(name: "enabled") """ property_boolean(name: String!): Boolean """ Fetch any property by name and return value as a Float; ex: price: property_float(name: "price") """ property_float(name: String!): Float """ Fetch any property by name and return value as an Integer; ex: age: property_int(name: "age") """ property_int(name: String!): Int """ Fetch any property by name and return value as a JSON string. """ property_json(name: String!): JSONPayload """ Fetch any property by name, parse it as a JSON and return object """ property_object(name: String!): HashObject """ Fetch any property by name and returns upload details """ property_upload( """ Defines the number of seconds for which the generated url will be accessible. Must be set if acl was set to private """ expires_in: Int name: String! ): PropertyUpload """ Defines has-one relation with other model; ex: children: models(model_name: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_model( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): Model @deprecated(reason: "use `related_record`") """ Defines has-many relation with other model; ex: children: related_models(model_schema_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int """ Joins model [formaly customization] with model-schema-name == model_schema_name """ model_schema_name: [String]! sort: [ModelsSortInput!] ): [Model!] @deprecated(reason: "use `related_records`") """ Defines has-one relation with other record; ex: children: records(table: "child" join_on_property: "parent_id" foreign_property: "parent_id") { id } """ related_record( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load resources with foreign_property == join_on_property """ join_on_property: String! sort: [RecordsSortInput!] """ Joins record [formaly customization] with record-schema-name == table """ table: [String]! ): Record """ Defines has-many relation with other records; ex: children: related_records(table: "children", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_records( filter: RecordsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [RecordsSortInput!] """ Define table name which should be used as a source for related records """ table: [String]! ): [Record!] """ Defines relation with other user; ex: invited_by: related_user(join_on_property: "invited_by_id") { id } """ related_user( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_users( filter: ModelsFilterInput """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_records( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [Record!] """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_users( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): [User!] """ To be used in the url instead of id for SEO purposes. Must be unique. By default generated based on first-name and last-mame """ slug: String! """ determined based on authentications. For example, if user connects FB account, this will make API call to FB and check, if any of his friends have account on your Site """ social_friends(page: Int = 1, per_page: Int = 20): UserCollection @deprecated(reason: "use api calls") """ A token valid for desired number of hours, which you can use to authorize the user in third party application. To do it, include it in a header with name UserTemporaryToken. You can also manually verify the token with users{ authenticate { temporary_token(..) } } query. Token will be invalidated on password change. """ temporary_token( """ Number of hours after which the token expire """ expires_in: Float = 48.0 """ deprecated, use expires_in """ valid_for: Int ): String transactables: [Transactable!] @deprecated(reason: "use records") """ timestamp of when the record was updated, automatically generated by the system """ updated_at: JSONDate """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ """ join_on_property: String = "user_id" sort: [UsersSortInput!] ): User @deprecated(reason: "use `related_user`") """ Defines has-many relation with other user; ex: children: users(join_on_property: "parent_id", foreign_property: "parent_id") { id } """ users( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! limit: Int sort: [UsersSortInput!] ): [User!] @deprecated(reason: "use `related_users`") } type UserCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [User!] total_entries: Int! total_pages: Int! } input UserImport { created_at: JSONDate email: String! encrypted_password: String external_id: ID first_name: String """ ID will be stored as external_id, relations will be preseved. We generate it when empty. """ id: ID last_name: String middle_name: String name: String password: String profiles: [UserProfileImportType!] = [] """ ex. {"color": "red"} """ properties: HashObject slug: String! updated_at: JSONDate } input UserInputType { authentications: [AuthenticationInputType] custom_attachments: [AtachmentInputType] custom_images: [ImageInputType] deleted_at: JSONDate email: String external_id: ID first_name: String last_name: String middle_name: String name: String password: String profiles: [UserProfileInputType] properties: [CustomAttributeInputType] slug: String } type UserListing implements ListingCustomAttributeInterface & ListingsMetadata & RelationOnDemandInterface & RemoteModelInterface { authentications: [Authentication!] communication: ListingsCommunication created_at: JSONDate """ Fetch address by name; ex: address: custom_address(name: "office_address") """ custom_address(name: String!): ListingAddress """ Fetch all addresses, optionaly you can filter results by name; ex: home: custom_addresses(name: "home") """ custom_addresses(name: String): [ListingAddress!] """ Fetch attachment by name; ex: sales_report: custom_attachment(name: "sales_report") """ custom_attachment(name: String!): ListingsPrivateFile custom_attachments(name: String): [ListingsPrivateFile!] """ Fetch image by name; ex: header: custom_image(name: "header") """ custom_image(name: String!): ListingImage """ Fetch all images, optionaly you can filter results by name; ex: cat_images: custom_images(name: "cat") """ custom_images(name: String): [ListingImage!] customizations(name: String, properties: [QueryCustomAttribute], user_id: ID): [ListingsCustomization!] deleted_at: JSONDate email: String! external_id: ID first_name: String id: ID! language: String last_name: String middle_name: String """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: String ): ListingsCustomization @deprecated(reason: "use `related_model`") """ Defines has-many relation with other model; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_name: [String] ): [ListingsCustomization!] @deprecated(reason: "use `related_models`") name: String! profile(profile_type: String!): ListingUserProfile profiles: [ListingUserProfile!] """ List of all properties assigned to the object. """ properties: HashObject """ Fetch any custom attribute by name; ex: hair_color: property(name: "hair_color") """ property(name: String!): String """ Fetch any property of Array type by name, it returns Array in contrast to "property" which returns String; ex: todo_list: property_array(name: "todo_list") """ property_array(name: String!): [String!] """ Fetch any property of JSON type by name, it returns JSON in contrast to "property" which returns String; ex: todo_list: property_json(name: "todo_list") """ property_json(name: String!): JSONPayload """ Defines belongs-to relation with other model; ex: parent: model(model_name: "parent", join_on_property: "parent_id") { id } """ related_model( """ Load resources with foreign_property == join_on_property """ foreign_property: String = "id" """ Load remote resource with id == join_on_property """ join_on_property: String """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: String ): ListingsCustomization """ Defines has-many relation with other model, returns maximum of 10000 records at once; ex: children: models(model_name: "child", join_on_property: "parent_id", foreign_property: "parent_id") { id } """ related_models( """ Load resources with foreign_property == join_on_property """ foreign_property: String! """ Load resources with foreign_property == join_on_property """ join_on_property: String! """ Joins model [formaly customization] with custom-model-type-name == model_name """ model_schema_name: [String] ): [ListingsCustomization!] """ Defines relation with other user, returns maximum of 10000 records at once; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ related_user(foreign_property: String = "id", join_on_property: String = "user_id"): User """ Defines relation object accessible over HTTP in JSON collection identified by it's ID. """ remote_model( """ Endpoint that will return resources for given ids in json format """ endpoint: Endpoint! """ Load remote resource with id == join_on_property """ join_on_property: String! ): Customization slug: String """ when sorting by distance - field contains distance to target location """ sort_score: [Int] @deprecated(reason: "not supported everywhere") temporary_token( """ Number of hours before the token expires, default 48 hours """ expires_in: Float """ deprecated use expires_in """ valid_for: Int ): String updated_at: JSONDate """ Defines relation with other user; ex: invited_by: user(join_on_property: "invited_by_id") { id } """ user(foreign_property: String = "id", join_on_property: String = "user_id"): User @deprecated(reason: "use `related_users`") } type UserListingCollection { aggregations: Aggregations! current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! page: Int! @deprecated(reason: "use current_page") per_page: Int! results: [UserListing!] size: Int! total_entries: Int! total_pages: Int! } type UserOtpDeleteTokenInformation { otp_name: String status: String! """ ID of the user """ user_id: ID! } type UserOtpSecretRefreshInformation { otp_name: String status: String! """ ID of the user """ user_id: ID! } input UserProfileImportType { addresses: [AddressImport!] attachments: [AttachmentsImport!] """ ID will be stored as external_id, relations will be preseved. We generate it when empty. """ id: ID images: [ImagesImport!] """ ex. {"color": "red"} """ properties: HashObject type_name: String! } input UserProfileInputType { name: String values: DefaultProfileInputType } """ Schema for user profile (old name was UserProfileType) """ type UserProfileSchema implements AdminPropertiesInterface & AdminSharedAttributesInterface { created_at: JSONDate! """ Deprecated, use properties instead. """ fields: [Property!]! @deprecated(reason: "Use properties") id: ID! """ defines whether this objectwill be affected via pos-cli deploy / sync """ manually_managed: Boolean metadata: HashObject name: String! parameterized_name: String! """ defines the physical path of the file """ physical_file_path: String """ List of properties attributes to be included in the results """ properties: [Property!]! updated_at: JSONDate! } type UserProfileSchemaCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [UserProfileSchema!] total_entries: Int! total_pages: Int! } input UserProfileSchemaInputType { """ deprecated, use properties """ fields: [NestedPropertyInputType] metadata: HashObject """ deprecated - derived from physical_file_path """ name: String """ defines where the file definition will be available after pull; should start with the module name follow by private/public scope, for example manual/public/user_profile_types/my_user_profile """ physical_file_path: String! properties: [NestedPropertyInputType] } input UserProfileSchemasFilterInput { created_at: DateFilter id: UniqIdFilter """ Filter by metadata properties """ metadata: [JsonbFilter!] name: StringFilter or: [UserProfileSchemasFilterInput!] parameterized_name: StringFilter physical_file_path: StringFilter updated_at: DateFilter } input UserProfileSchemasSortInput { created_at: StandardSort id: StandardSort metadata: [JsonbSort!] name: StandardSort parameterized_name: StandardSort physical_file_path: StandardSort updated_at: StandardSort } input UserProfileUpdateType { addresses: [AddressImport!] attachments: [AttachmentsImport!] """ ID must match existing object id """ id: ID! images: [ImagesImport!] """ ex. {"color": "red"} """ properties: HashObject type_name: String! } input UserPropertyInput { property_name: String! } """ Schema for user defined in user.yml """ type UserSchema { """ List of properties attributes to be included in the results """ properties: [Property!]! } input UserUpdate { created_at: JSONDate email: String! external_id: ID first_name: String """ ID must match existing object id """ id: ID! last_name: String middle_name: String name: String profiles: [UserProfileUpdateType!] = [] slug: String! updated_at: JSONDate } input UsersFilterInput { created_at: DateFilter deleted_at: DateFilter email: StringFilter external_id: UniqIdFilter first_name: StringFilter id: UniqIdFilter last_name: StringFilter name: StringFilter """ join arguments with OR operator """ or: [UsersFilterInput!] profiles: [ProfileFilterInput!] properties: [PropertyFilterInput!] """ deprecated, use related_records; filter by related models """ related_models: [RelatedModelsFilterInput!] """ filter by related records """ related_records: [RelatedRecordsFilterInput!] related_users: [RelatedUsersFilterInput!] slug: StringFilter updated_at: DateFilter } input UsersSortInput { created_at: StandardSort deleted_at: StandardSort email: StandardSort external_id: StandardSort first_name: StandardSort id: StandardSort last_name: StandardSort name: StandardSort profile_properties: [PropertySort!] properties: [PropertySort!] slug: StandardSort updated_at: StandardSort } """ Represents data for an upload. """ input ValueUploadInput { """ Whether the file will be private or not - default private """ acl: PropertyUploadACL = private """ Cache-Control header for the file """ cache_control: String """ Data for the upload, required unless is url provided """ content: String """ Content-Disposition header for the file, for example "attachment; filename=foo.bar;" """ content_disposition: String """ Content-Type header for the file, for example "text/csv; charset=UTF-8" """ content_type: String """ Encrypt the content """ encryption: PropertyUploadEncryptionInput """ Files will be stored in <table name>/<property name>/<file_path>. If you do not provide file_path, then we will use <uuid>/<property_name>. If you override this, BE CAREFUL TO NOT OVERRIDE YOUR OWN FILES AND GENERATE UNIQUE PATH PER RECORD """ file_path: String """ Url to external file, which will be downloaded and uploaded to file_path, required unless content is provided. Will take precedence over content argument. """ remote_url: String """ Generate file synchronously """ synchronous: Boolean = false """ Type of the upload. If set to image, versions will be automatically fetched based on the property configuration """ type: ValueUploadInputTypeEnum! } """ Type for upload data """ enum ValueUploadInputTypeEnum { """ Image upload, generate versions """ image """ Data for a PDF upload """ pdf """ Data for a plain upload, without any processing """ plain } enum VectorDistanceEnum { """ euclidean distance between vectors """ euclidean } input VectorDistanceSort { embedding: [Float!] order: VectorDistanceEnum! } """ Version of object change from the last 7 days. """ type Version { """ timestamp when the event happened """ created_at: JSONDate! event: VersionAction! id: ID! """ id of an object which has been created/updated/deleted """ item_id: ID! """ type of an object which has been created/updated/deleted """ item_type: VersionItemType! """ json representation of a resource prior to the action; null for create action """ resource: HashObject """ most of the time ID of a User who performed the event. Can be something else if action was taken by pOS support team """ whodunnit: String } enum VersionAction { """ create """ create """ destroy """ destroy """ update """ update } type VersionCollection { current_page: Int! has_next_page: Boolean! has_previous_page: Boolean! per_page: Int! results: [Version!] total_entries: Int! total_pages: Int! } input VersionFilterInput { created_at: DateFilter event: StringFilter id: UniqIdFilter item_id: UniqIdFilter item_type: StringFilter or: [VersionFilterInput!] updated_at: DateFilter whodunnit: StringFilter } input VersionInput { manipulate: VersionManipulateInput """ name of the version, for example thumb """ name: String! output: VersionOutputInput resize: VersionResizeInput } enum VersionItemType { """ Model """ Customization """ User """ User """ UserProfile """ UserProfile } input VersionManipulateInput { """ value representing the sigma of the Gaussian mask, where sigma = 1 + radius / 2 """ blur: ImageBlur """ color for flatten """ flatten: CssColor = "#000000" """ Convert to 8-bit greyscale; 256 shades of grey. """ greyscale: Boolean = false } input VersionOutputInput { format: ImageFormat """ Defines the quality of the image; used to automatically compress the image; 0 - lowest quality, 100 - highest quality. Defaults: PNG: 80, WEBP: 80, JPEG: 85 """ quality: ImageQuality } input VersionResizeInput { """ background color when using a fit of containDefault: #000000 """ background: CssColor fit: ImageResizeFit = cover """ max height of an image. If left undefined, will depend on other parameters to determine size (like: width) """ height: Int """ position to use when fit is cover or contain """ position: ImageResizePosition """ max width of an image. If left undefined, will depend on other parameters to determine size (like: height) """ width: Int """ do not enlarge if the width or height are already less than the specified dimensions """ without_enlargement: Boolean = false } input VersionSortInput { created_at: StandardSort event: StandardSort id: StandardSort item_id: StandardSort item_type: StandardSort updated_at: StandardSort whodunnit: StandardSort }