メインコンテンツへスキップ
POST
/
api
/
v1
/
organizations
/
{organizationId}
/
devices
/
search
Search devices for an organization
curl --request POST \
  --url https://api.itmc.i.moneyforward.com/api/v1/organizations/{organizationId}/devices/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "peopleId": 5034567,
  "type": "pc",
  "groupId": 42,
  "employeeStatus": "active",
  "searchTerm": "foo",
  "searchFields": [
    "memo",
    "people.primaryEmail",
    "people.displayName",
    "preset.asset_number",
    "preset.<unique field name>",
    "custom.<unique field name>"
  ],
  "filters": {}
}
'
import requests

url = "https://api.itmc.i.moneyforward.com/api/v1/organizations/{organizationId}/devices/search"

payload = {
"peopleId": 5034567,
"type": "pc",
"groupId": 42,
"employeeStatus": "active",
"searchTerm": "foo",
"searchFields": ["memo", "people.primaryEmail", "people.displayName", "preset.asset_number", "preset.<unique field name>", "custom.<unique field name>"],
"filters": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
peopleId: 5034567,
type: 'pc',
groupId: 42,
employeeStatus: 'active',
searchTerm: 'foo',
searchFields: [
'memo',
'people.primaryEmail',
'people.displayName',
'preset.asset_number',
'preset.<unique field name>',
'custom.<unique field name>'
],
filters: {}
})
};

