previewPageEdit
編集の dry-run
何も書き込まずに `previewId` を返す。 有効期限は数分で、`expireAt` だけが ISO 8601 の文字列で返る。 **ヘッダーの資格情報が必須**である。 PAT でも Service Account Access Key でも通るが、cookie では通らない。 | リクエスト | 結果 | | --- | --- | | cookie のみ、`Origin` なし | 403 `CrossOriginWriteNotAllowedError` | | cookie + `Origin: https://scrapbox.io` | 403 `PersonalAccessTokenRequiredError` | | PAT(`Origin` の有無を問わない) | 200 | `CrossOriginWriteNotAllowedError` は cookie 認証に対する CSRF ガードであり、 PAT 経路では `Origin` を見ていない。そのためこのクライアントは `Origin` を送らない。 `changes` は配列順に適用され、anchor は適用時点で存在していなければならない。 新規行の `lines.id` は **クライアントが生成する** (`scrapbox.edits.new_line_id()` が `secrets.token_hex(12)`)。 `pagePreview` は v2 ページ取得と同じ形の全体が返る。 新規作成 (`pageId` を送らない) では次のようになる。 - **1 行目の `_insert` のテキストがページタイトルになる。** `changes` が空だと `first change must be an _insert to create a new page` で拒否される - `persistent` は false、`commitId` は key ごと不在。 ただし `linesCount` と `charsCount` は入る(実体の無いページの取得とは違う) - `pagePreview.id` にはクライアントが送った 1 行目の line id が入る。 submit 後の実 page id も同じ値になる - 同名ページがあると、**この時点で既に**タイトルに `_2` が付き、 1 行目のテキストも書き換わっている
/pages/v2/{projectName}/page-edit-for-ai/preview
Usage and SDK Samples
curl -X POST \
-H "x-service-account-access-key: [[apiKey]]" \
-H "x-personal-access-token: [[apiKey]]" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
"https://scrapbox.io/api/pages/v2/{projectName}/page-edit-for-ai/preview" \
-d '{
"pageId" : "pageId",
"changes" : [ {
"_insert" : "_insert",
"lines" : {
"id" : "id",
"text" : "text",
"origText" : "origText"
}
}, {
"_insert" : "_insert",
"lines" : {
"id" : "id",
"text" : "text",
"origText" : "origText"
}
} ]
}'
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
import org.openapitools.client.api.EditApi;
import java.io.File;
import java.util.*;
public class EditApiExample {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: ServiceAccount
ApiKeyAuth ServiceAccount = (ApiKeyAuth) defaultClient.getAuthentication("ServiceAccount");
ServiceAccount.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ServiceAccount.setApiKeyPrefix("Token");
// Configure API key authorization: PersonalAccessToken
ApiKeyAuth PersonalAccessToken = (ApiKeyAuth) defaultClient.getAuthentication("PersonalAccessToken");
PersonalAccessToken.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//PersonalAccessToken.setApiKeyPrefix("Token");
// Create an instance of the API class
EditApi apiInstance = new EditApi();
String projectName = help-jp; // String | プロジェクト名(URL に使われる `name`)
EditPreviewRequest editPreviewRequest = {"pageId":"6a78192b3a6ddc39bdf42b47","changes":[{"_update":"6a78192b3a6ddc39bdf42b47","lines":{"text":"hey"}}]}; // EditPreviewRequest |
try {
EditPreviewResponse result = apiInstance.previewPageEdit(projectName, editPreviewRequest);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling EditApi#previewPageEdit");
e.printStackTrace();
}
}
}
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String projectName = new String(); // String | プロジェクト名(URL に使われる `name`)
final EditPreviewRequest editPreviewRequest = new EditPreviewRequest(); // EditPreviewRequest |
try {
final result = await api_instance.previewPageEdit(projectName, editPreviewRequest);
print(result);
} catch (e) {
print('Exception when calling DefaultApi->previewPageEdit: $e\n');
}
import org.openapitools.client.api.EditApi;
public class EditApiExample {
public static void main(String[] args) {
EditApi apiInstance = new EditApi();
String projectName = help-jp; // String | プロジェクト名(URL に使われる `name`)
EditPreviewRequest editPreviewRequest = {"pageId":"6a78192b3a6ddc39bdf42b47","changes":[{"_update":"6a78192b3a6ddc39bdf42b47","lines":{"text":"hey"}}]}; // EditPreviewRequest |
try {
EditPreviewResponse result = apiInstance.previewPageEdit(projectName, editPreviewRequest);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling EditApi#previewPageEdit");
e.printStackTrace();
}
}
}
Configuration *apiConfig = [Configuration sharedConfig];
// Configure API key authorization: (authentication scheme: ServiceAccount)
[apiConfig setApiKey:@"YOUR_API_KEY" forApiKeyIdentifier:@"x-service-account-access-key"];
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
//[apiConfig setApiKeyPrefix:@"Bearer" forApiKeyIdentifier:@"x-service-account-access-key"];
// Configure API key authorization: (authentication scheme: PersonalAccessToken)
[apiConfig setApiKey:@"YOUR_API_KEY" forApiKeyIdentifier:@"x-personal-access-token"];
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
//[apiConfig setApiKeyPrefix:@"Bearer" forApiKeyIdentifier:@"x-personal-access-token"];
// Create an instance of the API class
EditApi *apiInstance = [[EditApi alloc] init];
String *projectName = help-jp; // プロジェクト名(URL に使われる `name`) (default to null)
EditPreviewRequest *editPreviewRequest = {"pageId":"6a78192b3a6ddc39bdf42b47","changes":[{"_update":"6a78192b3a6ddc39bdf42b47","lines":{"text":"hey"}}]}; //
// 編集の dry-run
[apiInstance previewPageEditWith:projectName
editPreviewRequest:editPreviewRequest
completionHandler: ^(EditPreviewResponse output, NSError* error) {
if (output) {
NSLog(@"%@", output);
}
if (error) {
NSLog(@"Error: %@", error);
}
}];
var CosenseScrapboxHttpApi = require('cosense__scrapbox_http_api');
var defaultClient = CosenseScrapboxHttpApi.ApiClient.instance;
// Configure API key authorization: ServiceAccount
var ServiceAccount = defaultClient.authentications['ServiceAccount'];
ServiceAccount.apiKey = "YOUR API KEY";
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ServiceAccount.apiKeyPrefix['x-service-account-access-key'] = "Token";
// Configure API key authorization: PersonalAccessToken
var PersonalAccessToken = defaultClient.authentications['PersonalAccessToken'];
PersonalAccessToken.apiKey = "YOUR API KEY";
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//PersonalAccessToken.apiKeyPrefix['x-personal-access-token'] = "Token";
// Create an instance of the API class
var api = new CosenseScrapboxHttpApi.EditApi()
var projectName = help-jp; // {String} プロジェクト名(URL に使われる `name`)
var editPreviewRequest = {"pageId":"6a78192b3a6ddc39bdf42b47","changes":[{"_update":"6a78192b3a6ddc39bdf42b47","lines":{"text":"hey"}}]}; // {EditPreviewRequest}
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
console.log('API called successfully. Returned data: ' + data);
}
};
api.previewPageEdit(projectName, editPreviewRequest, callback);
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
using Org.OpenAPITools.Client;
using Org.OpenAPITools.Model;
namespace Example
{
public class previewPageEditExample
{
public void main()
{
// Configure API key authorization: ServiceAccount
Configuration.Default.ApiKey.Add("x-service-account-access-key", "YOUR_API_KEY");
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
// Configuration.Default.ApiKeyPrefix.Add("x-service-account-access-key", "Bearer");
// Configure API key authorization: PersonalAccessToken
Configuration.Default.ApiKey.Add("x-personal-access-token", "YOUR_API_KEY");
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
// Configuration.Default.ApiKeyPrefix.Add("x-personal-access-token", "Bearer");
// Create an instance of the API class
var apiInstance = new EditApi();
var projectName = help-jp; // String | プロジェクト名(URL に使われる `name`) (default to null)
var editPreviewRequest = new EditPreviewRequest(); // EditPreviewRequest |
try {
// 編集の dry-run
EditPreviewResponse result = apiInstance.previewPageEdit(projectName, editPreviewRequest);
Debug.WriteLine(result);
} catch (Exception e) {
Debug.Print("Exception when calling EditApi.previewPageEdit: " + e.Message );
}
}
}
}
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Configure API key authorization: ServiceAccount
OpenAPITools\Client\Configuration::getDefaultConfiguration()->setApiKey('x-service-account-access-key', 'YOUR_API_KEY');
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
// OpenAPITools\Client\Configuration::getDefaultConfiguration()->setApiKeyPrefix('x-service-account-access-key', 'Bearer');
// Configure API key authorization: PersonalAccessToken
OpenAPITools\Client\Configuration::getDefaultConfiguration()->setApiKey('x-personal-access-token', 'YOUR_API_KEY');
// Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
// OpenAPITools\Client\Configuration::getDefaultConfiguration()->setApiKeyPrefix('x-personal-access-token', 'Bearer');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EditApi();
$projectName = help-jp; // String | プロジェクト名(URL に使われる `name`)
$editPreviewRequest = {"pageId":"6a78192b3a6ddc39bdf42b47","changes":[{"_update":"6a78192b3a6ddc39bdf42b47","lines":{"text":"hey"}}]}; // EditPreviewRequest |
try {
$result = $api_instance->previewPageEdit($projectName, $editPreviewRequest);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling EditApi->previewPageEdit: ', $e->getMessage(), PHP_EOL;
}
?>
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
use WWW::OPenAPIClient::EditApi;
# Configure API key authorization: ServiceAccount
$WWW::OPenAPIClient::Configuration::api_key->{'x-service-account-access-key'} = 'YOUR_API_KEY';
# uncomment below to setup prefix (e.g. Bearer) for API key, if needed
#$WWW::OPenAPIClient::Configuration::api_key_prefix->{'x-service-account-access-key'} = "Bearer";
# Configure API key authorization: PersonalAccessToken
$WWW::OPenAPIClient::Configuration::api_key->{'x-personal-access-token'} = 'YOUR_API_KEY';
# uncomment below to setup prefix (e.g. Bearer) for API key, if needed
#$WWW::OPenAPIClient::Configuration::api_key_prefix->{'x-personal-access-token'} = "Bearer";
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EditApi->new();
my $projectName = help-jp; # String | プロジェクト名(URL に使われる `name`)
my $editPreviewRequest = WWW::OPenAPIClient::Object::EditPreviewRequest->new(); # EditPreviewRequest |
eval {
my $result = $api_instance->previewPageEdit(projectName => $projectName, editPreviewRequest => $editPreviewRequest);
print Dumper($result);
};
if ($@) {
warn "Exception when calling EditApi->previewPageEdit: $@\n";
}
from __future__ import print_statement
import time
import openapi_client
from openapi_client.rest import ApiException
from pprint import pprint
# Configure API key authorization: ServiceAccount
openapi_client.configuration.api_key['x-service-account-access-key'] = 'YOUR_API_KEY'
# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
# openapi_client.configuration.api_key_prefix['x-service-account-access-key'] = 'Bearer'
# Configure API key authorization: PersonalAccessToken
openapi_client.configuration.api_key['x-personal-access-token'] = 'YOUR_API_KEY'
# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
# openapi_client.configuration.api_key_prefix['x-personal-access-token'] = 'Bearer'
# Create an instance of the API class
api_instance = openapi_client.EditApi()
projectName = help-jp # String | プロジェクト名(URL に使われる `name`) (default to null)
editPreviewRequest = {"pageId":"6a78192b3a6ddc39bdf42b47","changes":[{"_update":"6a78192b3a6ddc39bdf42b47","lines":{"text":"hey"}}]} # EditPreviewRequest |
try:
# 編集の dry-run
api_response = api_instance.preview_page_edit(projectName, editPreviewRequest)
pprint(api_response)
except ApiException as e:
print("Exception when calling EditApi->previewPageEdit: %s\n" % e)
extern crate EditApi;
pub fn main() {
let projectName = help-jp; // String
let editPreviewRequest = {"pageId":"6a78192b3a6ddc39bdf42b47","changes":[{"_update":"6a78192b3a6ddc39bdf42b47","lines":{"text":"hey"}}]}; // EditPreviewRequest
let mut context = EditApi::Context::default();
let result = client.previewPageEdit(projectName, editPreviewRequest, &context).wait();
println!("{:?}", result);
}
Scopes
Parameters
| Name | Description |
|---|---|
| projectName* |
String
プロジェクト名(URL に使われる `name`)
Required
|
| Name | Description |
|---|---|
| editPreviewRequest * |
Responses