openapi: 3.0.3 info: version: 0.25.7 title: Unified CRM Accounts CustomObjectSchemas API contact: name: Supaglue email: docs@supaglue.com url: https://supaglue.com description: '#### Introduction Welcome to the Unified API (CRM) documentation. You can use this API to write to multiple third-party providers within the CRM category. [View common schema for CRM](https://docs.supaglue.com/platform/common-schemas/crm) #### Base API URL ``` https://api.supaglue.io/crm/v2 ``` ' servers: - url: https://api.supaglue.io/crm/v2 description: Supaglue API tags: - name: CustomObjectSchemas description: A `Custom Object Schema` is an object schema defined by the user. paths: /metadata/custom_objects: parameters: - $ref: '#/components/parameters/x-customer-id' - $ref: '#/components/parameters/x-provider-name' get: operationId: listCustomObjectSchemas summary: List custom object schemas tags: - CustomObjectSchemas security: - x-api-key: [] description: 'List custom object schemas Support: | Provider | Supported | | ----------- | --------- | | Hubspot | Yes | | Salesforce | Yes | | Pipedrive | No | | MS Dynamics | No | ' parameters: [] responses: '200': description: An array containing the names and labels of Custom Objects content: application/json: schema: type: array items: $ref: '#/components/schemas/simple_custom_object_schema' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '499': $ref: '#/components/responses/remoteProviderError' '500': $ref: '#/components/responses/internalServerError' '501': $ref: '#/components/responses/notImplemented' post: operationId: createCustomObjectSchema summary: Create custom object schema tags: - CustomObjectSchemas parameters: [] description: 'Create custom object schema Support: | Provider | Supported | Notes | | ----------- | --------- | ------------------------------------------------------- | | Hubspot | Yes | All field types supported except picklist/multipicklist | | Salesforce | Yes | All field types supported except picklist/multipicklist | | Pipedrive | No | | | MS Dynamics | No | | ' security: - x-api-key: [] requestBody: required: true content: application/json: schema: type: object properties: object: $ref: '#/components/schemas/create_custom_object_schema' required: - object responses: '201': description: Custom Object Schema created content: application/json: schema: type: object properties: object: type: object properties: name: type: string required: - name warnings: $ref: '#/components/schemas/warnings' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '422': $ref: '#/components/responses/unprocessableEntity' '499': $ref: '#/components/responses/remoteProviderError' '500': $ref: '#/components/responses/internalServerError' '501': $ref: '#/components/responses/notImplemented' /metadata/custom_objects/{object_name}: parameters: - $ref: '#/components/parameters/x-customer-id' - $ref: '#/components/parameters/x-provider-name' - $ref: '#/components/parameters/object_name' get: operationId: getCustomObjectSchema summary: Get custom object schema details tags: - CustomObjectSchemas security: - x-api-key: [] description: 'Get custom object schema details Support: | Provider | Supported | | ----------- | --------- | | Hubspot | Yes | | Salesforce | Yes | | Pipedrive | No | | MS Dynamics | No | ' responses: '200': description: CustomObject content: application/json: schema: $ref: '#/components/schemas/custom_object_schema' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '499': $ref: '#/components/responses/remoteProviderError' '500': $ref: '#/components/responses/internalServerError' '501': $ref: '#/components/responses/notImplemented' put: operationId: updateCustomObjectSchema summary: Update custom object schema tags: - CustomObjectSchemas description: 'Update custom object schema Support: | Provider | Supported | Notes | | ----------- | --------- | ------------------------------------------------------- | | Hubspot | Yes | All field types supported except picklist/multipicklist | | Salesforce | Yes | All field types supported except picklist/multipicklist | | Pipedrive | No | | | MS Dynamics | No | | ' security: - x-api-key: [] requestBody: required: true content: application/json: schema: type: object properties: object: $ref: '#/components/schemas/update_custom_object_schema' required: - object responses: '200': description: Custom Object Schema updated content: application/json: schema: type: object properties: warnings: $ref: '#/components/schemas/warnings' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '422': $ref: '#/components/responses/unprocessableEntity' '499': $ref: '#/components/responses/remoteProviderError' '500': $ref: '#/components/responses/internalServerError' '501': $ref: '#/components/responses/notImplemented' components: schemas: create_custom_object_schema: type: object properties: name: type: string example: ticket description: The name you'd like to use for the custom object. For Salesforce, we will append `__c` if necessary. For HubSpot, it will pass through as-is. description: type: string nullable: true example: Ticket object labels: type: object properties: singular: type: string example: Ticket plural: type: string example: Tickets required: - singular - plural primary_field_id: type: string description: The key name of the "primary" field. For example, in HubSpot, this is the field that will be displayed for a record in the UI by default. For Salesforce, this will be referenced as the "Name" field. example: ticket_id fields: type: array items: $ref: '#/components/schemas/custom_object_field' required: - name - description - labels - primary_field_id - fields property_type: type: string enum: - text - textarea - number - picklist - multipicklist - date - datetime - boolean - url - other description: "Type of the field.\n\n:::note\n`picklist` and `multipicklist` property types are currently only supported in Salesforce and Hubspot\n:::\n\n:::note\n`url` property type currently is only natively supported in Salesforce.\n:::\n\nSupport:\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TypeHubspot (type-fieldType)SalesforcePipedrive
textstring-textTextvarchar_auto
textareastring-textareaTextareatext
numbernumber-numberInt/Double (depending on scale)double
picklistenumeration-selectPicklistenum
multipicklistenumeration-checkboxMultipicklistset
datedate-dateDatedate
datetimedatetime-dateDatetimedate
booleanbool-booleancheckboxCheckboxenum
urlNot SupportedUrlNot Supported
\n" simple_custom_object_schema: type: object properties: name: type: string example: ticket labels: type: object properties: singular: type: string example: Ticket plural: type: string example: Tickets required: - singular - plural required: - name - label custom_object_schema: type: object properties: name: type: string example: ticket description: type: string nullable: true example: Ticket object labels: type: object properties: singular: type: string example: Ticket plural: type: string example: Tickets required: - singular - plural fields: type: array items: $ref: '#/components/schemas/custom_object_field' required: - name - description - labels - fields warnings: type: array items: type: object properties: detail: type: string problem_type: type: string title: type: string update_custom_object_schema: type: object properties: description: type: string nullable: true example: Ticket object labels: type: object properties: singular: type: string example: Ticket plural: type: string example: Tickets required: - singular - plural primary_field_id: type: string description: The key name of the "primary" field. For example, in HubSpot, this is the field that will be displayed for a record in the UI by default. For Salesforce, this will be referenced as the "Name" field. example: ticket_id fields: type: array items: $ref: '#/components/schemas/custom_object_field' required: - description - labels - primary_field_id - fields picklist_option: type: object properties: label: type: string example: Option 1 value: type: string example: option_1 description: type: string description: A description of this option. hidden: type: boolean description: Defaults to false. required: - label - value errors: type: array items: type: object properties: id: type: string description: A unique identifier for the instance of the error. Provide this to support when contacting Supaglue. example: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5 detail: type: string description: A detailed description of the error. example: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]' problem_type: type: string description: The Supaglue error code associated with the error. example: MISSING_REQUIRED_FIELD deprecated: true title: type: string description: A brief description of the error. The schema and type of message will vary by Provider. example: 'Property values were not valid ' code: type: string description: The Supaglue error code associated with the error. example: MISSING_REQUIRED_FIELD status: type: string description: The HTTP status code associated with the error. example: '400' meta: type: object description: Additional metadata about the error. properties: cause: type: object description: The cause of the error. Usually the underlying error from the remote Provider. example: code: 400 body: status: error message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]' correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2 category: VALIDATION_ERROR headers: access-control-allow-credentials: 'false' cf-cache-status: DYNAMIC cf-ray: 8053d17b9dae9664-SJC connection: close content-length: '361' content-type: application/json;charset=utf-8 date: Mon, 11 Sep 2023 23:51:22 GMT nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}' server: cloudflare strict-transport-security: max-age=31536000; includeSubDomains; preload vary: origin, Accept-Encoding x-content-type-options: nosniff x-envoy-upstream-service-time: '91' x-evy-trace-listener: listener_https x-evy-trace-route-configuration: listener_https/all x-evy-trace-route-service-name: envoyset-translator x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2 x-evy-trace-virtual-host: all x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2 x-hubspot-ratelimit-interval-milliseconds: '10000' x-hubspot-ratelimit-max: '100' x-hubspot-ratelimit-remaining: '99' x-hubspot-ratelimit-secondly: '10' x-hubspot-ratelimit-secondly-remaining: '9' x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2 x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000 origin: type: string enum: - remote-provider - supaglue description: The origin of the error. example: remote-provider application_name: type: string description: The name of the application that generated the error. example: MyCompany Production required: - origin additionalProperties: true required: - id - detail - problem_type - title - code - status - meta example: - meta: cause: code: 400 body: status: error message: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]' correlationId: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2 category: VALIDATION_ERROR headers: access-control-allow-credentials: 'false' cf-cache-status: DYNAMIC cf-ray: 8053d17b9dae9664-SJC connection: close content-length: '361' content-type: application/json;charset=utf-8 date: Mon, 11 Sep 2023 23:51:22 GMT nel: '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}' report-to: '{"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=FgwuXObO%2Fz6ahUJKsxjDLaXTWjooJ8tB0w4%2B%2BKaulGStx0FGkn1PoJoOx2KrFMfihzNdfAqikq7CmgbdlmwKB8hkmp3eTb68qpg10LXFlRgiSqRhbWM7yYSfo8CXmPBc"}],"group":"cf-nel","max_age":604800}' server: cloudflare strict-transport-security: max-age=31536000; includeSubDomains; preload vary: origin, Accept-Encoding x-content-type-options: nosniff x-envoy-upstream-service-time: '91' x-evy-trace-listener: listener_https x-evy-trace-route-configuration: listener_https/all x-evy-trace-route-service-name: envoyset-translator x-evy-trace-served-by-pod: iad02/hubapi-td/envoy-proxy-6c94986c56-9xsh2 x-evy-trace-virtual-host: all x-hubspot-correlation-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2 x-hubspot-ratelimit-interval-milliseconds: '10000' x-hubspot-ratelimit-max: '100' x-hubspot-ratelimit-remaining: '99' x-hubspot-ratelimit-secondly: '10' x-hubspot-ratelimit-secondly-remaining: '9' x-request-id: ac94252c-90b5-45d2-ad1d-9a9f7651d7d2 x-trace: 2B1B4386362759B6A4C34802AD168B803DDC1BE770000000000000000000 detail: 'Property values were not valid: [{"isValid":false,"message":"Property \"__about_us\" does not exist","error":"PROPERTY_DOESNT_EXIST","name":"__about_us","localizedErrorMessage":"Property \"__about_us\" does not exist"}]' problem_type: MISSING_REQUIRED_FIELD title: 'Property values were not valid ' code: MISSING_REQUIRED_FIELD status: '400' id: 9366efb4-8fb1-4a28-bfb0-8d6f9cc6b5c5 custom_object_field: type: object properties: id: type: string description: The machine name of the property as it appears in the third-party Provider. In Salesforce, this must end with `__c`. example: FirstName label: type: string description: The human-readable name of the property as provided by the third-party Provider. example: First Name description: type: string description: A description of the field. is_required: type: boolean description: Whether or not this field is required. Must be false for Salesforce boolean fields. example: false default_value: description: The default value for the property. Only supported for Salesforce. oneOf: - type: string - type: number - type: boolean group_name: type: string example: supaglue description: Only applicable for Hubspot. If specified, Supaglue will attempt to attach the field to this group if it exists, or create it if it doesn't. type: $ref: '#/components/schemas/property_type' precision: type: number description: Only applicable in Salesforce. If not given, will default to 18. scale: type: number description: Only applicable in Salesforce. If not given, will default to 0. options: type: array description: The list of options for a picklist/multipicklist field. items: $ref: '#/components/schemas/picklist_option' raw_details: type: object description: The raw details of the property as provided by the third-party Provider, if available. additionalProperties: true example: {} required: - id - label - type responses: conflict: description: Conflict content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' notImplemented: description: Not implemented content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' unprocessableEntity: description: Unprocessable entity content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' badRequest: description: Bad request content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' notFound: description: Not found content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' forbidden: description: Forbidden content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' unauthorized: description: Unauthorized content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' internalServerError: description: Internal server error content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' remoteProviderError: description: Remote provider error content: application/json: schema: type: object properties: errors: $ref: '#/components/schemas/errors' parameters: x-customer-id: name: x-customer-id in: header schema: type: string example: my-customer-1 description: The customer ID that uniquely identifies the customer in your application required: true x-provider-name: name: x-provider-name in: header schema: type: string example: salesforce description: The provider name required: true object_name: name: object_name in: path schema: type: string example: MyCustomObject__c description: The unique name of the custom object. For Salesforce, this should end with __c. For Hubspot, this will typically be the singular form of the object. required: true securitySchemes: x-api-key: type: apiKey name: x-api-key in: header description: API key to allow developers to access the API