fetch('https://api.itmc.i.moneyforward.com/api/v1/organizations/{organizationId}/devices/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.itmc.i.moneyforward.com/api/v1/organizations/{organizationId}/devices/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'peopleId' => 5034567,
'type' => 'pc',
'groupId' => 42,
'employeeStatus' => 'active',
'searchTerm' => 'foo',
'searchFields' => [
'memo',
'people.primaryEmail',
'people.displayName',
'preset.asset_number',
'preset.<unique field name>',
'custom.<unique field name>'
],
'filters' => [

]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.itmc.i.moneyforward.com/api/v1/organizations/{organizationId}/devices/search"

payload := strings.NewReader("{\n \"peopleId\": 5034567,\n \"type\": \"pc\",\n \"groupId\": 42,\n \"employeeStatus\": \"active\",\n \"searchTerm\": \"foo\",\n \"searchFields\": [\n \"memo\",\n \"people.primaryEmail\",\n \"people.displayName\",\n \"preset.asset_number\",\n \"preset.<unique field name>\",\n \"custom.<unique field name>\"\n ],\n \"filters\": {}\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.itmc.i.moneyforward.com/api/v1/organizations/{organizationId}/devices/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"peopleId\": 5034567,\n \"type\": \"pc\",\n \"groupId\": 42,\n \"employeeStatus\": \"active\",\n \"searchTerm\": \"foo\",\n \"searchFields\": [\n \"memo\",\n \"people.primaryEmail\",\n \"people.displayName\",\n \"preset.asset_number\",\n \"preset.<unique field name>\",\n \"custom.<unique field name>\"\n ],\n \"filters\": {}\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.itmc.i.moneyforward.com/api/v1/organizations/{organizationId}/devices/search")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"peopleId\": 5034567,\n \"type\": \"pc\",\n \"groupId\": 42,\n \"employeeStatus\": \"active\",\n \"searchTerm\": \"foo\",\n \"searchFields\": [\n \"memo\",\n \"people.primaryEmail\",\n \"people.displayName\",\n \"preset.asset_number\",\n \"preset.<unique field name>\",\n \"custom.<unique field name>\"\n ],\n \"filters\": {}\n}"

response = http.request(request)
puts response.read_body
{
  "meta": {
    "nextCursor": "F3UdkoSbpBNrjwP93AX2HQ",
    "totalItems": 1
  },
  "items": [
    {
      "id": 123,
      "memo": "foo bar",
      "people": {
        "id": 1,
        "identityId": "I3N5HB4B3G",
        "primaryEmail": "foo@gmail.com",
        "displayName": "Yamaha Honda",
        "avatar": "avatar_url",
        "username": "foo",
        "type": "employee",
        "status": "suspended",
        "managementType": "managed",
        "employeeType": "full_time_employee",
        "employeeStatus": "active",
        "suspendedAt": "2021-07-13T19:15:40.000Z",
        "createdAt": "2021-07-13T19:15:40.000Z",
        "accounts": [
          {
            "id": "1#foo",
            "serviceId": 42,
            "serviceUniqueName": "github",
            "serviceName": "GitHub",
            "workspaceName": "mfi",
            "accountKey": "foo@mfi.com",
            "serviceIsCustom": false
          }
        ],
        "mergedPeople": [
          {
            "id": 1,
            "displayName": "Ron Lee",
            "username": "ron.lee",
            "primaryEmail": null
          }
        ]
      },
      "originalPeopleId": 456,
      "fields": {
        "preset.subtype": "other",
        "preset.asset_number": "unique value",
        "preset.model_name": "cool gadget",
        "custom.custom_text_field": "foo",
        "custom.custom_date_field": "2024-01-01",
        "custom.custom_number_field": 123,
        "custom.custom_dropdown_field": "Option Displayed Value A"
      },
      "mdmMetadata": {
        "workspaceId": 123,
        "serviceUniqueName": "jamf",
        "url": "https://example.com"
      },
      "relatedIdentities": {
        "identityHolder": {
          "id": "<string>",
          "displayName": "Display Name",
          "avatar": "<string>",
          "primaryEmail": "primay@email.com"
        },
        "managerHolder": {
          "id": "<string>",
          "displayName": "Display Name",
          "avatar": "<string>",
          "primaryEmail": "primay@email.com"
        }
      },
      "customFieldsWithMetadata": [
        {
          "id": 1,
          "attributeCode": "custom_text_field",
          "attributeName": "Text field",
          "value": "foo"
        },
        {
          "id": 2,
          "attributeCode": "custom_date_field",
          "attributeName": "Date field",
          "value": "2024-01-01"
        },
        {
          "id": 3,
          "attributeCode": "custom_number_field",
          "attributeName": "Number field",
          "value": 123
        },
        {
          "id": 4,
          "attributeCode": "custom_dropdown_field",
          "attributeName": "Dropdown field",
          "value": "Option Displayed Value A"
        }
      ]
    }
  ]
}

承認

Authorization
string
header
必須

For authenticated requests, set the Authorization: Bearer your_api_key parameter in the header.
You can create and manage your API Keys by visiting the API Keys tab in the Settings page of your organization in Admina

パスパラメータ

organizationId
number
必須

クエリパラメータ

limit
number

Maximum number of items to return per page

:

50

cursor
string

Base64-encoded cursor for pagination. Use the cursor from the previous response to get the next page.

sortBy
string

The sortBy value is a string that contains two parts separated by a dot. The first part is either preset or custom and the second part is the unique field name. Additionally the following fields can be used for sorting: people.displayName.

:

"<preset | custom>.<unique field name>"

sortOrder
enum<string>

Sort order for the results (asc or desc)

利用可能なオプション:
DESC,
ASC
expands
enum<string>[]

Expand other datasets when fetching devices. Accepts multiple options.

利用可能なオプション:
relatedIdentity,
customFieldsMetadata

ボディ

application/json
peopleId
number

Filter devices by the people ID assigned to them

:

5034567

type
enum<string>

Filter devices by device type

利用可能なオプション:
pc,
phone,
other
:

"pc"

groupId
number

Filter devices to those matching the conditions of the given Device Group (restricts results to the group's member devices).

:

42

employeeStatus
enum<string>

Filter devices by the employment status of the assigned person

利用可能なオプション:
active,
on_leave,
draft,
preactive,
retired,
untracked
:

"active"

searchTerm
string

Search term to filter devices. Searches across fields specified in searchFields

:

"foo"

searchFields
string[]

Array of field names to search within when using searchTerm. Supports memo, people fields, preset fields, and custom fields

:
[
"memo",
"people.primaryEmail",
"people.displayName",
"preset.asset_number",
"preset.<unique field name>",
"custom.<unique field name>"
]
filters
object

The object key is the field name, and the value is the filter options. Keys look like preset.<unique field name>. There are certain extra virtual fields, such as $age, please check implementation or ask a backend engineer.

レスポンス

meta
object
必須
items
object[]
必須
read-only
最終更新日 2026年7月14日