openapi: 3.0.3 info: version: 0.0.6 title: Ecosystem API description: 'Ecosystem API' contact: email: hello@apideck.com url: 'https://developers.apideck.com' x-logo: url: 'https://developers.apideck.com/icon.png' license: name: Apache 2.0 url: 'http://www.apache.org/licenses/LICENSE-2.0.html' externalDocs: description: Apideck Developer Docs url: 'https://developers.apideck.com' servers: - url: 'https://api.apideck.com' description: Production security: [] tags: - name: Ecosystem description: '' - name: Listing description: '' - name: Collection description: '' - name: Category description: '' - name: Product description: '' components: schemas: Category: type: object additionalProperties: false required: [name, slug] properties: id: type: string description: type: string name: type: string slug: type: string count: type: integer example: 1 translations: $ref: '#/components/schemas/Translations' listing_description_text_template: type: string listing_pricing_text_template: type: string listing_features_text_template: type: string logo: $ref: '#/components/schemas/Logo' created_at: type: string readOnly: true format: date-time updated_at: type: string readOnly: true format: date-time Collection: type: object additionalProperties: false required: [name, slug, visible] properties: id: type: string card_background_color: type: string card_background_image: $ref: '#/components/schemas/File' card_columns: type: integer card_style: type: string count: type: integer example: 1 description: type: string logo: $ref: '#/components/schemas/File' name: type: string hidden_from_homepage: type: boolean show_max_items_homepage: type: integer sequence: type: integer slug: type: string translations: $ref: '#/components/schemas/Translations' visible: type: boolean CardSettings: type: object additionalProperties: false properties: background_color: type: string border_color: type: string border_radius: type: string border_size: type: string color: type: string columns: type: integer description_lines: type: integer icon_border_radius: type: string icon_shadow_enabled: type: boolean icon_size: type: integer shadow_enabled: type: boolean show_action: type: boolean show_badges: type: boolean show_category: type: boolean show_description: type: boolean style: type: string Contact: type: object required: [name] properties: id: type: string readOnly: true example: '12345' first_name: type: string last_name: type: string name: type: string email: type: string role: type: string linked_in: type: string twitter: type: string CTASettings: type: object additionalProperties: false properties: background_color: type: string button_background_color: type: string button_color: type: string button_label: type: string button_link: type: string color: type: string description: type: string enabled: type: boolean title: type: string CustomSettings: type: object additionalProperties: false properties: css: type: string css_link: type: string domain: type: string html_footer: type: string html_nav: type: string java_script_link: type: string Ecosystem: type: object additionalProperties: false required: [name, slug, is_published] properties: id: type: string readOnly: true example: '12345' about: type: string alternatives_background_color: type: string alternatives_color: type: string attribution: type: boolean body_background_color: type: string body_button_background_color: type: string body_button_color: type: string body_color: type: string body_link_color: type: string card_settings: $ref: '#/components/schemas/CardSettings' categories_count_badge: type: boolean categories_show_max_items: type: integer collections_count_badge: type: boolean collections_title: type: string create_link: type: string cta_settings: $ref: '#/components/schemas/CTASettings' custom_domain: type: string custom_settings: $ref: '#/components/schemas/CustomSettings' detail_pages_enabled: type: boolean footer_background_color: type: string footer_color: type: string google_site_verification_id: type: string hide_install_buttons: type: boolean home_page_collection_category_cards: type: boolean home_page_show_all_listings: type: boolean installation_request_flow_enabled: type: boolean integration_settings: $ref: '#/components/schemas/IntegrationSettings' is_published: type: boolean lead_form_settings: $ref: '#/components/schemas/LeadFormSettings' listing_settings: $ref: '#/components/schemas/ListingSettings' masthead_settings: $ref: '#/components/schemas/MastheadSettings' menu_position: enum: - TOP - LEFT - RIGHT - HIDDEN type: string menu_style: enum: - LIST - PILL - FILTER type: string meta_tag_settings: $ref: '#/components/schemas/MetaTagSettings' name: type: string navigation_background_color: type: string navigation_color: type: string navigation_logo_post_fix: type: string navigation_mobile_menu_type: enum: - ICON - TEXT type: string navigation_sticky: type: boolean primary_color: type: string privacy_link: type: string request_link: type: string shadow_page_description: type: string shadow_pages_enabled: type: boolean show_attribution_badge: type: boolean show_requested_listings: type: boolean slug: type: string terms_link: type: string total_published_listings: type: integer unify_application_id: type: string utm_campaign: type: string website: type: string zaps_menu_title: type: string zaps_page_enabled: type: boolean created_at: type: string readOnly: true format: date-time updated_at: type: string readOnly: true format: date-time File: type: object required: [url] properties: id: type: string readOnly: true example: '12345' content_type: type: string example: 'application/jpeg' type: enum: - LOGO - BANNER - SCREENSHOT type: string url: type: string created_at: type: string readOnly: true format: date-time updated_at: type: string readOnly: true format: date-time IntegrationSettings: type: object additionalProperties: false properties: albacross_id: type: string automate_enabled: type: boolean blendr_enabled: type: boolean combidesk_enabled: type: boolean crisp_id: type: string drift_id: type: string google_analytics_id: type: string google_tag_manager_id: type: string heap_id: type: string hubspot_portal_id: type: string integromat_enabled: type: boolean intercom_app_id: type: string iubenda_cookie_policy_id: type: string iubenda_site_id: type: string journy_io_domain: type: string journy_io_id: type: string livechat_id: type: string metomic_id: type: string microsoft_flow_id: type: string microsoft_flow_enabled: type: boolean onetrust_id: type: string piesync_enabled: type: boolean segment_id: type: string segment_enabled: type: boolean tray_io_enabled: type: boolean zapier_beta_link: type: string zapier_enabled: type: boolean zapier_id: type: string LeadFormSettings: type: object additionalProperties: false properties: capture_form_enabled: type: boolean first_name_field_enabled: type: boolean first_name_field_required: type: boolean integration_enabled: type: boolean last_name_field_enabled: type: boolean last_name_field_required: type: boolean telephone_field_enabled: type: boolean telephone_field_required: type: boolean work_email_validation: type: boolean Links: type: object description: Links to navigate to previous or next pages through the API required: [current] properties: previous: type: string description: Link to navigate to the previous page through the API example: 'https://api.apideck.com/ecosystem/123abc/listings?cursor=em9oby1jcm06OnBhZ2U6OjE%3D' current: type: string description: Link to navigate to the current page through the API example: 'https://api.apideck.com/ecosystem/123abc/listings' next: type: string description: Link to navigate to the previous page through the API example: 'https://api.apideck.com/ecosystem/123abc/listings?cursor=em9oby1jcm06OnBhZ2U6OjM' Listing: type: object additionalProperties: false required: [name, slug] properties: id: type: string readOnly: true example: '12345' external_id: type: string readOnly: true example: '12345' automate_id: type: string blendr_id: type: string card_background_color: type: string card_background_image: $ref: '#/components/schemas/File' categories: type: array items: $ref: '#/components/schemas/Category' cloud_service_id: type: string combidesk_id: type: string collections: type: array items: $ref: '#/components/schemas/Collection' description: type: string detail_page_disabled: type: boolean features: type: string integromat_id: type: string logo: $ref: '#/components/schemas/Logo' meta_tag_description: type: string meta_tag_keywords: type: string meta_tag_title: type: string microsoft_flow_id: type: string name: type: string native_integration: type: boolean native_integration_link: type: string media: type: array items: $ref: '#/components/schemas/Media' partner: $ref: '#/components/schemas/Partner' piesync_id: type: string pricing: type: string products: type: array items: $ref: '#/components/schemas/Product' published: type: boolean published_at: type: string readOnly: true format: date-time screenshots: type: array items: $ref: '#/components/schemas/Screenshot' segment_id: type: string slug: type: string sticky: type: boolean tag_line: type: string third_party_integration: type: boolean third_party_integration_link: type: string translations: $ref: '#/components/schemas/Translations' tray_io_id: type: string unify_connector_id: type: string upcoming: type: boolean zapier_id: type: string created_at: type: string readOnly: true format: date-time updated_at: type: string readOnly: true format: date-time ListingSettings: type: object additionalProperties: false properties: description_text_template: type: string description_title: type: string features_text_template: type: string features_title: type: string install_button_label: type: string name_postfix: type: string naming: enum: - LISTING - LISTINGS - INTEGRATIONS - APPS - CONNECTORS - DATASOURCES - ADDONS - PLUGINS - PARTNERS - CHANNELS - CONNECTIONS - EXTENSIONS type: string native_integration_link: type: string pricing_disabled: type: boolean pricing_text_template: type: string pricing_title: type: string sidebar_position: enum: - TOP - LEFT - RIGHT - HIDDEN type: string Logo: type: object additionalProperties: false required: [url] properties: content_type: type: string id: type: string type: enum: - LOGO - BANNER - SCREENSHOT type: string url: type: string MastheadSettings: type: object additionalProperties: false properties: background: type: string background_color: type: string color: type: string columns: type: integer description: type: string title: type: string Media: type: object additionalProperties: false required: [url] properties: id: type: string readOnly: true example: '12345' caption: type: string example: 'Media' type: enum: - SCREENSHOT - VIDEO type: string url: type: string sequence: type: integer example: 1 translations: $ref: '#/components/schemas/Translations' Meta: type: object description: Response metadata properties: items_on_page: type: integer description: Number of items returned in the data property of the response example: 50 cursors: type: object description: Cursors to navigate to previous or next pages through the API properties: previous: type: string description: Cursor to navigate to the previous page of results through the API example: em9oby1jcm06OnBhZ2U6OjE= nullable: true current: type: string description: Cursor to navigate to the current page of results through the API example: em9oby1jcm06OnBhZ2U6OjI= nullable: true next: type: string description: Cursor to navigate to the next page of results through the API example: em9oby1jcm06OnBhZ2U6OjM= nullable: true MetaTagSettings: type: object additionalProperties: false properties: description: type: string description_category_page: type: string description_collection_page: type: string description_listing_page: type: string keywords: type: string title: type: string title_postfix: type: string Partner: type: object additionalProperties: false required: [company] properties: id: type: string readOnly: true example: '12345' company: type: string contacts: type: array items: $ref: '#/components/schemas/Contact' icon: $ref: '#/components/schemas/File' listed: type: string twitter: type: string website: type: string created_at: type: string readOnly: true format: date-time updated_at: type: string readOnly: true format: date-time Product: type: 'object' additionalProperties: false required: [name, slug, visible] properties: id: type: string readOnly: true example: '12345' name: type: string slug: type: string description: type: string visible: type: boolean sequence: type: integer example: 1 count: type: integer example: 1 logo: $ref: '#/components/schemas/File' translations: $ref: '#/components/schemas/Translations' Screenshot: type: object additionalProperties: false properties: id: type: string readOnly: true example: '12345' caption: type: string example: 'Screenshot' file: $ref: '#/components/schemas/File' translations: $ref: '#/components/schemas/Translations' Translations: nullable: true type: array required: [key, locale, value] items: $ref: '#/components/schemas/Translation' Translation: type: object required: [key, locale] properties: key: type: string locale: type: string value: type: string GetEcosystemResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: $ref: '#/components/schemas/Ecosystem' GetCategoriesResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: type: array items: { $ref: '#/components/schemas/Category' } meta: $ref: '#/components/schemas/Meta' links: $ref: '#/components/schemas/Links' GetCategoryResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: $ref: '#/components/schemas/Category' GetCollectionsResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: type: array items: { $ref: '#/components/schemas/Collection' } GetCollectionResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: $ref: '#/components/schemas/Collection' GetProductsResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: type: array items: { $ref: '#/components/schemas/Product' } meta: $ref: '#/components/schemas/Meta' links: $ref: '#/components/schemas/Links' GetProductResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: $ref: '#/components/schemas/Product' GetListingsResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: type: array items: { $ref: '#/components/schemas/Listing' } meta: $ref: '#/components/schemas/Meta' links: $ref: '#/components/schemas/Links' GetListingResponse: type: object required: - status_code - status - data properties: status_code: type: integer description: HTTP Response Status Code example: 200 status: type: string description: HTTP Response Status example: OK data: $ref: '#/components/schemas/Listing' parameters: cursor: name: cursor in: query description: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. schema: type: string nullable: true ecosystem_id: name: ecosystem_id in: path required: true schema: type: string external_id: name: external_id in: query description: Filter on external_id schema: type: string id: in: path name: id description: ID of the record you are acting upon. required: true schema: type: string limit: name: limit in: query description: Number of records to return schema: type: integer minimum: 1 maximum: 200 default: 50 responses: GetEcosystemResponse: content: application/json: schema: $ref: '#/components/schemas/GetEcosystemResponse' description: Ecosystems GetCategoriesResponse: content: application/json: schema: $ref: '#/components/schemas/GetCategoriesResponse' description: Categories GetCategoryResponse: content: application/json: schema: $ref: '#/components/schemas/GetCategoryResponse' description: Category GetCollectionsResponse: content: application/json: schema: $ref: '#/components/schemas/GetCollectionsResponse' description: Collections GetCollectionResponse: content: application/json: schema: $ref: '#/components/schemas/GetCollectionResponse' description: Collection GetListingsResponse: content: application/json: schema: $ref: '#/components/schemas/GetListingsResponse' description: Listings GetListingResponse: content: application/json: schema: $ref: '#/components/schemas/GetListingResponse' description: Listing GetProductsResponse: content: application/json: schema: $ref: '#/components/schemas/GetProductsResponse' description: Products GetProductResponse: content: application/json: schema: $ref: '#/components/schemas/GetProductResponse' description: Product paths: /ecosystems/{ecosystem_id}: get: tags: - Ecosystem operationId: ecosystemsOne summary: Get ecosystem description: Get ecosystem parameters: - $ref: '#/components/parameters/ecosystem_id' responses: '200': $ref: '#/components/responses/GetEcosystemResponse' /ecosystems/{ecosystem_id}/listings: get: tags: - Listing operationId: listingsAll summary: List listings description: List listings parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/external_id' responses: '200': $ref: '#/components/responses/GetListingsResponse' /ecosystems/{ecosystem_id}/listings/{id}: get: tags: - Listing operationId: listingsOne summary: Get listing description: Get listing parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/id' responses: '200': $ref: '#/components/responses/GetListingResponse' /ecosystems/{ecosystem_id}/categories: get: tags: - Category operationId: categoriesAll summary: List categories description: List categories parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/GetCategoriesResponse' /ecosystems/{ecosystem_id}/categories/{id}: get: tags: - Category operationId: categoriesOne summary: Get category description: Get category parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/id' responses: '200': $ref: '#/components/responses/GetCategoryResponse' /ecosystems/{ecosystem_id}/categories/{id}/listings: get: tags: - Category operationId: categoryListingsAll summary: List category listings description: List category listings parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/GetListingsResponse' /ecosystems/{ecosystem_id}/collections: get: tags: - Collection operationId: collectionsAll summary: List collections description: List collections parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/GetCollectionsResponse' /ecosystems/{ecosystem_id}/collections/{id}: get: tags: - Collection operationId: collectionsOne summary: Get collection description: Get collection parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/id' responses: '200': $ref: '#/components/responses/GetCollectionResponse' /ecosystems/{ecosystem_id}/collections/{id}/listings: get: tags: - Collection operationId: collectionListingsAll summary: List collection listings description: List collection listings parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/GetListingsResponse' /ecosystems/{ecosystem_id}/products: get: tags: - Product operationId: productsAll summary: List products description: List products parameters: - $ref: '#/components/parameters/ecosystem_id' responses: '200': $ref: '#/components/responses/GetProductsResponse' /ecosystems/{ecosystem_id}/products/{id}: get: tags: - Product operationId: productsOne summary: Get product description: Get product parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/id' responses: '200': $ref: '#/components/responses/GetProductResponse' /ecosystems/{ecosystem_id}/products/{id}/listings: get: tags: - Product operationId: productListingsAll summary: List product listings description: List product listings parameters: - $ref: '#/components/parameters/ecosystem_id' - $ref: '#/components/parameters/id' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/GetListingsResponse'