line-stamp-api-proxy / docs /LINE_API_SPEC.md
daydreamer-json's picture
Hello
518bc25 verified
|
raw
history blame
5.18 kB

LINE Store Web API

Base URL: https://store.line.me

Search product

GET /api/search/:category

Request Headers

  • Accept-Language: ISO country code
    • Used to determine the language of search results

Path Parameters

  • category: 'sticker' | 'emoji' | 'theme' | 'family'
    • 'sticker'='スタンプ', 'emoji'='絵文字', 'theme'='着せ替え', 'family'='その他'

Query Parameters

  • query: string
  • category: 'sticker' | 'emoji' | 'theme' | 'family'
    • Must match the path parameters exactly
  • type: 'ALL' | 'OFFICIAL' | 'CREATORS' | 'SUBSCRIPTION'
    • 'ALL'='すべて', 'OFFICIAL'='公式', 'CREATORS'='クリエイターズ', 'SUBSCRIPTION'='LINE スタンプ プレミアム'
  • offset: number
  • limit: number

LINE Product CDN Spec

Base URL: https://stickershop.line-scdn.net

Stickers

Path Parameters

  • productId: number
    • Sticker product ID (integer)

Metadata JSON

GET /stickershop/v1/product/:productId/:deviceType/productInfo.meta

Path Parameters

  • deviceType: 'ios' | 'android' | 'LINEStorePC'
const stickerResourceTypes = ['STATIC', 'ANIMATION', 'SOUND', 'ANIMATION_SOUND'] as const;
type productInfo_meta = {
  packageId: number; // productId
  onSale: boolean;
  validDays: number;
  title: { [lang: string]: string }; // Example: {ja: 'タイトル', en: 'Title'}
  author: { [lang: string]: string }; // Example: {ja: '名前', en: 'Author'}
  price: {
    country: string;
    currency: string;
    symbol: string;
    price: number;
  }[];
  stickers: {
    id: number; // stickerId
    width: number; // image width
    height: number; // image height
  }[];
  hasAnimation: boolean;
  hasSound: boolean;
  stickerResourceType: (typeof stickerResourceTypes)[number];
};

Product packed zip

GET /stickershop/v1/product/:productId/:deviceType/:file

Path Parameters

Independent sticker

GET /stickershop/v1/sticker/:stickerId/:deviceType/:file

Path Parameters

Product thumbnail

GET /stickershop/v1/product/:productId/LINEStorePC/main.png

Independent sticker sound

GET /stickershop/v1/sticker/:stickerId/:deviceType/sticker_sound.m4a

Path Parameters

  • stickerId: number
  • deviceType: 'ios' | 'android' | 'LINEStorePC'

Product thumbnail sound

GET /stickershop/v1/product/:productId/:deviceType/main_sound.m4a

Path Parameters

  • deviceType: 'ios' | 'android' | 'LINEStorePC'

Sticons (emoji)

Path Parameters

  • productId: string
    • Sticons product ID (integer) 96 bit hex (deliver func is unknown)

Metadata JSON

GET /sticonshop/v1/sticon/:productId/:deviceType/meta.json

Path Parameters

  • deviceType: 'iPhone' | 'android'
type meta_json = {
  productId: string;
  altTexts: { [iconIndex: string]: string };
  orders: string[]; // array of iconIndex
  sticonResourceType?: 'STATIC' | 'ANIMATION'; // STATIC if key does not exist
};

Product packed zip

GET /sticonshop/v1/sticon/:productId/:deviceType/:file

Path Parameters

  • deviceType: 'iPhone' | 'android'
  • file: 'package_animation.zip' | 'package.zip'
    • 'package_animation.zip' = APNG
    • 'package.zip' = PNG

Independent sticon

GET /sticonshop/v1/sticon/:productId/:deviceType/:file

Path Parameters

  • deviceType: 'iPhone' | 'android'
  • file: ${iconIndex}_animation.png | ${iconIndex}.png
    • iconIndex: 3-digit icon index string (001-999)
    • ${iconIndex}_animation.png = APNG
    • ${iconIndex}.png = PNG

Product thumbnail

GET /sticonshop/v1/product/:productId/iPhone/main.png


Themes

?


Family

?


Product packed zip structure

Stickers

  • stickerpack@2x.zip | stickerpack.zip
    • productInfo.meta (JSON)
    • ${stickerId}@2x.png | ${stickerId}.png (PNG STATIC)
    • ${stickerId}_key@2x.png | ${stickerId}_key.png (PNG STATIC low quality)
    • tab_on@2x.png | tab_on.png (small thumbnail)
    • tab_off@2x.png | tab_off.png (small thumbnail grayscale)
    • sound
      • ${stickerId}.m4a (M4A SOUND)
    • animation | animation@2x
      • ${stickerId}@2x.png | ${stickerId}.png (APNG ANIMATION)
  • stickers@2x.zip | stickers.zip
    • productInfo.meta
    • ${stickerId}@2x.png | ${stickerId}.png (PNG STATIC)
    • ${stickerId}_key@2x.png | ${stickerId}_key.png (PNG STATIC low quality)
    • tab_on@2x.png | tab_on.png (small thumbnail)
    • tab_off@2x.png | tab_off.png (small thumbnail grayscale)

sound and animation folder may not exist depending on the resource type. (example: STATIC)

Sticons (emoji)

  • package_animation.zip
    • meta.json
    • ${iconIndex}_animation.png (APNG)
    • ${iconIndex}_key_animation.png (APNG)
  • package.zip
    • meta.json
    • ${iconIndex}.png (PNG)
    • ${iconIndex}_key.png (PNG)