{ "consumes": [ "application/json" ], "produces": [ "application/json" ], "swagger": "2.0", "info": { "description": "Hubspot連携アプリケーションAPI仕様", "title": "Hubspot連携アプリケーション", "version": "1.0.0" }, "paths": { "/crm/deal_stages": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "fetch_hubspot" ], "summary": "Get value from Hubspot dealstages Object", "operationId": "getDealStagesOfHubspot", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/hubspot_api_name" } } } } } }, "/crm/hs_lead_statuses": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "fetch_hubspot" ], "summary": "Get value from Hubspot hs_lead_status Object", "operationId": "getHsLeadStatusOfHubspot", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/hubspot_api_name" } } } } } }, "/crm/users": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "fetch_hubspot" ], "summary": "Show list hubspot users API", "operationId": "getHubspotUsers", "parameters": [ { "type": "string", "name": "keyword", "in": "query" }, { "type": "array", "items": { "type": "string" }, "name": "hubspotIds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/hubspotUser" } } } } } }, "/engagement_sync_settings": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "engagement_sync_settings" ], "summary": "Get EngagementSyncSetting data beetwen Playbook \u003c-\u003e Hubspot", "operationId": "getEngagementSyncSettingOfHubspot", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/engagement_sync_setting" } } } } }, "put": { "security": [ { "accessToken": [] } ], "tags": [ "engagement_sync_settings" ], "summary": "Create/update EngagementSyncSetting data beetwen Playbook \u003c-\u003e Hubspot", "operationId": "saveEngagementSyncSettingOfHubspot", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "type": "array", "items": { "$ref": "#/definitions/engagement_sync_setting" } } } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/engagement_sync_setting" } } } } } }, "/engagement_sync_settings/{engagement_sync_setting_id}/": { "delete": { "security": [ { "accessToken": [] } ], "tags": [ "engagement_sync_settings" ], "summary": "Delete Engagement sync setting", "operationId": "deleteEngagementSyncSettingOfHubspot", "responses": { "200": { "description": "OK" } } }, "parameters": [ { "type": "string", "format": "uuid", "name": "engagement_sync_setting_id", "in": "path", "required": true } ] }, "/healthcheck": { "get": { "tags": [ "utils" ], "summary": "ヘルスチェック", "operationId": "healthCheck", "responses": { "200": { "description": "OK" } } } }, "/mappings": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "mappings" ], "summary": "Playbook \u003c-\u003e Hubspot の ID の対応関係を取得する", "operationId": "getSyncIDMapOfHubspot", "parameters": [ { "type": "string", "format": "uuid", "name": "sync_setting_id", "in": "query" }, { "type": "string", "format": "uuid", "name": "mmp_id", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/sync_id_maps" } } } }, "put": { "security": [ { "accessToken": [] } ], "tags": [ "mappings" ], "summary": "Playbook \u003c-\u003e Hubspot の ID の対応関係を作成・更新する", "operationId": "saveSyncIDMapOfHubspot", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "type": "object", "properties": { "id_maps": { "type": "array", "items": { "type": "object", "properties": { "hubspot_id": { "$ref": "#/definitions/hubspot_id" }, "mmp_id": { "$ref": "#/definitions/mmp_id" } } } }, "sync_setting_id": { "$ref": "#/definitions/sync_setting_id" } } } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/sync_id_maps" } } } } }, "/mappings/{mapping_id}/": { "delete": { "security": [ { "accessToken": [] } ], "description": "Delete mapping by id of sync_id_mappings table", "tags": [ "mappings" ], "summary": "Delete mapping", "operationId": "deleteSyncIDMapOfHubspot", "parameters": [ { "$ref": "#/parameters/mapping_id" } ], "responses": { "200": { "description": "OK" } } } }, "/oauth2/authorize/": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "oauth2" ], "summary": "Hubspot認証・認可", "operationId": "startHubspotAuth", "parameters": [ { "type": "string", "format": "uri", "description": "リダイレクトURI", "name": "redirect_uri", "in": "query" } ], "responses": { "200": { "description": "JSONリクエストの場合のみ、リダイレクトせずにリダイレクト先URLを返す", "schema": { "$ref": "#/definitions/redirect_url" } }, "302": { "description": "Found", "headers": { "Location": { "type": "string" } } } } }, "delete": { "security": [ { "accessToken": [] } ], "tags": [ "oauth2" ], "summary": "Unlink service", "operationId": "deleteHubspotAuth", "responses": { "200": { "description": "OK" } } } }, "/oauth2/callback/": { "get": { "description": "認可コールバックのエンドポイント", "tags": [ "oauth2" ], "summary": "Hubspot認可コールバック", "operationId": "callbackHubspotAuth", "parameters": [ { "type": "string", "name": "code", "in": "query" }, { "type": "string", "name": "state", "in": "query" } ], "responses": { "201": { "description": "OK" }, "302": { "description": "Found", "headers": { "Location": { "type": "string" } } } } } }, "/oauth2/results": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "oauth2" ], "summary": "認証結果一覧", "operationId": "listOauthResults", "responses": { "200": { "description": "OK", "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/oauthResult" } } } } } } } }, "/settings": { "get": { "security": [ { "accessToken": [] } ], "tags": [ "settings" ], "summary": "Hubspot読み込み設定の取得", "operationId": "getSyncSettingOfHubspot", "parameters": [ { "type": "string", "name": "mmpObject", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/sync_settings" } } } }, "post": { "security": [ { "accessToken": [] } ], "tags": [ "settings" ], "summary": "Playbook \u003c-\u003e Hubspot の対応関係設定追加", "operationId": "createSyncSettingOfHubspot", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "type": "object", "properties": { "auto_sync": { "type": "boolean" }, "hubspot_object_name": { "$ref": "#/definitions/hubspot_object_name" }, "mmp_table_name": { "$ref": "#/definitions/mmp_table_name" }, "sync_field_map": { "$ref": "#/definitions/sync_field_map" }, "sync_order": { "type": "integer" } } } } ], "responses": { "201": { "description": "OK" } } } }, "/settings/{sync_setting_id}": { "patch": { "security": [ { "accessToken": [] } ], "tags": [ "settings" ], "summary": "Playbook \u003c-\u003e HubSpot の対応関係設定更新", "operationId": "updateSyncFieldMapOfHubspot", "parameters": [ { "name": "body", "in": "body", "schema": { "type": "object", "properties": { "hubspot_object_name": { "$ref": "#/definitions/hubspot_object_name" }, "mmp_table_name": { "$ref": "#/definitions/mmp_table_name" }, "sync_field_map": { "$ref": "#/definitions/sync_field_map" }, "write_sync_patterns": { "type": "array", "items": { "$ref": "#/definitions/write_sync_pattern" } } } } } ], "responses": { "201": { "description": "OK" } } }, "parameters": [ { "$ref": "#/parameters/sync_setting_id" } ] }, "/sync/read": { "post": { "security": [ { "accessToken": [] }, { "apiKey": [] } ], "tags": [ "sync_hubspot" ], "summary": "Hubspotからデータを読み込み Playbook にデータを反映する", "operationId": "readSyncWithHubspot", "parameters": [ { "name": "body", "in": "body", "schema": { "type": "object", "properties": { "mode": { "type": "string" }, "teamId": { "type": "string" } } } } ], "responses": { "201": { "description": "OK" } } } }, "/sync/syncable": { "get": { "security": [ { "accessToken": [] }, { "apiKey": [] } ], "tags": [ "sync_hubspot" ], "summary": "同期状態", "operationId": "getSyncable", "parameters": [ { "type": "string", "name": "team_id", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/syncable" } } } } }, "put": { "security": [ { "apiKey": [] }, { "accessToken": [] } ], "tags": [ "sync_hubspot" ], "summary": "同期開始・ストップ", "operationId": "toggleSyncable", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "type": "object", "properties": { "syncable": { "type": "boolean" }, "team_id": { "type": "string" } } } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "properties": { "data": { "$ref": "#/definitions/syncable" } } } } } } } }, "definitions": { "createdAt": { "description": "作成日", "type": "string", "format": "date-time", "example": "2017-07-21T17:32:28Z" }, "engagement_sync_setting": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "phase_sync_id_map": { "type": "object", "properties": { "hubspot_id": { "type": "string" }, "id": { "type": "string", "format": "uuid" }, "mmp_id": { "type": "string", "enum": [ "nurturing", "qualification", "closing", "onboarding", "adoption", "expansion", "recycling", "end" ] }, "sync_setting": { "type": "object", "properties": { "hubspot_object_name": { "type": "string", "enum": [ "dealstages", "hs_lead_status" ] }, "id": { "type": "string", "format": "uuid" }, "mmp_table_name": { "type": "string", "enum": [ "playbook_phases", "engagement_statuses" ] } } } } }, "progress": { "type": "number", "maximum": 100 }, "sync_setting": { "type": "object", "properties": { "hubspot_object_name": { "type": "string", "enum": [ "deals", "contacts" ] }, "id": { "type": "string", "format": "uuid" }, "mmp_table_name": { "type": "string", "enum": [ "engagements" ] } } } } }, "hubspotUser": { "type": "object", "properties": { "email": { "type": "string" }, "first_name": { "type": "string" }, "id": { "type": "string" }, "last_name": { "type": "string" }, "mmp_user_id": { "type": "string" }, "name": { "type": "string" }, "sync_map_id": { "type": "string" } } }, "hubspot_api_name": { "type": "object", "properties": { "api_name": { "type": "string" }, "description": { "type": "string" } } }, "hubspot_id": { "type": "string" }, "hubspot_object_name": { "type": "string" }, "mmp_id": { "type": "string", "format": "uuid" }, "mmp_table_name": { "type": "string" }, "oauthResult": { "type": "object", "properties": { "createdAt": { "$ref": "#/definitions/createdAt" }, "serviceType": { "description": "認証サービス", "type": "string", "enum": [ "HUBSPOT" ] } } }, "redirect_url": { "type": "string" }, "services": { "type": "string", "enum": [ "HUBSPOT" ] }, "sync_field_map": { "type": "string" }, "sync_id_map": { "type": "object", "properties": { "hubspot_id": { "$ref": "#/definitions/hubspot_id" }, "id": { "type": "string", "format": "uuid" }, "mmp_id": { "$ref": "#/definitions/mmp_id" }, "sync_setting_id": { "$ref": "#/definitions/sync_setting_id" } } }, "sync_id_maps": { "type": "array", "items": { "$ref": "#/definitions/sync_id_map" } }, "sync_setting": { "type": "object", "properties": { "auto_sync": { "type": "boolean" }, "hubspot_object_name": { "$ref": "#/definitions/hubspot_object_name" }, "id": { "type": "string", "format": "uuid" }, "mmp_table_name": { "$ref": "#/definitions/mmp_table_name" }, "sync_field_map": { "$ref": "#/definitions/sync_field_map" }, "sync_order": { "type": "integer" }, "team_id": { "type": "string", "format": "uuid" }, "write_sync_patterns": { "type": "array", "items": { "$ref": "#/definitions/write_sync_pattern" } } } }, "sync_setting_id": { "type": "string", "format": "uuid" }, "sync_settings": { "type": "array", "items": { "$ref": "#/definitions/sync_setting" } }, "syncable": { "type": "object", "properties": { "syncable": { "type": "boolean", "x-omitempty": false }, "teamId": { "type": "string", "format": "uuid" } } }, "write_sync_pattern": { "type": "string", "enum": [ "ARCHIVE", "SIMPLE_WRITE" ] } }, "parameters": { "mapping_id": { "type": "string", "format": "uuid", "name": "mapping_id", "in": "path", "required": true }, "sync_setting_id": { "type": "string", "format": "uuid", "name": "sync_setting_id", "in": "path", "required": true } }, "securityDefinitions": { "accessToken": { "type": "apiKey", "name": "x-access-token", "in": "header" }, "apiKey": { "type": "apiKey", "name": "x-api-key", "in": "header" } } }